最近突发奇想 想玩玩 文字转语音的东东 谷歌了一下 发现微软有一个TTS 的SDK 查了查相关资料 发现 还真不错 然后就开始玩玩Microsoft Speech SDK的 DEMO了
现在网上最新版好像是Microsoft Speech SDK Version 5.1 先下载下来
下载地址是 http://www.52z.com/soft/22068.html
要先安装第一个SDK 然后安装语言包 只有安装了语言包 语言包是用来支持中文翻读的
然后开始我们的C#文字转语音小程序
1、打开VS 新建一个窗体项目
2、添加引用:在COM选项卡里面的Microsoft Speech object library引用
并在代码区添加引用
using SpeechLib;
using System.Threading;//这个引用是用来保存语音文件用的线程类
3、添加一个文本框 两个按钮
4、在一个按钮下输入如下代码
SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice voice = new SpVoice();
voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(3);
//Item(0)单词男声Sam
//Item(1)单词男声Mike
//Item(2)单词女声Mary
//Item(3)中文发音,如果是英文,就依单词字母一个一个发音
voice.Speak(textBox1.Text, flag);
代码解释 :其中最重要的是SPVoice类 他是这个DEMO的核心 ;然后就是Item(3)选项 下面注释已经很清楚了 说明是什么意思。后面还有一个SPEAK方法 不用我说也知道是什么意思吧 !当然关于SpVoice对象还有很多方法 查了一下Microsoft Speech的API 还有pause\ Resume SetVoice\GetVoice SetRate|SetRate SetVolume\GetVolume 这些方法根据他的意思就知道 是关于暂停 继续 设置声音 设置读取速度 声音大小的 更多的对象 方法 请参考他的API
5、在另一个按钮输入如下代码
SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice voice = new SpVoice();
voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(3);
SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite;
SpFileStream SpFileStream = new SpFileStream();
SpFileStream.Open(@"C:\test.wav", SpFileMode, false);
voice.AudioOutputStream = SpFileStream;//设定voice的输出为Stream
voice.Speak(textBox1.Text.Trim(), flag);
voice.WaitUntilDone(Timeout.Infinite);//Using System.Threading;
SpFileStream.Close();
其实这段代码跟前一个代码差不多 只不过是通过流把声音保存为语音文件而已
简单吧 现在就可以好好玩玩你的这个DEMO了 你还可以添加很多功能的 可以做成SDK里面的几个例子一样的程序 !
Ps 感觉微软的这个声音好不柔和 我在网上见到几个 比较好的在线文字转声音系统 不错 分享给大家
http://ecl.iflytek.com/ListenToThis/