国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

中文語音識別技術在c#中的應用(二)

2024-07-21 02:17:59
字體:
來源:轉載
供稿:網友
接上篇《中文語音識別技術在c#中的應用(一)》………但是,這個方法本身并不知道你給的字符串是什么語言,所以需要我們它這個字符串用什么語言讀出。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) ;
speechlib._ispeechrecocontextevents_recognitioneventhandler rechandle =
new _ispeechrecocontextevents_recognitioneventhandler(contexrecognition) ;
ssrcontex.recognition += rechandle ;
}
public void beginrec(control tbresult)




{
isrg.dictationsetstate(speechrulestate.sgdsactive) ;
cdisplay = tbresult ;
}
public static sprecognition instance()
{
if (_instance == null)
_instance = new sprecognition() ;
return _instance ;
}
public void closerec()
{
isrg.dictationsetstate(speechrulestate.sgdsinactive) ;
}
private void contexrecognition(int iindex,object obj,speechlib.speechrecognitiontype type,speechlib.ispeechrecoresult result)

{
cdisplay.text += result.phraseinfo.gettext(0,-1,true) ;
}

}



我們定義了ssrcontex 和isrg為語音識別的上下文和語法,通過設置isrg的dictationsetstate方法,我們可以開始或結束識別,在上面的程序中是beginrec和closerec方法。cdisplay 是我們用來輸出識別結果的地方,為了能夠在大部分控件上都可以顯示結果,我用了一個control 類來定義它。當然,每次語音識別后都會觸發ispeechrecocontextevents_recognitioneventhandler 事件,我們定義了一個這樣的方法contexrecognition來響應事件,并且在這個方法里輸出識別結果。

這樣,中文語音處理的一些最基本的問題就有了一個簡單的解決方法,當然,這種方法還有很多不完善的地方,希望大家多提出批評意見,共同提高。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: SHOW| 咸宁市| 景谷| 莎车县| 贵溪市| 公主岭市| 讷河市| 天全县| 岳阳县| 黑山县| 漳浦县| 唐山市| 海淀区| 佛学| 满城县| 丰原市| 类乌齐县| 聂拉木县| 台江县| 孟州市| 九江县| 信阳市| 固安县| 堆龙德庆县| 错那县| 丰原市| 吕梁市| 鄱阳县| 天峻县| 沧州市| 诸暨市| 天全县| 东源县| 板桥市| 嘉黎县| 云霄县| 仙桃市| 聂荣县| 平凉市| 连江县| 盐源县|