中英文語音合成與中文語音辨識技術在c#中的應用(二)

來源:互聯網
上載者:User
但是,這個方法本身並不知道你給的字串是什麼語言,所以需要我們它這個字串用什麼語言讀出。SpVoiceClass 類的Voice 屬性就是用來設定語種的,我們可以通過SpVoiceClass 的GetVoices方法得到所有的語種列表,然後在根據參數選擇相應的語種,比如設定語種為漢語如下所示:
private void SetChinaVoice()
{
voice.Voice = voice.GetVoices(string.Empty,string.Empty).Item(0) ;
}
0表示是漢用,1234都表示英語,就是口音不同。
這樣,我們就設定了語種,如果結合發音方法,我們就可以設計出一個只發漢語語音的方法
private void SpeakChina(string strSpeak)
{
SetChinaVoice() ;
Speak(strSpeak) ;
}
只發英語語音的方法也是類似的,上面程式裡有。
對於一段中英文混合的語言,我們讓程式讀出混合語音的方法就是:編程把這段語言的中英文分開,對於中文調用SpeakChina方法,英文調用SpeakEnglishi方法;至於怎樣判斷一個字元是英文還是中文,我採用的是判斷asc碼的方法,具體的類方法是通過AnalyseSpeak實現的。
這樣,對於一段中英文混合文字,我們只需把它作為參數傳遞給AnalyseSpeak就可以了,他能夠完成中英文的混合發音。
當然,對於發音的暫訂、繼續、停止等操作,上面也給出了簡單的方法調用,很容易明白。
下面簡單介紹一下中文語音辨識的方法:
先把該語音辨識的類原始碼貼在下面,然後再做說明:
public class SpRecognition
{
private static SpRecognition _Instance = null ;
private SpeechLib.ISpeechRecoGrammar isrg ;
private SpeechLib.SpSharedRecoContextClass ssrContex =null;
private System.Windows.Forms.Control cDisplay ;
private SpRecognition()
{
ssrContex = new SpSharedRecoContextClass() ;
isrg = ssrContex.CreateGrammar(1) ;
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.