欢迎来到天天文库
浏览记录
ID:14850906
大小:33.13 KB
页数:9页
时间:2018-07-30
《net中语音识别和语音合成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、net中语音识别和语音合成.net中语音识别和语音合成2010-07-2013:05准备SpVoiceClass详解属性描述AlertBoundary取得或设置停顿分界线。AllowAudioOutputFormatChangesOnNextSet设置是否允许声音自动调整到合适状态以适应其音频输出。AudioOutput.取得或设置当前声音使用的的音频输出对象AudioOutputStream取得或设置当前声音使用的的音频输出流对象。EventInterests取得或设置当前声音返回的事件类型。Priority取得或设置
2、声音的优先级。Rate取得或设置阅读的速度。Status返回一个ISpeechVoiceStatus对象用于显示当前阅读和事件的状态SynchronousSpeakTimeout取得或设置一个时间间隔,用于标识多久未获得一个输出设备后,一个同步的Speak和SpeakStream将终止,以毫秒计算。Voice取得或设置发音对象。Volume取得或设置声音的大小。方法描述DisplayUI是否在控制面板中展示详细设置。GetAudioOutputs返回一个可用的音频输出标记。GetVoices返回一个可用的发音对象。IsU
3、ISupported决定是否能通过控制棉板的音频设置来控制。Pause暂停朗读。.Resume恢复暂停,继续播放。Skip在当前输入的文本流中向前或向后跳一定距离再播放。Speak阅读一个字符串。SpeakCompleteEvent得到一个朗读完毕的时间句柄SpeakStream朗读一个文本流或一个声音文件。WaitUntilDone阻塞进程,直到声音播放完毕或者超时。.关于语音合成的一些基础知识,就是先j建立一个SpVoiceClass类的对象,然后调用对象的GetVoices方法取的一个发音的对象,但是通过设置该方法
4、的参数只能建立中文发音或是英文发音的对象,而对于中英文混合的文本却没有办法。为解决这个问题,可以对字符串中的每的字符的ASC码进行判断,进而分辨传入的字符串是中文还是英文。以下是判断的代码。publicboolAnalyse(stringstrSpeak){intiCbeg=0;intiEbeg=0;boolIsChina=true;for(inti=0;istrSpeak.Length;i++){charchr=strSpeak[i];if(IsChina){if(chr=122&&chr=65){intiLen=i-
5、iCbeg;stringstrValue=strSpeak.Substring(iCbeg,iLen);SpeakChina(strValue);iEbeg=i;IsChina=false;}}else{if(chr122
6、
7、chr65){intiLen=i-iEbeg;stringstrValue=strSpeak.Substring(iEbeg,iLen);this.SpeakEnglishi(strValue);iCbeg=i;IsChina=true;}}}returnIsChina;}对于Speak方法的参数,
8、第一个是一个字符串类型,第二个是一个SpeechVoiceSpeakFlags类型的枚举。当将其设置为SVSFDefault时,则第一个就是要读的文本,若将其设置为SVSFIsFilename时,第一个参数就是所要读的文本的文件名,而不是要读的内容。下面介绍这个类的SpeakStream方法,这个方法有2个参数,第一个是SpeechBaseStream,第二和Speak一样,是一个SpeechVoiceSpeakFlags类型的枚举。SpeechBaseStream是一个接口,继承它的有3个对象,这3个都很相似,先介绍其
9、中之一SpFileStream。SpFileStream有3个比较常用的方法:Read,Seek,Write。其中Read方法可以创建一个*.wav文件,以下代码演示了创建文件的步骤:SpFileStreamClassfs1=newSpFileStreamClass();SpVoiceClassv=newSpVoiceClass();fs1.Open(textBox1.Text,SpeechStreamFileMode.SSFMCreateForWrite,false);//textBox1.text是要创建的文件的路径
10、。v.AudioOutputStream=fs1;stringss=newstring[4]{"this","is","a","demo"};foreach(stringsinss){v.Speak(s,SpeechVoiceSpeakFlags.SVSFlagsAsync);}fs1.Close();下面的代码将用
此文档下载收益归作者所有