资源描述:
《sapi_5.1_语音合成_和_语音识别_[c#]》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SAPI5.1语音合成和语音识别[C#]翻译源:SpeechSynthesis&SpeechRecognitionUsingSAPI5.1ByBrianLong(http://www.blong.com/)翻译说明:并不全文翻译,只翻译些对本人有用的部分,原版代码为Delphi,译文用C#.NETFramework2.0实现,有些有关Delphi的解释略去,另添加一些C#使用SAPI的个人理解注释,不定期更新[1]语音合成在简单层面上实现语音合成,只需要创建SpVoiceClass对象并调用其中的Speak方法,最简单的实现如下[读出文本框中的
2、文字] privatevoidbutton1_Click(objectsender,EventArgse) { SpVoiceClasssvc=newSpVoiceClass(); svc.Speak(textBox1.Text,SpeechVoiceSpeakFlags.SVSFDefault); }...[Tachikoma注:此处并未提到编程时添加对SAPI的引用,对COM组件的引用较简单,请自行处理]对Speak方法的参数作如下说明:0]对Speak方法的调
3、用默认情况下将会是同步的,也就是说在朗读完指定文字之前不会返回值[同步/异步状态可用第二参数调整]0]Speak方法返回一个流标号,当存在多个异步声音流时可通过标号识别,标号可作为参数提供给某些函数1]第一个参数为要阅读的文字2]第二参数为可调节的一些参数[Flags],可用"或"运算符将其连接同时使用#SVSFDefault [该方法将同步阅读][具体见说明0]]#SVSFlagAsync[该方法将异步阅读,调用后将立即返回,可通过事件监视朗读结束时间,或调用WaitUntilDone方法,或通过SpeakCompleteEvent得到一个事
4、件句柄并提供给WaitForSingleObject]#SVSFPurgeBeforeSpeak 所有朗读中的和待朗读的字符都将被取消#SVSFNLPSpeakPunc标点将被阅读出来#SVSFIsFilename标明第一个参数为要朗读文本所在的文件名#SVSFIsXML 标明文本中含有XML标签,用于控制朗读的音量频率等参数,示例HelloDelphidevelopers!Icanspeakh
5、ighandlow.Icanspeakveryquicklyandveryslowly.Icanspeakquietlyandloudly.Gotosourcewebpage:SAPI5.1语音合成和语音识别[C#][1]-Tachikoma的乱七八糟-博
6、客园列举语音[Voices]翻译说明:由于这个部分涉及到了Delphi编写的简单程序,将其换成C#实现,有些不必要的说明不按照原文翻译,基本上是按照原文复述本节目标:调整朗读语音,调整语音频率和音量代码环境设定:两个TrackBar代表语音频率和音量,trackBarRate,trackBarVolume,一个ComboBox选择朗读语音,comboBoxLanguagePS:朗读语音,可能会不明白朗读语音的意思,就是在控制面板-语音-文字语音转换-"语音选择"中的项,比如MicrosoftMary,MicrosoftSam等等SpVoiceC
7、lass类中GetVoices函数原型如下publicvirtualISpeechObjectTokensGetVoices(stringRequiredAttributes,stringOptionalAttributes);该函数返回一个ISpeechObjectToken集合ISpeechObjectTokens,ISpeechObjectToken描述了每个朗读语音函数两个参数均为对所得到集合的限制,第二参数为对第一参数的补充,比如使用GetVoices('Gender=male','')就会得到男声集合对于这些参数,一般有如下参数:N
8、ame,Vendor,Age,Gender,Language[有没有更多的不知道,翻过SAPI的帮助也没找到相关说明]调用以下语句作以说明