版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、*大學(xué)課 程 設(shè) 計(jì)(說(shuō)明書)基于Speech SDK的語(yǔ)音信號(hào)識(shí)別班級(jí) / 學(xué)號(hào) * 學(xué) 生 姓 名 * 指 導(dǎo) 教 師 * *大學(xué)課 程 設(shè) 計(jì) 任 務(wù) 書課 程 名 稱 綜合課程設(shè)計(jì) 院(系) 電*院 專業(yè) 電*程 班級(jí) * 學(xué)號(hào) * 姓名 * 課程設(shè)計(jì)題目 基于Speech SDK的語(yǔ)音信號(hào)識(shí)別 課程設(shè)計(jì)時(shí)間: 20* 日課程設(shè)計(jì)的內(nèi)容及要求:一、設(shè)計(jì)說(shuō)明語(yǔ)音識(shí)別研究在國(guó)內(nèi)外已經(jīng)有了很多年的發(fā)展歷史,特別是在近些年,隨著實(shí)驗(yàn)室條件下語(yǔ)音識(shí)別的飛速發(fā)展,語(yǔ)音識(shí)別的應(yīng)用已經(jīng)離我們?cè)絹?lái)越近。語(yǔ)音識(shí)別作為一種重要的信息識(shí)別方式在金融、人機(jī)交互、電信等領(lǐng)域有著極大的應(yīng)用空間。課程設(shè)計(jì)基本要求 學(xué)
2、會(huì) Speech SDK 的使用,掌握其語(yǔ)音識(shí)別工具包的設(shè)計(jì)方法。 掌握在 Windows 環(huán)境下語(yǔ)音信號(hào)采集的方法。 掌握語(yǔ)音信號(hào)識(shí)別的基本概念、基本理論和基本方法。 掌握語(yǔ)音信號(hào)識(shí)別經(jīng)典算法。 學(xué)會(huì)用Speech SDK對(duì)信號(hào)進(jìn)行識(shí)別。 三、實(shí)驗(yàn)要求1根據(jù)設(shè)計(jì)要求制定方案; 2進(jìn)行語(yǔ)音測(cè)試數(shù)據(jù)的分析。四、推薦參考資料1 李禹才, 左友東, 鄭秀清 等. 基于Speech SDK 的語(yǔ)音控制應(yīng)用程序的設(shè)計(jì)與實(shí)現(xiàn)J.計(jì)算機(jī)應(yīng)用, 20042易克初,田斌,付強(qiáng)編著 .語(yǔ)音信號(hào)處理 .北京:國(guó)防工業(yè)出版社,20003胡航編著.語(yǔ)音信號(hào)處理.哈爾濱:哈爾濱工業(yè)大學(xué)出版社, 20004蔡蓮紅,黃德智,
3、蔡銳現(xiàn)代語(yǔ)音技術(shù)基礎(chǔ)與應(yīng)用M清華大學(xué)出版社,2003五、按照要求撰寫課程設(shè)計(jì)報(bào)告指導(dǎo)教師 2011 年 12 月 19 日負(fù)責(zé)教師 年 月 日學(xué)生簽字 2011 年 12 月 19 日成績(jī)?cè)u(píng)定表評(píng)語(yǔ)、建議或需要說(shuō)明的問(wèn)題:指導(dǎo)教師簽字: 日期:成 績(jī)目錄一、概述31.分類32.語(yǔ)音信號(hào)處理33.Microsoft Speech SDK簡(jiǎn)介5二、方案論證6三、程序設(shè)計(jì)81.窗口載入及初始化子程序82.語(yǔ)音命令子程序93.聽(tīng)寫子程序94.朗讀子程序105.預(yù)處理及語(yǔ)法規(guī)則11四、性能測(cè)試121程序界面載入測(cè)試122孤立詞識(shí)別測(cè)試123聽(tīng)寫模式測(cè)試14五、結(jié)論15六、課設(shè)體會(huì)及合理化建議15附錄 I
4、 源程序17附錄 語(yǔ)法規(guī)則20一、 概述語(yǔ)音識(shí)別研究在國(guó)內(nèi)外已經(jīng)有了很多年的發(fā)展歷史,特別是在近些年,隨著實(shí)驗(yàn)室條件下語(yǔ)音識(shí)別的飛速發(fā)展,語(yǔ)音識(shí)別的應(yīng)用已經(jīng)離我們?cè)絹?lái)越近。語(yǔ)音識(shí)別作為一種重要的信息識(shí)別方式在金融、人機(jī)交互、電信等領(lǐng)域有著極大的應(yīng)用空間。近二十年來(lái),語(yǔ)音識(shí)別技術(shù)取得顯著進(jìn)步,開(kāi)始從實(shí)驗(yàn)室走向市場(chǎng)。語(yǔ)音識(shí)別是一門交叉學(xué)科,語(yǔ)音識(shí)別技術(shù)所涉及的領(lǐng)域包括:信號(hào)處理、模式識(shí)別、概率論和信息論、發(fā)聲機(jī)理和聽(tīng)覺(jué)機(jī)理、人工智能等等。1. 分類根據(jù)識(shí)別的對(duì)象不同,語(yǔ)音識(shí)別任務(wù)大體可分為3類,即孤立詞識(shí)別(isolated word recognition),關(guān)鍵詞識(shí)別(或稱關(guān)鍵詞檢出,keyw
5、ord spotting)和連續(xù)語(yǔ)音識(shí)別。其中,孤立詞識(shí)別的任務(wù)是識(shí)別事先已知的孤立的詞,如“開(kāi)機(jī)”、“關(guān)機(jī)”等;連續(xù)語(yǔ)音識(shí)別的任務(wù)則是識(shí)別任意的連續(xù)語(yǔ)音,如一個(gè)句子或一段話;連續(xù)語(yǔ)音流中的關(guān)鍵詞檢測(cè)針對(duì)的是連續(xù)語(yǔ)音,但它并不識(shí)別全部文字,而只是檢測(cè)已知的若干關(guān)鍵詞在何處出現(xiàn),如在一段話中檢測(cè)“計(jì)算機(jī)”、“世界”這兩個(gè)詞。 根據(jù)針對(duì)的發(fā)音人,可以把語(yǔ)音識(shí)別技術(shù)分為特定人語(yǔ)音識(shí)別和非特定人語(yǔ)音識(shí)別,前者只能識(shí)別一個(gè)或幾個(gè)人的語(yǔ)音,而后者則可以被任何人使用。非特定人語(yǔ)音識(shí)別系統(tǒng)實(shí)際運(yùn)用更多,但它要比針對(duì)特定人的識(shí)別困難得多。語(yǔ)音識(shí)別的應(yīng)用領(lǐng)域非常廣泛,常見(jiàn)的應(yīng)用系統(tǒng)有:語(yǔ)音輸入系統(tǒng),語(yǔ)音控制系統(tǒng),
6、智能對(duì)話查詢系統(tǒng),等等。2. 語(yǔ)音信號(hào)處理語(yǔ)音識(shí)別方法主要是模式匹配法。在訓(xùn)練階段,用戶將詞匯表中的每一個(gè)詞依次說(shuō)一遍,并且將其特征矢量作為模板存入模板庫(kù)。在識(shí)別階段,將輸入語(yǔ)音的特征矢量依次與模板庫(kù)中的每個(gè)模板進(jìn)行相似度比較,將相似度最高者作為識(shí)別結(jié)果輸出。 前端處理是指在特征提取之前,先對(duì)原始語(yǔ)音進(jìn)行處理,部分消除噪聲和不同說(shuō)話人帶來(lái)的影響,使處理后的信號(hào)更能反映語(yǔ)音的本質(zhì)特征。最常用的前端處理有端點(diǎn)檢測(cè)和語(yǔ)音增強(qiáng)。端點(diǎn)檢測(cè)是指在語(yǔ)音信號(hào)中將語(yǔ)音和非語(yǔ)音信號(hào)時(shí)段區(qū)分開(kāi)來(lái),準(zhǔn)確地確定出語(yǔ)音信號(hào)的起始點(diǎn)。經(jīng)過(guò)端點(diǎn)檢測(cè)后,后續(xù)處理就可以只對(duì)語(yǔ)音信號(hào)進(jìn)行,這對(duì)提高模型的精確度和識(shí)別正確率有重要作用
7、。語(yǔ)音增強(qiáng)的主要任務(wù)就是消除環(huán)境噪聲對(duì)語(yǔ)音的影響。目前通用的方法是采用維納濾波,該方法在噪聲較大的情況下效果好于其它濾波器。 聲學(xué)特征的提取與選擇是語(yǔ)音識(shí)別的一個(gè)重要環(huán)節(jié)。聲學(xué)特征的提取既是一個(gè)信息大幅度壓縮的過(guò)程,也是一個(gè)信號(hào)解卷過(guò)程,目的是使模式劃分器能更好地劃分。由于語(yǔ)音信號(hào)的時(shí)變特性,特征提取必須在一小段語(yǔ)音信號(hào)上進(jìn)行,也即進(jìn)行短時(shí)分析。這一段被認(rèn)為是平穩(wěn)的分析區(qū)間稱之為幀,幀與幀之間的偏移通常取幀長(zhǎng)的1/2或1/3。通常要對(duì)信號(hào)進(jìn)行預(yù)加重以提升高頻,對(duì)信號(hào)加窗以避免短時(shí)語(yǔ)音段邊緣的影響。 對(duì)語(yǔ)音信號(hào)進(jìn)行數(shù)字信號(hào)處理常用的算法有:1. 線性預(yù)測(cè)系數(shù)LPC:線性預(yù)測(cè)分析從人的發(fā)聲機(jī)理入手
8、,通過(guò)對(duì)聲道的短管級(jí)聯(lián)模型的研究,認(rèn)為系統(tǒng)的傳遞函數(shù)符合全極點(diǎn)數(shù)字濾波器的形式,從而n 時(shí)刻的信號(hào)可以用前若干時(shí)刻的信號(hào)的線性組合來(lái)估計(jì)。通過(guò)使實(shí)際語(yǔ)音的采樣值和線性預(yù)測(cè)采樣值之間達(dá)到均方差最小LMS,即可得到線性預(yù)測(cè)系數(shù)LPC。對(duì) LPC的計(jì)算方法有自相關(guān)法、協(xié)方差法、格型法等。計(jì)算上的快速有效保證了這一聲學(xué)特征的廣泛使用。 2.倒譜系數(shù)CEP:利用同態(tài)處理方法,對(duì)語(yǔ)音信號(hào)求離散傅立葉變換DFT后取對(duì)數(shù),再求反變換(IDFT)就可得到倒譜系數(shù)。對(duì)LPC倒譜,在獲得濾波器的線性預(yù)測(cè)系數(shù)后,可以用一個(gè)遞推公式計(jì)算得出。實(shí)驗(yàn)表明,使用倒譜可以提高特征參數(shù)的穩(wěn)定性。 3.Mel倒譜系數(shù)MFCC和感知
9、線性預(yù)測(cè)PLP:Mel倒譜系數(shù)MFCC和感知線性預(yù)測(cè) PLP是受人的聽(tīng)覺(jué)系統(tǒng)研究成果推動(dòng)而導(dǎo)出的聲學(xué)特征。當(dāng)兩個(gè)頻率相近的音調(diào)同時(shí)發(fā)出時(shí),人只能聽(tīng)到一個(gè)音調(diào)。臨界帶寬指的就是這樣一種令人的主觀感覺(jué)發(fā)生突變的帶寬邊界,當(dāng)兩個(gè)音調(diào)的頻率差小于臨界帶寬時(shí),人就會(huì)把兩個(gè)音調(diào)聽(tīng)成一個(gè),這稱之為屏蔽效應(yīng)。Mel刻度是對(duì)這一臨界帶寬的度量方法之一。首先用FFT將時(shí)域信號(hào)轉(zhuǎn)化成頻域,之后對(duì)其對(duì)數(shù)能量譜用依照Mel刻度分布的三角濾波器組進(jìn)行卷積,最后對(duì)各個(gè)濾波器的輸出構(gòu)成的向量進(jìn)行離散余弦變換DCT,取前N個(gè)系數(shù)。PLP仍用自相關(guān)法去計(jì)算LPC參數(shù),但在計(jì)算自相關(guān)參數(shù)時(shí)用的也是對(duì)聽(tīng)覺(jué)激勵(lì)的對(duì)數(shù)能量譜進(jìn)行DCT的
10、方法。 語(yǔ)音識(shí)別系統(tǒng)的模型通常由聲學(xué)模型和語(yǔ)言模型兩部分組成,分別對(duì)應(yīng)于語(yǔ)音到音節(jié)概率的計(jì)算和音節(jié)到字概率的計(jì)算。 聲學(xué)建模:馬爾可夫模型的概念是一個(gè)離散時(shí)域有限狀態(tài)自動(dòng)機(jī),隱馬爾可夫模型HMM是指這一馬爾可夫模型的內(nèi)部狀態(tài)外界不可見(jiàn),外界只能看到各個(gè)時(shí)刻的輸出值。對(duì)語(yǔ)音識(shí)別系統(tǒng),輸出值通常就是從各個(gè)幀計(jì)算而得的聲學(xué)特征。HMM的打分、解碼和訓(xùn)練相應(yīng)的算法是前向算法、Viterbi算法和前向后向算法。 上下文相關(guān)建模:協(xié)同發(fā)音,指的是一個(gè)音受前后相鄰音的影響而發(fā)生變化,從發(fā)聲機(jī)理上看就是人的發(fā)聲器官在一個(gè)音轉(zhuǎn)向另一個(gè)音時(shí)其特性只能漸變,從而使得后一個(gè)音的頻譜與其他條件下的頻譜產(chǎn)生差異。上下文相
11、關(guān)建模方法在建模時(shí)考慮了這一影響,從而使模型能更準(zhǔn)確地描述語(yǔ)音,只考慮前一音的影響的稱為Bi- Phone,考慮前一音和后一音的影響的稱為Tri-Phone。 語(yǔ)言模型主要分為規(guī)則模型和統(tǒng)計(jì)模型兩種。統(tǒng)計(jì)語(yǔ)言模型是用概率統(tǒng)計(jì)的方法來(lái)揭示語(yǔ)言單位內(nèi)在的統(tǒng)計(jì)規(guī)律,其中N-Gram簡(jiǎn)單有效,被廣泛使用。語(yǔ)言模型的性能通常用交叉熵和復(fù)雜度(Perplexity)來(lái)衡量。交叉熵的意義是用該模型對(duì)文本識(shí)別的難度,或者從壓縮的角度來(lái)看,每個(gè)詞平均要用幾個(gè)位來(lái)編碼。復(fù)雜度的意義是用該模型表示這一文本平均的分支數(shù),其倒數(shù)可視為每個(gè)詞的平均概率。平滑是指對(duì)沒(méi)觀察到的N元組合賦予一個(gè)概率值,以保證詞序列總能通過(guò)語(yǔ)言
12、模型得到一個(gè)概率。語(yǔ)音識(shí)別系統(tǒng)選擇識(shí)別基元的要求是,有準(zhǔn)確的定義,能得到足夠數(shù)據(jù)進(jìn)行訓(xùn)練,具有一般性。英語(yǔ)通常采用上下文相關(guān)的音素建模,漢語(yǔ)的協(xié)同發(fā)音不如英語(yǔ)嚴(yán)重,可以采用音節(jié)建模。系統(tǒng)所需的訓(xùn)練數(shù)據(jù)大小與模型復(fù)雜度有關(guān)。模型設(shè)計(jì)得過(guò)于復(fù)雜以至于超出了所提供的訓(xùn)練數(shù)據(jù)的能力,會(huì)使得性能急劇下降。以上介紹了實(shí)現(xiàn)語(yǔ)音信號(hào)識(shí)別的各個(gè)方面的技術(shù)。這些技術(shù)在實(shí)際使用中達(dá)到了較好的效果,但如何克服影響語(yǔ)音的各種因素還需要更深入地分析。目前聽(tīng)寫機(jī)系統(tǒng)還不能完全實(shí)用化以取代鍵盤的輸入,但識(shí)別技術(shù)的成熟同時(shí)推動(dòng)了更高層次的語(yǔ)音理解技術(shù)的研究。由于英語(yǔ)與漢語(yǔ)有著不同的特點(diǎn),針對(duì)英語(yǔ)提出的技術(shù)在漢語(yǔ)中如何使用也是一
13、個(gè)重要的研究課題,而四聲等漢語(yǔ)本身特有的問(wèn)題也有待解決。3. Microsoft Speech SDK簡(jiǎn)介目前,微軟、IBM等公司都相繼推出了它們基于PC的語(yǔ)音識(shí)別產(chǎn)品。其中,微軟Speech SDK完全支持簡(jiǎn)體中文語(yǔ)音系統(tǒng)的開(kāi)發(fā),是開(kāi)發(fā)語(yǔ)音軟件的一個(gè)理想工具。它是基于COM標(biāo)準(zhǔn)開(kāi)發(fā)的,底層協(xié)議以COM組件的形式完全獨(dú)立于應(yīng)用程序?qū)樱瑸閼?yīng)用程序設(shè)計(jì)人員屏蔽了復(fù)雜的語(yǔ)音技術(shù),充分體現(xiàn)了COM的技術(shù)優(yōu)點(diǎn)。語(yǔ)音識(shí)別由識(shí)別引擎(Recognition Engine)管理,能實(shí)現(xiàn)從語(yǔ)音中識(shí)別出漢字;語(yǔ)音合成由語(yǔ)音合成引擎(TTS Engine)負(fù)責(zé),實(shí)現(xiàn)語(yǔ)音朗讀。程序員只需專注于自己的應(yīng)用,調(diào)用相關(guān)的語(yǔ)
14、音應(yīng)用程序接口(SAPI)來(lái)實(shí)現(xiàn)語(yǔ)音功能,該語(yǔ)音框架主要靠SAPI運(yùn)行來(lái)實(shí)現(xiàn)應(yīng)用程序與語(yǔ)音引擎之間的協(xié)作,而SAPI提供各種接口來(lái)實(shí)現(xiàn)不同的語(yǔ)音功能,如識(shí)別、朗讀、訓(xùn)練等。(1) 語(yǔ)音識(shí)別引擎(ISpRecognizer)接口:用于創(chuàng)建語(yǔ)音識(shí)別引擎的實(shí)例。語(yǔ)音識(shí)別引擎對(duì)象有兩種:獨(dú)占( InProcRecognizer)的引擎和共享(SharedRecognizer)的引擎。獨(dú)占的引擎對(duì)象只能由創(chuàng)建的應(yīng)用程序使用,而共享的引擎可以供多個(gè)應(yīng)用程序共同使用。(2) 語(yǔ)音識(shí)別上下文(ISpRecoContext)接口:主要用于發(fā)送和接收與語(yǔ)音識(shí)別相關(guān)的消息通知,創(chuàng)建語(yǔ)法規(guī)則對(duì)象。(3) 語(yǔ)法規(guī)則(I
15、SpRecoGrammar)接口:定義引擎需要識(shí)別的具體內(nèi)容,用于創(chuàng)建、載入和激活識(shí)別用的語(yǔ)法規(guī)則。而語(yǔ)法規(guī)則定義了期望識(shí)別的單詞、短語(yǔ)和句子,通常有兩種語(yǔ)法規(guī)則:聽(tīng)寫語(yǔ)法(Dictation Grammer)和命令控制語(yǔ)法(Command and Control Grammer)。命令控制語(yǔ)法主要用于識(shí)別用戶在語(yǔ)法文件里自定義的一些特定的命令詞匯和句子,這些語(yǔ)法規(guī)則以XML文件的格式編寫,通過(guò)(ISpRecoGrammar)接口載入,并激活。(4) 識(shí)別結(jié)果(ISpPhrase)接口:用于獲取識(shí)別的結(jié)果,包括識(shí)別的文字,識(shí)別的語(yǔ)法規(guī)則等。(5) 語(yǔ)音合成(ISpVoice)接口:主要功能是通
16、過(guò)訪問(wèn)TTS引擎實(shí)現(xiàn)文本到語(yǔ)音的轉(zhuǎn)換,從而使電腦會(huì)說(shuō)話。微軟在office和vista中都應(yīng)用了自己開(kāi)發(fā)的語(yǔ)音識(shí)別引擎,微軟語(yǔ)音識(shí)別引擎的使用是完全免費(fèi)的,所以產(chǎn)生了許多基于微軟語(yǔ)音識(shí)別引擎開(kāi)發(fā)的語(yǔ)音識(shí)別應(yīng)用軟件,例如語(yǔ)音游戲大師語(yǔ)音控制專家芝麻開(kāi)門警衛(wèi)語(yǔ)音識(shí)別系統(tǒng)等等軟件。下面將通過(guò)一個(gè)例子,介紹如何用Speech SDK 創(chuàng)建語(yǔ)音識(shí)別程序。二、 方案論證Microsoft Speech SDK 中包含著一系列支持COM(組件對(duì)象模型)組件的語(yǔ)音自動(dòng)控制接口,只要具備支持OLE(對(duì)象連接與嵌入)自動(dòng)控制的通用語(yǔ)言就可實(shí)現(xiàn)該類語(yǔ)音識(shí)別應(yīng)用程序的開(kāi)發(fā)。因此在VB 環(huán)境下實(shí)現(xiàn)語(yǔ)音識(shí)別程序的開(kāi)發(fā)就變
17、得十分簡(jiǎn)單。在Visual Basic 環(huán)境下,利用事件驅(qū)動(dòng)的編程機(jī)制、易用的可視化設(shè)計(jì)工具,使用Windows 內(nèi)部的廣泛應(yīng)用程序接口(API)函數(shù),以用動(dòng)態(tài)鏈接庫(kù)(DLL)、對(duì)象的鏈接與對(duì)象連接與嵌入(OLE)、開(kāi)放式數(shù)據(jù)連接(ODBC)等技術(shù),可以高效、快速地開(kāi)發(fā)Windows 環(huán)境下功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件。Microsoft Speech SDK的語(yǔ)音應(yīng)用程序接口結(jié)構(gòu)如圖2.1所示:應(yīng)用程序(Application)應(yīng)用程序(Application)SAPI 運(yùn)行(SAPI Runtime)識(shí)別引擎(Recognition Engine)語(yǔ)音合成引擎(TTS Engine)A
18、PIDDI 圖2.1 Microsoft Speech SDK結(jié)構(gòu)該語(yǔ)音程序框架主要靠SAPI運(yùn)行來(lái)實(shí)現(xiàn)應(yīng)用程序與語(yǔ)音引擎之間的協(xié)作,而SAPI提供各種接口來(lái)實(shí)現(xiàn)不同的語(yǔ)音功能,如識(shí)別、朗讀、訓(xùn)練等。根據(jù)Microsoft Speech SDK的上述特征及其COM接口特征,設(shè)計(jì)語(yǔ)音識(shí)別程序的結(jié)構(gòu)框圖如圖2.2所示:開(kāi)始載入窗口、SAPI初始化接受語(yǔ)音信號(hào)執(zhí)行相應(yīng)命令聽(tīng)寫語(yǔ)句是否是孤立詞是否選擇聽(tīng)寫是否選擇朗讀朗讀是否否否是是圖2.2 語(yǔ)音識(shí)別程序框圖如程序框圖2.2所示,可將程序劃分為四個(gè)子程序:窗口載入及初始化、語(yǔ)音命令子程序、聽(tīng)寫子程序、朗讀子程序。程序以SAPI對(duì)語(yǔ)音信號(hào)的采集和識(shí)別為中
19、心,通過(guò)COM組件的對(duì)外接口與SAPI相連接,接受Speech SDK對(duì)語(yǔ)音信號(hào)的處理結(jié)果。程序通過(guò)四個(gè)子程序?qū)邮盏降奶幚斫Y(jié)果進(jìn)行加工處理以實(shí)現(xiàn)用戶需求。三、 程序設(shè)計(jì)根據(jù)程序框圖所示,將程序設(shè)計(jì)為四個(gè)子程序:窗口載入及初始化、語(yǔ)音命令子程序、聽(tīng)寫子程序、朗讀子程序。下面對(duì)四個(gè)子程序進(jìn)行具體設(shè)計(jì)實(shí)現(xiàn)。1. 窗口載入及初始化子程序窗口載入及初始化子程序的任務(wù)是,打開(kāi)程序窗口并完成對(duì)程序的初始化。程序的初始化包括創(chuàng)建一個(gè)語(yǔ)音識(shí)別引擎的實(shí)例和定義一些參數(shù)等。設(shè)計(jì)窗口載入及初始化子程序的程序框圖如圖3.1所示:開(kāi)始載入窗口創(chuàng)建一個(gè)語(yǔ)音識(shí)別實(shí)例創(chuàng)建并導(dǎo)入語(yǔ)法規(guī)則結(jié)束圖3.1 窗口載入及初始化子程序框圖
20、編寫程序時(shí),載入窗口命令為:Private Sub Form1_Load( ) Handles MyBase.Load然后使用命令RC = New SpSharedRecoContext創(chuàng)建語(yǔ)音識(shí)別引擎實(shí)例。創(chuàng)建語(yǔ)法規(guī)則,并導(dǎo)入語(yǔ)法規(guī)則詞匯表的命令為:myGrammar = RC.CreateGrammar()myGrammar.CmdLoadFromFile("sol.xml", SLOStatic)myGrammar.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive)2. 語(yǔ)音命令子程序語(yǔ)音命令子程序的任務(wù)是將收到的語(yǔ)音內(nèi)容
21、與語(yǔ)法規(guī)則中的內(nèi)容進(jìn)行對(duì)比,查找出語(yǔ)法規(guī)則中包含的命令,并執(zhí)行相應(yīng)的命令。其框圖設(shè)計(jì)如圖3.2所示:開(kāi)始查詢孤立詞是否是孤立詞執(zhí)行命令否是是否為命令模式否是圖3.2 語(yǔ)音命令子程序框圖根據(jù)命令子程序框圖的設(shè)計(jì),設(shè)計(jì)程序用if 語(yǔ)句判斷用戶是否選擇了命令模式,例如:If i = True Then當(dāng)收到的語(yǔ)音信號(hào)是語(yǔ)法規(guī)則詞匯表中的詞時(shí),使用select case 語(yǔ)句調(diào)用相應(yīng)程序,執(zhí)行相應(yīng)的命令。3. 聽(tīng)寫子程序聽(tīng)寫子程序的任務(wù)是將收到的語(yǔ)音內(nèi)容轉(zhuǎn)換為文本內(nèi)容,達(dá)到使用語(yǔ)音輸入文本的目的。其框圖設(shè)計(jì)如圖3.3所示:開(kāi)始聽(tīng)寫是否為聽(tīng)寫模式否是圖3.3 聽(tīng)寫子程序框圖由聽(tīng)寫子程序框圖設(shè)計(jì):判斷用戶
22、是否選擇了聽(tīng)寫模式,采用同命令子程序中一樣的方法,也用if 語(yǔ)局。當(dāng)選擇了聽(tīng)寫模式后,使用Text=命令,將語(yǔ)音信號(hào)轉(zhuǎn)換為文本內(nèi)容輸入文本框。4. 朗讀子程序聽(tīng)寫子程序的任務(wù)是將文本框中的內(nèi)容轉(zhuǎn)換為語(yǔ)音內(nèi)容讀出。其框圖設(shè)計(jì)如圖3.4所示:開(kāi)始創(chuàng)建TTS實(shí)例朗讀文本語(yǔ)音內(nèi)容轉(zhuǎn)換到文本圖3.4 朗讀子程序框圖編寫朗讀子程序時(shí),首先使用“strData = StrConv(TextBox1.Text, VbStrConv.SimplifiedChinese, 2052)”語(yǔ)句,將文本轉(zhuǎn)換為語(yǔ)音信號(hào)。然后使用“RC.Voice.Speak(strData)”語(yǔ)句,播放語(yǔ)音內(nèi)容。這樣一個(gè)TTS子程序便完
23、成了。5. 預(yù)處理及語(yǔ)法規(guī)則用于實(shí)現(xiàn)程序功能的四個(gè)子程序如上所述,設(shè)計(jì)完成。此外除了上述四個(gè)子程序外,還要在程序開(kāi)始處加上一段全局變量聲明語(yǔ)句,并編寫一個(gè).XML語(yǔ)法規(guī)則項(xiàng)才能完成程序設(shè)計(jì)。程序開(kāi)始處的變量聲明有:程序庫(kù)引用(Imports SpeechLib)、語(yǔ)音事件聲明(Public WithEvents RC As SpSharedRecoContext)、語(yǔ)法變量聲明(Public myGrammar, b As ISpeechRecoGrammar)、其他全局變量聲明(Dim i, j As Boolean)等。建立語(yǔ)法規(guī)則,即用戶詞匯表。用戶詞匯表即用戶對(duì)語(yǔ)音識(shí)別程序所說(shuō)命令的內(nèi)
24、容,用戶對(duì)語(yǔ)音識(shí)別程序所說(shuō)的詞或詞組所組成的集合便構(gòu)成用戶詞匯表。用戶對(duì)語(yǔ)音識(shí)別程序的控制只能通過(guò)用戶詞匯表中詞或詞組來(lái)實(shí)現(xiàn),用戶詞匯表中的內(nèi)容將會(huì)與語(yǔ)音識(shí)別程序中的相關(guān)命令對(duì)應(yīng)而最終轉(zhuǎn)化為可供應(yīng)用程序執(zhí)行的控制命令。用戶詞匯表中的內(nèi)容也是用戶在進(jìn)行音頻信息輸入命令時(shí)唯一可被輸入的信息,音頻輸入命令信息的內(nèi)容必須在詞匯表所覆蓋的內(nèi)容范圍之內(nèi),一旦其超出詞匯表范圍,應(yīng)用程序?qū)o(wú)法識(shí)別。另外,詞匯表中的具體詞或詞組的內(nèi)容一般與其所要實(shí)現(xiàn)的控制命令相對(duì)應(yīng),如在詞匯表中定義“stop”這個(gè)詞時(shí),一般是要實(shí)現(xiàn)關(guān)閉程序的命令,當(dāng)用戶向應(yīng)用程序說(shuō)出“stop”時(shí),應(yīng)用程序便可執(zhí)行關(guān)閉命令。現(xiàn)編寫語(yǔ)法規(guī)則.X
25、ML文件內(nèi)容如下:<GRAMMAR LANGID="409"> <DEFINE> <ID NAME="RID_NewGame" VAL="101"/> </DEFINE><RULE NAME="newgame" ID="RID_NewGame" TOPLEVEL="ACTIVE"> <L> <P>開(kāi)始</P> <P>上網(wǎng)</P> <P>結(jié)束<
26、;/P> <P>暫停</P> </L> </RULE></GRAMMAR>綜上所述,子程序設(shè)計(jì)完畢。接著就可編寫語(yǔ)音識(shí)別程序,首先在VB中創(chuàng)建一個(gè)項(xiàng)目,并為項(xiàng)目建立一個(gè)windows窗口,再在窗口中添加一些控件。然后將上述的各子程序和語(yǔ)法規(guī)則編寫完成,程序大體上便編輯完成了。然后在引用項(xiàng)中為項(xiàng)目添加Microsoft Speech Object Library,最后編譯項(xiàng)目,產(chǎn)生可執(zhí)行.exe文件,這樣一個(gè)語(yǔ)音識(shí)別程序便編寫完成了。四、 性能測(cè)試程序編寫完成后,還需要測(cè)試該應(yīng)用程序,以判斷其是否符合設(shè)計(jì)要求,達(dá)到用戶需求,以及實(shí)
27、現(xiàn)效果是否良好。1 程序界面載入測(cè)試首先載入窗口。載入時(shí)程序會(huì)用語(yǔ)音報(bào)告"now system started",載入后窗口界面如圖4.1所示:圖4.1 界面載入測(cè)試如上圖所示,窗口載入成功,界面符合設(shè)計(jì),包含了一個(gè)文本框用于與用戶進(jìn)行交互,一組二選一按鈕用于選擇語(yǔ)音識(shí)別模式,一個(gè)命令按鈕用于下達(dá)朗讀命令。2 孤立詞識(shí)別測(cè)試下面進(jìn)行程序的孤立詞識(shí)別性能測(cè)試,首先按照窗口界面上的提示,選擇語(yǔ)音識(shí)別模式為命令模式(選擇cmd),然后對(duì)麥克風(fēng)說(shuō)出命令信息,該語(yǔ)音識(shí)別程序即可執(zhí)行相關(guān)操作來(lái)實(shí)現(xiàn)用戶的預(yù)定義要求。如當(dāng)發(fā)出“網(wǎng)絡(luò)”命令后,打開(kāi)網(wǎng)絡(luò),如圖4.2所示:圖4.2 命令模式示例
28、在本語(yǔ)音識(shí)別程序的命令模式中還可執(zhí)行其他一些用戶命令,如暫停、結(jié)束、打開(kāi)播放器等。由于語(yǔ)音信號(hào)自身就有難識(shí)別,模糊性強(qiáng),噪音干擾大等特點(diǎn),再有語(yǔ)音識(shí)別技術(shù)還不是十分完善,所以語(yǔ)音識(shí)別存在不小的錯(cuò)誤率。現(xiàn)在對(duì)該語(yǔ)音識(shí)別程序的識(shí)別性能進(jìn)行測(cè)試,檢測(cè)其對(duì)語(yǔ)音輸入的孤立詞識(shí)別錯(cuò)誤率如何。首先對(duì)程序進(jìn)行一些修改,以方便進(jìn)行測(cè)試:程序在接到語(yǔ)音信號(hào)后,會(huì)將收到的信號(hào)轉(zhuǎn)換為文本信息在文本框中顯示;語(yǔ)法規(guī)則詞匯表設(shè)為包含:金、木、水、火、土、乾、坤、坎、澤、開(kāi)始、暫停、網(wǎng)絡(luò)等12個(gè)詞,以方便測(cè)試;并且識(shí)別收到的信息是孤立詞后,將不再執(zhí)行相應(yīng)的命令。測(cè)試效果如圖4.3所示:圖4.3 命令模式測(cè)試效果在上圖中,一
29、共輸入了57個(gè)孤立詞,其中程序正確識(shí)別了57個(gè),錯(cuò)誤9個(gè)。按照示例所述,再進(jìn)行行了2次測(cè)試。測(cè)試結(jié)果如表4.1所示:輸入詞數(shù)正確識(shí)別數(shù)正確率測(cè)試一574884.2測(cè)試二635181.0測(cè)試三594779.7總和17914681.6表4.1 孤立詞測(cè)試結(jié)果由上表可得:總共輸入詞179個(gè),其中146個(gè)被程序準(zhǔn)確識(shí)別,該語(yǔ)音識(shí)別程序?qū)铝⒃~識(shí)別的準(zhǔn)確率為81.6,識(shí)別率偏低但基本符合程序設(shè)計(jì)要求。3 聽(tīng)寫模式測(cè)試接著選擇聽(tīng)寫模式(選擇write),在此模式下,用戶所說(shuō)的話將會(huì)轉(zhuǎn)換為文本顯示在文本框中,實(shí)現(xiàn)聽(tīng)寫要求。如圖4.4所示:圖4.4 聽(tīng)寫模式示例在聽(tīng)寫模式下語(yǔ)音識(shí)別的準(zhǔn)確率比命令模式更小,錯(cuò)誤
30、跟多,所以語(yǔ)音識(shí)別現(xiàn)在還更適合用于輸入固定此表中的內(nèi)容,而不太適合用于聽(tīng)寫輸入。在聽(tīng)寫完成后,可點(diǎn)擊read按鈕,程序便會(huì)將文本框中的內(nèi)容朗讀出來(lái)。綜上,該語(yǔ)音識(shí)別程序能夠正常運(yùn)行,且性能滿足設(shè)計(jì)要求,能夠?qū)崿F(xiàn)語(yǔ)音識(shí)別功能。五、 結(jié)論使用VB,運(yùn)用Microsoft Speech SDK開(kāi)發(fā)語(yǔ)音識(shí)別程序同開(kāi)發(fā)一般應(yīng)用程序一樣具有簡(jiǎn)單易用,開(kāi)發(fā)周期短,出錯(cuò)率低,程序可讀性強(qiáng)等諸多優(yōu)點(diǎn)。然而其缺點(diǎn)也是很明顯的,這主要表現(xiàn)在VB 語(yǔ)言自身的缺點(diǎn)上,如VB不是真正的面向?qū)ο缶幊陶Z(yǔ)言,沒(méi)有自己的類庫(kù),和系統(tǒng)打交道難,程序員對(duì)資源的分配所能做的很有限,不支持指針,將太多的東西“隱蔽”起來(lái),不能知道程序的真
31、正工作流程等等。此外,VB 缺乏工程支持,難以實(shí)現(xiàn)大型工程的開(kāi)發(fā)。但VB 有易學(xué)易用、開(kāi)發(fā)方便,應(yīng)用范圍廣,使用人數(shù)多等優(yōu)勢(shì),也十分有利于語(yǔ)音識(shí)別應(yīng)用程序的進(jìn)一步發(fā)展和推廣。在以上實(shí)例中只用到簡(jiǎn)單的語(yǔ)音識(shí)別同應(yīng)用程序的接口間的操作,而VB 語(yǔ)言同語(yǔ)音識(shí)別引擎的良好接口的強(qiáng)大功能在此時(shí)并未真正體現(xiàn)出來(lái),在此基礎(chǔ)上開(kāi)發(fā)出更多更實(shí)用的用語(yǔ)音識(shí)別應(yīng)用程序,甚至是用語(yǔ)音識(shí)別控制計(jì)算機(jī)硬件的應(yīng)用程序都是不難實(shí)現(xiàn)的。六、 課設(shè)體會(huì)及合理化建議通過(guò)此次課程設(shè)計(jì),我學(xué)習(xí)到了VB編程的基礎(chǔ)知識(shí),VB2010的使用發(fā)法,還用Microsoft Speech SDK的運(yùn)用,我學(xué)到的這些知識(shí)使我受益頗多,也必將有益于我
32、今后的學(xué)習(xí)、工作。在為課設(shè)學(xué)習(xí)各種知識(shí)的過(guò)程中,我不僅加深了對(duì)以往知識(shí)的認(rèn)識(shí),還還學(xué)到了新的學(xué)習(xí)方法、研究方法。并且在學(xué)習(xí)開(kāi)發(fā)語(yǔ)音識(shí)別程序的過(guò)程中,我還認(rèn)識(shí)到,程序開(kāi)發(fā)工作只有在實(shí)踐中才能摸索出更多先進(jìn)的技術(shù)手段來(lái)為開(kāi)發(fā)程序服務(wù)。通過(guò)利用先進(jìn)完善的技術(shù)可以縮短應(yīng)用程序的開(kāi)發(fā)周期, 同時(shí)提高程序的可擴(kuò)展性和可維護(hù)性。同時(shí)在課設(shè)過(guò)程中需要學(xué)習(xí)各種新的、陌生的知識(shí),學(xué)習(xí)量很大,內(nèi)容很龐雜,所以學(xué)習(xí)中不僅離不了先進(jìn)檢索方法的支持,同時(shí)也離不開(kāi)老師的指導(dǎo)和幫助,所以十分感謝課設(shè)指導(dǎo)老師*老師的指導(dǎo)幫助。參考文獻(xiàn)1 李書琴等主編. Visual Basic程序設(shè)計(jì)基礎(chǔ). M北京:清華大學(xué)出版社,2006年
33、2 Bill Evjen等編著. VB.NET高級(jí)編程. M北京:清華大學(xué)出版社,2005年3 李禹才, 左友東, 鄭秀清 等. 基于Speech SDK 的語(yǔ)音控制應(yīng)用程序的設(shè)計(jì)與實(shí)現(xiàn)J.計(jì)算機(jī)應(yīng)用, 20044易克初,田斌,付強(qiáng)編著 .語(yǔ)音信號(hào)處理 .北京:國(guó)防工業(yè)出版社,20005趙力著.語(yǔ)音信號(hào)處理.北京:機(jī)械工業(yè)大學(xué)出版社, 20076蔡蓮紅,黃德智,蔡銳現(xiàn)代語(yǔ)音技術(shù)基礎(chǔ)與應(yīng)用M清華大學(xué)出版社,2003附錄 I 源程序Option Explicit OnImports SpeechLibPublic Class Form1Public WithEvents RC As SpShare
34、dRecoContext Dim Recognizer As SpInprocRecognizer Public myGrammar, b As ISpeechRecoGrammar Dim i, j As BooleanPrivate Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.LoadRC = New SpSharedRecoContext Dim SharedRecognizer As SpSharedRecognizer SharedRecognizer = CreateOb
35、ject("SAPI.SpSharedRecognizer") myGrammar = RC.CreateGrammar() Call myGrammar.CmdLoadFromFile("sol.xml", 0) myGrammar.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive) RC.Voice.Speak("now system started")End SubPrivate Sub RC_FalseRecognition(ByVal StreamNumber As Long,
36、ByVal StreamPosition As Object, ByVal Result As SpeechLib.ISpeechRecoResult)TextBox1.Text = "(no recognition)"End SubPrivate Sub RC_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Object, ByVal Result As SpeechLib.ISpeechRecoResult)If i = True Then RC.Voice.Speak("now
37、i'am listening your command") Select Case Case "start" MsgBox("現(xiàn)在開(kāi)始運(yùn)行程序") Case "stop" MsgBox("這是我編寫的第一個(gè)語(yǔ)音程序,好高興哦!") Case "net" Shell("C:/Program Files/Internet Explorer/IEXPLORE.EXE") Case "結(jié)束" End End Select End IfEnd SubPrivate Sub RC_StartStream(ByVal StreamNumbe
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級(jí)數(shù)學(xué)(小數(shù)加減運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案匯編
- 自愿加入保安協(xié)議書(2篇)
- 購(gòu)銷協(xié)議書(2篇)
- 南京工業(yè)大學(xué)浦江學(xué)院《數(shù)字電子技術(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 成都某招商會(huì)展中心裝修工程施工組織設(shè)計(jì)
- 方方圓圓說(shuō)課稿
- 獨(dú)無(wú)的我說(shuō)課稿
- 肝硬化失代償期
- 《氧化碳制取的研究》說(shuō)課稿
- 南京工業(yè)大學(xué)浦江學(xué)院《工程招投標(biāo)與合同管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 政治學(xué)原理 (自考) 課件 周光輝 第1-4章 國(guó)家的性質(zhì)-國(guó)家機(jī)構(gòu)
- 2024-2026年全球經(jīng)濟(jì)展望
- 《信心與行為》課件
- 一例乳腺癌術(shù)后并發(fā)淋巴水腫患者的個(gè)案護(hù)理
- 產(chǎn)品系統(tǒng)設(shè)計(jì)開(kāi)發(fā) 課件 第1、2章 產(chǎn)品系統(tǒng)設(shè)計(jì)概述、產(chǎn)品系統(tǒng)體系的構(gòu)成
- 課文明如廁班會(huì)
- 消毒供應(yīng)中心考試試題
- 人教版二年級(jí)語(yǔ)文上冊(cè)全冊(cè)拼音百詞競(jìng)賽試卷(含答案)
- 高等數(shù)學(xué)知識(shí)點(diǎn)
- 中建高大模板專家論證施工方案
- “互聯(lián)網(wǎng)物流”課件
評(píng)論
0/150
提交評(píng)論