杂谈——如何将字符串以语音形式输出
2011-11-09 09:36
288 查看
本文转自:/article/5437559.html
最近在网上看到关于如何将字符串以语音形式输出的解决办法,所以自己也在空余时间小试了一下。目前看效果还可以但是在支持中文上需要单独安装一个应用程序。具体效果类似金山词霸中的语音朗读功能。
首先、我介绍一下我用的什么工具。(下载相关工具)
主要使用微软提供的
DotNetSpeech.dll(抽取后的)
微软TTS5.1语音引擎(中文).msi
这2个东东已经在下载压缩包中存在,下载后安装“微软TTS5.1语音引擎(中文).msi”支持中文发音,有的网友说安装后需要配置一下,具体步骤为:
打开"控制面板",打开"语音"配置项目,在"文字-语音转换"的"语音选择"组合框中选择"Microsoft Simplified Chinese",这样才可以读出中文。如果要读英文,要选择"Microsoft Sam"。
我的电脑安装后没有进行以上设置就可以中文发音,如果哪位朋友安装后不能正常发音的可以参照上面的描述试试。
下面我们来讲讲如何使用DotNetSpeech.dll来开发字符串转语音输出的。
首先我使用的是VS2010,新建一个解决方案,然后在解决方案中新建一个Window窗体项目,在MainFrom中分别从工具箱中拖放一个文本框及一个按钮,
文本框主要用于输入文本字符串,按钮用于触发字符串转语音事件。
下面我们直接上代码
首先项目中引用DotNetSpeech.dll,
然后加入如下函数代码:
然后在Button的Click事件中调用
然后F5允许项目,在文本框中输入”你好”点击Button如果不出意外就应该听见一位MM的声音了.
这里我试了一下,大家也许注意到了上面代码片段中有一行为
其中item(0)为MM中文发音、item(1)不支持中文的MM发音、item(2)是一个男声发音。
当然这个可以根据自己偏好来选择自由设置。
对于声音我们还可以导出wav文件,具体代码片段如下:
这样我们就可以将声音输出出来了。
其实这个以后在项目中有可能用的到,所以在这将具体实现方式先备注一下。以后有机会再深入研究。
如果有哪位朋友对此有兴趣可以深入研究一下哈!
最近在网上看到关于如何将字符串以语音形式输出的解决办法,所以自己也在空余时间小试了一下。目前看效果还可以但是在支持中文上需要单独安装一个应用程序。具体效果类似金山词霸中的语音朗读功能。
首先、我介绍一下我用的什么工具。(下载相关工具)
主要使用微软提供的
DotNetSpeech.dll(抽取后的)
微软TTS5.1语音引擎(中文).msi
这2个东东已经在下载压缩包中存在,下载后安装“微软TTS5.1语音引擎(中文).msi”支持中文发音,有的网友说安装后需要配置一下,具体步骤为:
打开"控制面板",打开"语音"配置项目,在"文字-语音转换"的"语音选择"组合框中选择"Microsoft Simplified Chinese",这样才可以读出中文。如果要读英文,要选择"Microsoft Sam"。
我的电脑安装后没有进行以上设置就可以中文发音,如果哪位朋友安装后不能正常发音的可以参照上面的描述试试。
下面我们来讲讲如何使用DotNetSpeech.dll来开发字符串转语音输出的。
首先我使用的是VS2010,新建一个解决方案,然后在解决方案中新建一个Window窗体项目,在MainFrom中分别从工具箱中拖放一个文本框及一个按钮,
文本框主要用于输入文本字符串,按钮用于触发字符串转语音事件。
下面我们直接上代码
首先项目中引用DotNetSpeech.dll,
然后加入如下函数代码:
void Speak(string content)
{
try
{
SpeechVoiceSpeakFlags SSF = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice vo = new SpVoice();
vo.Voice = vo.GetVoices(string.Empty, string.Empty).Item(0);
vo.Speak(content, SSF);
}
catch (System.Exception ec)
{
MessageBox.Show(ec.ToString(), "SpeechApp", MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
}
}
然后在Button的Click事件中调用
Speak(text1.text)
然后F5允许项目,在文本框中输入”你好”点击Button如果不出意外就应该听见一位MM的声音了.
这里我试了一下,大家也许注意到了上面代码片段中有一行为
vo.Voice = vo.GetVoices(string.Empty, string.Empty).Item(0);
其中item(0)为MM中文发音、item(1)不支持中文的MM发音、item(2)是一个男声发音。
当然这个可以根据自己偏好来选择自由设置。
对于声音我们还可以导出wav文件,具体代码片段如下:
try
{
DotNetSpeech.SpeechVoiceSpeakFlags SSF = DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync;
DotNetSpeech.SpVoice vo = new SpVoice();
System.Windows.Forms.SaveFileDialog SFD = new System.Windows.Forms.SaveFileDialog();
SFD.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav";
SFD.Title = "Save to a wav file";
SFD.FilterIndex = 2;
SFD.RestoreDirectory = true;
if (SFD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
DotNetSpeech.SpeechStreamFileMode SSFM = DotNetSpeech.SpeechStreamFileMode.SSFMCreateForWrite;
DotNetSpeech.SpFileStream SFS = new DotNetSpeech.SpFileStream();
SFS.Open(SFD.FileName, SSFM, false);
vo.AudioOutputStream = SFS;
vo.Speak(textBox2.Text, SSF);
vo.WaitUntilDone(System.Threading.Timeout.Infinite);
SFS.Close();
}
}
catch (System.Exception ec)
{
MessageBox.Show(ec.ToString(), "SpeechApp", MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
}
这样我们就可以将声音输出出来了。
其实这个以后在项目中有可能用的到,所以在这将具体实现方式先备注一下。以后有机会再深入研究。
如果有哪位朋友对此有兴趣可以深入研究一下哈!
相关文章推荐
- 杂谈——如何将字符串以语音形式输出
- 杂谈——如何将字符串以语音形式输出
- 如何使用QString把不同类型的数据如何转换成字符串形式输出
- 如何输出字符串指针所指的地址
- 如何在字符串形式的IP和整数形式的IP之间转换呢?
- LeetCode425——Add Strings(两个字符串中的数字相加(十进制或二进制),输出字符串形式的结果)
- perl 字符串数组,如何输出带引号的数组元素
- 如何在XSLT中将字符串转换为大写或小写形式
- 给定一个字符串a,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长? 输出需要删除的字符个数。
- JavaScript——将字符串转化成数组,并以列表的形式在文档中输出
- 立此存照(9)[C++]如何输出wchar_t类型的字符串和字符
- 如何输出字符串指针所指的地址
- 如何动态抓取系统时间并以字符串形式保存。
- 【短篇】Python下如何把带有千位分隔符的浮点数字符串形式转化为数字
- 从cin读入一组词并把它们存入一个vector对象中去,如何把所有的词都改为大写形式,输出结果,每个词占一行。
- c中如何输出一个宏定义的字符串?
- 如何展现字段名和值均以字符串形式保存到第三方表的数据集
- 如何把一个字符串按自然数排序输出
- 把数值类型转换成货币字符串的形式输出的细节若干
- 未解——mathematica输出形式,如何展开?