c#怎样把输入的文字转换成语音
发布网友
发布时间:2022-04-21 15:33
我来回答
共4个回答
热心网友
时间:2022-07-10 22:13
利用微软text to speech引擎(TTS),读取文本
(1)添加Microsoft Speech Object Library的项目引用
(2)引入using SpeechLib名称控件
(3)读取文本
SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice voice = new SpVoice();
//默认使用“控制面板”—>“声音”—>“录制”选项卡的“配置”—>“文本到语音转换”—>语言选择中对应项,例如Microsoft Lily或Microsoft Sam
//此处可采用“预听语音”测试,保证操作系统本身正确配置该语音包,尤其是B/S结构往往会被忽略
//否则会抛出异常:“没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))”
voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(0);
voice.Speak(textBox1.Text, flag);
(4)语言包的选择(亲测)
WindowsXP 中默认只安装了Microsoft Sam,而且只能朗读英文,不能读中文,直接略过。(不推荐)
找了一个Microsoft_TTS_51_chs.msi安装了以后多了一个Microsoft Simplified Chinese语音包,但只能读中文,不能读英文单词,将单词拆解为字母读出(全中文可以)
Windows Vista/7中默认安装Microsoft Lili,可以中英文混读,但语音效果较好(推荐),但是XP系统无法安装,Microsoft Anna 只能读英文(不推荐)。
ScanSoft-MeiLing-ChineseMandarinVoice可以在XP下安装,但是多音字识别不好,优点是比较小巧,40M左右。
NeoSpeech Lily,声音的效果比 Microsoft Lili要好。推荐使用,但是比较大500M左右。
热心网友
时间:2022-07-10 22:13
直接用SpeechSynthesizer类,例:
添加引用: System.Speech
引入命名空间:using System.Speech.Synthesis;
SpeechSynthesizer reader = new SpeechSynthesizer();
if (richTextBox1.Text != "")
{
reader.SpeakAsync(richTextBox1.Text);
}
else
{
MessageBox.Show("请在文本中输入将要读取的信息!", "提示", MessageBoxButtons.OK);
}
热心网友
时间:2022-07-10 22:14
http://download.csdn.net/detail/sprain1127/4212873
热心网友
时间:2022-07-10 22:14
可以去一些大的开源软件社区搜索一下有没有相关的软件项目。