.net实现简单语音朗读(TTS)功能

首先,添加DotNetSpeech.dll引用,可以在这里直接下载,也可以参照这篇文章说的,在安装Speech SDK以后,在Common Files\Microsoft Shared\Speech\目录下面找到SAPI.dll,用Tlbimp.exe工具将该dll转换成.net平台下的Assembly---DotNetSpeech.dll。

然后,using DotNetSpeech;

 

朗读功能:

 
  
SpeechVoiceSpeakFlags flags = peechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice sp
= new SpVoice();
sp.Voice
= sp.GetVoices( " name=Microsoft Simplified Chinese " , "" ).Item( 0 );
sp.Rate
= - 3 ;
sp.Speak(txtText.Text, flags);

注:SpeechVoiceSpeakFlags是语音朗读的风格; Voice中是语音类型(语言、男(女)声),有 Microsoft Simplified Chinese,Microsoft Mary(Sam,Mike)等,

也可以这样:voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(0); //0选择默认的语音,
1选择第二个语音;Rate指的是语速。

当然,你也可以在此不写,打开控制面板中的语音设置类型和语速,如图:

 

生成语音文件:

 
  
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter
= " All files (*.*)|*.*|wav files (*.wav)|*.wav " ;
dialog.Title
= " Save to a wave file " ;
dialog.FilterIndex
= 2 ;
dialog.RestoreDirectory
= true ;
if (dialog.ShowDialog() == DialogResult.OK) {
SpeechStreamFileMode spFileMode
= SpeechStreamFileMode.SSFMCreateForWrite;
SpFileStream spFileStream
= new SpFileStream();
spFileStream.Open(dialog.FileName, spFileMode,
false );
voice.AudioOutputStream
= spFileStream;
voice.Speak(txtText.Text.Trim(), flags);
voice.WaitUntilDone(Timeout.Infinite);
spFileStream.Close();
}

(在WinForm和Web中都适用)

 

 

参考:http://www.microsoft.com/china/community/program/originalarticles/TechDoc/Cnspeech.mspx

        http://www.cnblogs.com/SkyD/archive/2008/08/28/1278478.html

转载于:https://www.cnblogs.com/pfs1314/archive/2011/01/11/1932870.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值