C#文本转语音并保存wav和MP3文件
作者:网络转载 发布时间:[ 2014/5/30 14:21:39 ] 推荐标签:C# net
还是把代码贴上来吧,主要代码如下:
privateSpeechSynthesizersynth=null;//语音对象
///<summary>
///返回一个SpeechSynthesizer对象
///</summary>
///<returns></returns>
privateSpeechSynthesizerGetSpeechSynthesizerInstance()
{
if(synth==null)
{
synth=newSpeechSynthesizer();
}
returnsynth;
}
///<summary>
///获得朗读设置对象
///</summary>
///<returns></returns>
privateVoiceClassGetVoiceClass()
{
VoiceClasssetViceClass=newVoiceClass();
setViceClass.VoiceName=cboTokens.Text;
setViceClass.Rate=int.Parse(cboSpeed.Text);
setViceClass.Volume=tbVoice.Value;
setViceClass.VoiceText=txtInput.Text;
returnsetViceClass;
}
///<summary>
///播放
///</summary>
///<paramname="sender"></param>
///<paramname="e"></param>
privatevoidbtnGo_Click(objectsender,EventArgse)
{
if(IsVaild())
{
VoiceClasssetViceClass=GetVoiceClass();//VoiceClass是自己建立的一个类,里面封转了语速音量播放人播放文本
Threadthread=newThread(RingVoice);
thread.Start(setViceClass);
}
}
///<summary>
///开始朗读放在线程中
///</summary>
///<paramname="VoiceObject"></param>
publicvoidRingVoice(objectVoiceObject)
{
try
{
VoiceClassvoiceClass=(VoiceClass)VoiceObject;
synth=GetSpeechSynthesizerInstance();
synth.SelectVoice(voiceClass.VoiceName);
synth.Rate=voiceClass.Rate;
synth.Volume=voiceClass.Volume;
synth.SpeakAsync(voiceClass.VoiceText);
}
catch(Exceptioner)
{
MessageBox.Show(er.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
///<summary>
///保存
///</summary>
///<paramname="sender"></param>
///<paramname="e"></param>
privatevoidbtnSave_Click(objectsender,EventArgse)
{
if(IsVaild())
{
synth=GetSpeechSynthesizerInstance();
VoiceClassvoiceClass=GetVoiceClass();
synth.SelectVoice(voiceClass.VoiceName);
synth.Rate=voiceClass.Rate;
synth.Volume=voiceClass.Volume;
SaveFileDialogsaveFileDialog=newSaveFileDialog();
saveFileDialog.Title="保存文档";
saveFileDialog.Filter="*.wav|*.wav|*.mp3|*.mp3";
saveFileDialog.InitialDirectory=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DialogResultsaveDialog=saveFileDialog.ShowDialog();
try
{
if(saveDialog==System.Windows.Forms.DialogResult.OK)
{
synth.SetOutputToWaveFile(saveFileDialog.FileName);
synth.Speak(voiceClass.VoiceText);
synth.SetOutputToNull();
System.Diagnostics.Process.Start("Explorer.exe",string.Format(@"/select,{0}",saveFileDialog.FileName));//打开wav目录并选中文件
}
}
catch(Exceptioner)
{
MessageBox.Show(er.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
///<summary>
///继续
///</summary>
///<paramname="sender"></param>
///<paramname="e"></param>
privatevoidbtnContinum_Click(objectsender,EventArgse)
{
synth.Resume();
}
///<summary>
///暂停
///</summary>
///<paramname="sender"></param>
///<paramname="e"></param>
privatevoidbtnStop_Click(objectsender,EventArgse)
{
synth.Pause();
}
|
有个问题,不知道是什么原因,要播放的内容:欢迎致电12345客服服务系统,它把12345给我朗读成:1万2千3百4十五。这个问题还在解决中,谁知道麻烦给我留下言,谢谢。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南