資源描述:
《net中語音識(shí)別和語音合成》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、net中語音識(shí)別和語音合成.net中語音識(shí)別和語音合成2010-07-2013:05準(zhǔn)備SpVoiceClass詳解屬性描述AlertBoundary取得或設(shè)置停頓分界線。AllowAudioOutputFormatChangesOnNextSet設(shè)置是否允許聲音自動(dòng)調(diào)整到合適狀態(tài)以適應(yīng)其音頻輸出。AudioOutput.取得或設(shè)置當(dāng)前聲音使用的的音頻輸出對(duì)象AudioOutputStream取得或設(shè)置當(dāng)前聲音使用的的音頻輸出流對(duì)象。EventInterests取得或設(shè)置當(dāng)前聲音返回的事件類型。Priority取得或設(shè)置
2、聲音的優(yōu)先級(jí)。Rate取得或設(shè)置閱讀的速度。Status返回一個(gè)ISpeechVoiceStatus對(duì)象用于顯示當(dāng)前閱讀和事件的狀態(tài)SynchronousSpeakTimeout取得或設(shè)置一個(gè)時(shí)間間隔,用于標(biāo)識(shí)多久未獲得一個(gè)輸出設(shè)備后,一個(gè)同步的Speak和SpeakStream將終止,以毫秒計(jì)算。Voice取得或設(shè)置發(fā)音對(duì)象。Volume取得或設(shè)置聲音的大小。方法描述DisplayUI是否在控制面板中展示詳細(xì)設(shè)置。GetAudioOutputs返回一個(gè)可用的音頻輸出標(biāo)記。GetVoices返回一個(gè)可用的發(fā)音對(duì)象。IsU
3、ISupported決定是否能通過控制棉板的音頻設(shè)置來控制。Pause暫停朗讀。.Resume恢復(fù)暫停,繼續(xù)播放。Skip在當(dāng)前輸入的文本流中向前或向后跳一定距離再播放。Speak閱讀一個(gè)字符串。SpeakCompleteEvent得到一個(gè)朗讀完畢的時(shí)間句柄SpeakStream朗讀一個(gè)文本流或一個(gè)聲音文件。WaitUntilDone阻塞進(jìn)程,直到聲音播放完畢或者超時(shí)。.關(guān)于語音合成的一些基礎(chǔ)知識(shí),就是先j建立一個(gè)SpVoiceClass類的對(duì)象,然后調(diào)用對(duì)象的GetVoices方法取的一個(gè)發(fā)音的對(duì)象,但是通過設(shè)置該方法
4、的參數(shù)只能建立中文發(fā)音或是英文發(fā)音的對(duì)象,而對(duì)于中英文混合的文本卻沒有辦法。為解決這個(gè)問題,可以對(duì)字符串中的每的字符的ASC碼進(jìn)行判斷,進(jìn)而分辨?zhèn)魅氲淖址侵形倪€是英文。以下是判斷的代碼。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;}對(duì)于Speak方法的參數(shù),
8、第一個(gè)是一個(gè)字符串類型,第二個(gè)是一個(gè)SpeechVoiceSpeakFlags類型的枚舉。當(dāng)將其設(shè)置為SVSFDefault時(shí),則第一個(gè)就是要讀的文本,若將其設(shè)置為SVSFIsFilename時(shí),第一個(gè)參數(shù)就是所要讀的文本的文件名,而不是要讀的內(nèi)容。下面介紹這個(gè)類的SpeakStream方法,這個(gè)方法有2個(gè)參數(shù),第一個(gè)是SpeechBaseStream,第二和Speak一樣,是一個(gè)SpeechVoiceSpeakFlags類型的枚舉。SpeechBaseStream是一個(gè)接口,繼承它的有3個(gè)對(duì)象,這3個(gè)都很相似,先介紹其
9、中之一SpFileStream。SpFileStream有3個(gè)比較常用的方法:Read,Seek,Write。其中Read方法可以創(chuàng)建一個(gè)*.wav文件,以下代碼演示了創(chuàng)建文件的步驟:SpFileStreamClassfs1=newSpFileStreamClass();SpVoiceClassv=newSpVoiceClass();fs1.Open(textBox1.Text,SpeechStreamFileMode.SSFMCreateForWrite,false);//textBox1.text是要?jiǎng)?chuàng)建的文件的路徑
10、。v.AudioOutputStream=fs1;stringss=newstring[4]{"this","is","a","demo"};foreach(stringsinss){v.Speak(s,SpeechVoiceSpeakFlags.SVSFlagsAsync);}fs1.Close();下面的代碼將用