




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、*大學(xué)課 程 設(shè) 計(jì)(說明書)基于speech sdk的語音信號識別班級 / 學(xué)號 * 學(xué) 生 姓 名 * 指 導(dǎo) 教 師 * *大學(xué)課 程 設(shè) 計(jì) 任 務(wù) 書課 程 名 稱 綜合課程設(shè)計(jì) 院(系) 電*院 專業(yè) 電*程 班級 * 學(xué)號 * 姓名 * 課程設(shè)計(jì)題目 基于speech sdk的語音信號識別 課程設(shè)計(jì)時(shí)間: 20* 日課程設(shè)計(jì)的內(nèi)容及要求:一、設(shè)計(jì)說明語音識別研究在國內(nèi)外已經(jīng)有了很多年的發(fā)展歷史,特別是在近些年,隨著實(shí)驗(yàn)室條件下語音識別的飛速發(fā)展,語音識別的應(yīng)用已經(jīng)離我們越來越近。語音識別作為一種重要的信息識別方式在金融、人機(jī)交互、電信等領(lǐng)域有著極大的應(yīng)用空間。課程設(shè)計(jì)基本要求 學(xué)
2、會(huì) speech sdk 的使用,掌握其語音識別工具包的設(shè)計(jì)方法。 掌握在 windows 環(huán)境下語音信號采集的方法。 掌握語音信號識別的基本概念、基本理論和基本方法。 掌握語音信號識別經(jīng)典算法。 學(xué)會(huì)用speech sdk對信號進(jìn)行識別。 三、實(shí)驗(yàn)要求1根據(jù)設(shè)計(jì)要求制定方案; 2進(jìn)行語音測試數(shù)據(jù)的分析。四、推薦參考資料1 李禹才, 左友東, 鄭秀清 等. 基于speech sdk 的語音控制應(yīng)用程序的設(shè)計(jì)與實(shí)現(xiàn)j.計(jì)算機(jī)應(yīng)用, 20042易克初,田斌,付強(qiáng)編著 .語音信號處理 .北京:國防工業(yè)出版社,20003胡航編著.語音信號處理.哈爾濱:哈爾濱工業(yè)大學(xué)出版社, 20004蔡蓮紅,黃德智,
3、蔡銳現(xiàn)代語音技術(shù)基礎(chǔ)與應(yīng)用m清華大學(xué)出版社,2003五、按照要求撰寫課程設(shè)計(jì)報(bào)告指導(dǎo)教師 2011 年 12 月 19 日負(fù)責(zé)教師 年 月 日學(xué)生簽字 2011 年 12 月 19 日成績評定表評語、建議或需要說明的問題:指導(dǎo)教師簽字: 日期:成 績目錄一、概述31.分類32.語音信號處理33.microsoft speech sdk簡介5二、方案論證6三、程序設(shè)計(jì)81.窗口載入及初始化子程序82.語音命令子程序93.聽寫子程序94.朗讀子程序105.預(yù)處理及語法規(guī)則11四、性能測試121程序界面載入測試122孤立詞識別測試123聽寫模式測試14五、結(jié)論15六、課設(shè)體會(huì)及合理化建議15附錄 i
4、 源程序17附錄 語法規(guī)則20一、 概述語音識別研究在國內(nèi)外已經(jīng)有了很多年的發(fā)展歷史,特別是在近些年,隨著實(shí)驗(yàn)室條件下語音識別的飛速發(fā)展,語音識別的應(yīng)用已經(jīng)離我們越來越近。語音識別作為一種重要的信息識別方式在金融、人機(jī)交互、電信等領(lǐng)域有著極大的應(yīng)用空間。近二十年來,語音識別技術(shù)取得顯著進(jìn)步,開始從實(shí)驗(yàn)室走向市場。語音識別是一門交叉學(xué)科,語音識別技術(shù)所涉及的領(lǐng)域包括:信號處理、模式識別、概率論和信息論、發(fā)聲機(jī)理和聽覺機(jī)理、人工智能等等。1. 分類根據(jù)識別的對象不同,語音識別任務(wù)大體可分為3類,即孤立詞識別(isolated word recognition),關(guān)鍵詞識別(或稱關(guān)鍵詞檢出,keyw
5、ord spotting)和連續(xù)語音識別。其中,孤立詞識別的任務(wù)是識別事先已知的孤立的詞,如“開機(jī)”、“關(guān)機(jī)”等;連續(xù)語音識別的任務(wù)則是識別任意的連續(xù)語音,如一個(gè)句子或一段話;連續(xù)語音流中的關(guān)鍵詞檢測針對的是連續(xù)語音,但它并不識別全部文字,而只是檢測已知的若干關(guān)鍵詞在何處出現(xiàn),如在一段話中檢測“計(jì)算機(jī)”、“世界”這兩個(gè)詞。 根據(jù)針對的發(fā)音人,可以把語音識別技術(shù)分為特定人語音識別和非特定人語音識別,前者只能識別一個(gè)或幾個(gè)人的語音,而后者則可以被任何人使用。非特定人語音識別系統(tǒng)實(shí)際運(yùn)用更多,但它要比針對特定人的識別困難得多。語音識別的應(yīng)用領(lǐng)域非常廣泛,常見的應(yīng)用系統(tǒng)有:語音輸入系統(tǒng),語音控制系統(tǒng),
6、智能對話查詢系統(tǒng),等等。2. 語音信號處理語音識別方法主要是模式匹配法。在訓(xùn)練階段,用戶將詞匯表中的每一個(gè)詞依次說一遍,并且將其特征矢量作為模板存入模板庫。在識別階段,將輸入語音的特征矢量依次與模板庫中的每個(gè)模板進(jìn)行相似度比較,將相似度最高者作為識別結(jié)果輸出。 前端處理是指在特征提取之前,先對原始語音進(jìn)行處理,部分消除噪聲和不同說話人帶來的影響,使處理后的信號更能反映語音的本質(zhì)特征。最常用的前端處理有端點(diǎn)檢測和語音增強(qiáng)。端點(diǎn)檢測是指在語音信號中將語音和非語音信號時(shí)段區(qū)分開來,準(zhǔn)確地確定出語音信號的起始點(diǎn)。經(jīng)過端點(diǎn)檢測后,后續(xù)處理就可以只對語音信號進(jìn)行,這對提高模型的精確度和識別正確率有重要作用
7、。語音增強(qiáng)的主要任務(wù)就是消除環(huán)境噪聲對語音的影響。目前通用的方法是采用維納濾波,該方法在噪聲較大的情況下效果好于其它濾波器。 聲學(xué)特征的提取與選擇是語音識別的一個(gè)重要環(huán)節(jié)。聲學(xué)特征的提取既是一個(gè)信息大幅度壓縮的過程,也是一個(gè)信號解卷過程,目的是使模式劃分器能更好地劃分。由于語音信號的時(shí)變特性,特征提取必須在一小段語音信號上進(jìn)行,也即進(jìn)行短時(shí)分析。這一段被認(rèn)為是平穩(wěn)的分析區(qū)間稱之為幀,幀與幀之間的偏移通常取幀長的1/2或1/3。通常要對信號進(jìn)行預(yù)加重以提升高頻,對信號加窗以避免短時(shí)語音段邊緣的影響。 對語音信號進(jìn)行數(shù)字信號處理常用的算法有:1. 線性預(yù)測系數(shù)lpc:線性預(yù)測分析從人的發(fā)聲機(jī)理入手
8、,通過對聲道的短管級聯(lián)模型的研究,認(rèn)為系統(tǒng)的傳遞函數(shù)符合全極點(diǎn)數(shù)字濾波器的形式,從而n 時(shí)刻的信號可以用前若干時(shí)刻的信號的線性組合來估計(jì)。通過使實(shí)際語音的采樣值和線性預(yù)測采樣值之間達(dá)到均方差最小lms,即可得到線性預(yù)測系數(shù)lpc。對 lpc的計(jì)算方法有自相關(guān)法、協(xié)方差法、格型法等。計(jì)算上的快速有效保證了這一聲學(xué)特征的廣泛使用。 2.倒譜系數(shù)cep:利用同態(tài)處理方法,對語音信號求離散傅立葉變換dft后取對數(shù),再求反變換(idft)就可得到倒譜系數(shù)。對lpc倒譜,在獲得濾波器的線性預(yù)測系數(shù)后,可以用一個(gè)遞推公式計(jì)算得出。實(shí)驗(yàn)表明,使用倒譜可以提高特征參數(shù)的穩(wěn)定性。 3.mel倒譜系數(shù)mfcc和感知
9、線性預(yù)測plp:mel倒譜系數(shù)mfcc和感知線性預(yù)測 plp是受人的聽覺系統(tǒng)研究成果推動(dòng)而導(dǎo)出的聲學(xué)特征。當(dāng)兩個(gè)頻率相近的音調(diào)同時(shí)發(fā)出時(shí),人只能聽到一個(gè)音調(diào)。臨界帶寬指的就是這樣一種令人的主觀感覺發(fā)生突變的帶寬邊界,當(dāng)兩個(gè)音調(diào)的頻率差小于臨界帶寬時(shí),人就會(huì)把兩個(gè)音調(diào)聽成一個(gè),這稱之為屏蔽效應(yīng)。mel刻度是對這一臨界帶寬的度量方法之一。首先用fft將時(shí)域信號轉(zhuǎn)化成頻域,之后對其對數(shù)能量譜用依照mel刻度分布的三角濾波器組進(jìn)行卷積,最后對各個(gè)濾波器的輸出構(gòu)成的向量進(jìn)行離散余弦變換dct,取前n個(gè)系數(shù)。plp仍用自相關(guān)法去計(jì)算lpc參數(shù),但在計(jì)算自相關(guān)參數(shù)時(shí)用的也是對聽覺激勵(lì)的對數(shù)能量譜進(jìn)行dct的
10、方法。 語音識別系統(tǒng)的模型通常由聲學(xué)模型和語言模型兩部分組成,分別對應(yīng)于語音到音節(jié)概率的計(jì)算和音節(jié)到字概率的計(jì)算。 聲學(xué)建模:馬爾可夫模型的概念是一個(gè)離散時(shí)域有限狀態(tài)自動(dòng)機(jī),隱馬爾可夫模型hmm是指這一馬爾可夫模型的內(nèi)部狀態(tài)外界不可見,外界只能看到各個(gè)時(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)確地描述語音,只考慮前一音的影響的稱為bi- phone,考慮前一音和后一音的影響的稱為tri-phone。 語言模型主要分為規(guī)則模型和統(tǒng)計(jì)模型兩種。統(tǒng)計(jì)語言模型是用概率統(tǒng)計(jì)的方法來揭示語言單位內(nèi)在的統(tǒng)計(jì)規(guī)律,其中n-gram簡單有效,被廣泛使用。語言模型的性能通常用交叉熵和復(fù)雜度(perplexity)來衡量。交叉熵的意義是用該模型對文本識別的難度,或者從壓縮的角度來看,每個(gè)詞平均要用幾個(gè)位來編碼。復(fù)雜度的意義是用該模型表示這一文本平均的分支數(shù),其倒數(shù)可視為每個(gè)詞的平均概率。平滑是指對沒觀察到的n元組合賦予一個(gè)概率值,以保證詞序列總能通過語言
12、模型得到一個(gè)概率。語音識別系統(tǒng)選擇識別基元的要求是,有準(zhǔn)確的定義,能得到足夠數(shù)據(jù)進(jìn)行訓(xùn)練,具有一般性。英語通常采用上下文相關(guān)的音素建模,漢語的協(xié)同發(fā)音不如英語嚴(yán)重,可以采用音節(jié)建模。系統(tǒng)所需的訓(xùn)練數(shù)據(jù)大小與模型復(fù)雜度有關(guān)。模型設(shè)計(jì)得過于復(fù)雜以至于超出了所提供的訓(xùn)練數(shù)據(jù)的能力,會(huì)使得性能急劇下降。以上介紹了實(shí)現(xiàn)語音信號識別的各個(gè)方面的技術(shù)。這些技術(shù)在實(shí)際使用中達(dá)到了較好的效果,但如何克服影響語音的各種因素還需要更深入地分析。目前聽寫機(jī)系統(tǒng)還不能完全實(shí)用化以取代鍵盤的輸入,但識別技術(shù)的成熟同時(shí)推動(dòng)了更高層次的語音理解技術(shù)的研究。由于英語與漢語有著不同的特點(diǎn),針對英語提出的技術(shù)在漢語中如何使用也是一
13、個(gè)重要的研究課題,而四聲等漢語本身特有的問題也有待解決。3. microsoft speech sdk簡介目前,微軟、ibm等公司都相繼推出了它們基于pc的語音識別產(chǎn)品。其中,微軟speech sdk完全支持簡體中文語音系統(tǒng)的開發(fā),是開發(fā)語音軟件的一個(gè)理想工具。它是基于com標(biāo)準(zhǔn)開發(fā)的,底層協(xié)議以com組件的形式完全獨(dú)立于應(yīng)用程序?qū)?,為?yīng)用程序設(shè)計(jì)人員屏蔽了復(fù)雜的語音技術(shù),充分體現(xiàn)了com的技術(shù)優(yōu)點(diǎn)。語音識別由識別引擎(recognition engine)管理,能實(shí)現(xiàn)從語音中識別出漢字;語音合成由語音合成引擎(tts engine)負(fù)責(zé),實(shí)現(xiàn)語音朗讀。程序員只需專注于自己的應(yīng)用,調(diào)用相關(guān)的語
14、音應(yīng)用程序接口(sapi)來實(shí)現(xiàn)語音功能,該語音框架主要靠sapi運(yùn)行來實(shí)現(xiàn)應(yīng)用程序與語音引擎之間的協(xié)作,而sapi提供各種接口來實(shí)現(xiàn)不同的語音功能,如識別、朗讀、訓(xùn)練等。(1) 語音識別引擎(isprecognizer)接口:用于創(chuàng)建語音識別引擎的實(shí)例。語音識別引擎對象有兩種:獨(dú)占( inprocrecognizer)的引擎和共享(sharedrecognizer)的引擎。獨(dú)占的引擎對象只能由創(chuàng)建的應(yīng)用程序使用,而共享的引擎可以供多個(gè)應(yīng)用程序共同使用。(2) 語音識別上下文(isprecocontext)接口:主要用于發(fā)送和接收與語音識別相關(guān)的消息通知,創(chuàng)建語法規(guī)則對象。(3) 語法規(guī)則(i
15、sprecogrammar)接口:定義引擎需要識別的具體內(nèi)容,用于創(chuàng)建、載入和激活識別用的語法規(guī)則。而語法規(guī)則定義了期望識別的單詞、短語和句子,通常有兩種語法規(guī)則:聽寫語法(dictation grammer)和命令控制語法(command and control grammer)。命令控制語法主要用于識別用戶在語法文件里自定義的一些特定的命令詞匯和句子,這些語法規(guī)則以xml文件的格式編寫,通過(isprecogrammar)接口載入,并激活。(4) 識別結(jié)果(ispphrase)接口:用于獲取識別的結(jié)果,包括識別的文字,識別的語法規(guī)則等。(5) 語音合成(ispvoice)接口:主要功能是通
16、過訪問tts引擎實(shí)現(xiàn)文本到語音的轉(zhuǎn)換,從而使電腦會(huì)說話。微軟在office和vista中都應(yīng)用了自己開發(fā)的語音識別引擎,微軟語音識別引擎的使用是完全免費(fèi)的,所以產(chǎn)生了許多基于微軟語音識別引擎開發(fā)的語音識別應(yīng)用軟件,例如語音游戲大師語音控制專家芝麻開門警衛(wèi)語音識別系統(tǒng)等等軟件。下面將通過一個(gè)例子,介紹如何用speech sdk 創(chuàng)建語音識別程序。二、 方案論證microsoft speech sdk 中包含著一系列支持com(組件對象模型)組件的語音自動(dòng)控制接口,只要具備支持ole(對象連接與嵌入)自動(dòng)控制的通用語言就可實(shí)現(xiàn)該類語音識別應(yīng)用程序的開發(fā)。因此在vb 環(huán)境下實(shí)現(xiàn)語音識別程序的開發(fā)就變
17、得十分簡單。在visual basic 環(huán)境下,利用事件驅(qū)動(dòng)的編程機(jī)制、易用的可視化設(shè)計(jì)工具,使用windows 內(nèi)部的廣泛應(yīng)用程序接口(api)函數(shù),以用動(dòng)態(tài)鏈接庫(dll)、對象的鏈接與對象連接與嵌入(ole)、開放式數(shù)據(jù)連接(odbc)等技術(shù),可以高效、快速地開發(fā)windows 環(huán)境下功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件。microsoft speech sdk的語音應(yīng)用程序接口結(jié)構(gòu)如圖2.1所示:應(yīng)用程序(application)應(yīng)用程序(application)sapi 運(yùn)行(sapi runtime)識別引擎(recognition engine)語音合成引擎(tts engine)a
18、piddi 圖2.1 microsoft speech sdk結(jié)構(gòu)該語音程序框架主要靠sapi運(yùn)行來實(shí)現(xiàn)應(yīng)用程序與語音引擎之間的協(xié)作,而sapi提供各種接口來實(shí)現(xiàn)不同的語音功能,如識別、朗讀、訓(xùn)練等。根據(jù)microsoft speech sdk的上述特征及其com接口特征,設(shè)計(jì)語音識別程序的結(jié)構(gòu)框圖如圖2.2所示:開始載入窗口、sapi初始化接受語音信號執(zhí)行相應(yīng)命令聽寫語句是否是孤立詞是否選擇聽寫是否選擇朗讀朗讀是否否否是是圖2.2 語音識別程序框圖如程序框圖2.2所示,可將程序劃分為四個(gè)子程序:窗口載入及初始化、語音命令子程序、聽寫子程序、朗讀子程序。程序以sapi對語音信號的采集和識別為中
19、心,通過com組件的對外接口與sapi相連接,接受speech sdk對語音信號的處理結(jié)果。程序通過四個(gè)子程序?qū)邮盏降奶幚斫Y(jié)果進(jìn)行加工處理以實(shí)現(xiàn)用戶需求。三、 程序設(shè)計(jì)根據(jù)程序框圖所示,將程序設(shè)計(jì)為四個(gè)子程序:窗口載入及初始化、語音命令子程序、聽寫子程序、朗讀子程序。下面對四個(gè)子程序進(jìn)行具體設(shè)計(jì)實(shí)現(xiàn)。1. 窗口載入及初始化子程序窗口載入及初始化子程序的任務(wù)是,打開程序窗口并完成對程序的初始化。程序的初始化包括創(chuàng)建一個(gè)語音識別引擎的實(shí)例和定義一些參數(shù)等。設(shè)計(jì)窗口載入及初始化子程序的程序框圖如圖3.1所示:開始載入窗口創(chuàng)建一個(gè)語音識別實(shí)例創(chuàng)建并導(dǎo)入語法規(guī)則結(jié)束圖3.1 窗口載入及初始化子程序框圖
20、編寫程序時(shí),載入窗口命令為:private sub form1_load( ) handles mybase.load然后使用命令rc = new spsharedrecocontext創(chuàng)建語音識別引擎實(shí)例。創(chuàng)建語法規(guī)則,并導(dǎo)入語法規(guī)則詞匯表的命令為:mygrammar = rc.creategrammar()mygrammar.cmdloadfromfile(sol.xml, slostatic)mygrammar.cmdsetruleidstate(0, speechrulestate.sgdsactive)2. 語音命令子程序語音命令子程序的任務(wù)是將收到的語音內(nèi)容與語法規(guī)則中的內(nèi)容進(jìn)行對
21、比,查找出語法規(guī)則中包含的命令,并執(zhí)行相應(yīng)的命令。其框圖設(shè)計(jì)如圖3.2所示:開始查詢孤立詞是否是孤立詞執(zhí)行命令否是是否為命令模式否是圖3.2 語音命令子程序框圖根據(jù)命令子程序框圖的設(shè)計(jì),設(shè)計(jì)程序用if 語句判斷用戶是否選擇了命令模式,例如:if i = true then當(dāng)收到的語音信號是語法規(guī)則詞匯表中的詞時(shí),使用select case 語句調(diào)用相應(yīng)程序,執(zhí)行相應(yīng)的命令。3. 聽寫子程序聽寫子程序的任務(wù)是將收到的語音內(nèi)容轉(zhuǎn)換為文本內(nèi)容,達(dá)到使用語音輸入文本的目的。其框圖設(shè)計(jì)如圖3.3所示:開始聽寫是否為聽寫模式否是圖3.3 聽寫子程序框圖由聽寫子程序框圖設(shè)計(jì):判斷用戶是否選擇了聽寫模式,采用
22、同命令子程序中一樣的方法,也用if 語局。當(dāng)選擇了聽寫模式后,使用text=result.phraseinfo.gettext命令,將語音信號轉(zhuǎn)換為文本內(nèi)容輸入文本框。4. 朗讀子程序聽寫子程序的任務(wù)是將文本框中的內(nèi)容轉(zhuǎn)換為語音內(nèi)容讀出。其框圖設(shè)計(jì)如圖3.4所示:開始創(chuàng)建tts實(shí)例朗讀文本語音內(nèi)容轉(zhuǎn)換到文本圖3.4 朗讀子程序框圖編寫朗讀子程序時(shí),首先使用“strdata = strconv(textbox1.text, vbstrconv.simplifiedchinese, 2052)”語句,將文本轉(zhuǎn)換為語音信號。然后使用“rc.voice.speak(strdata)”語句,播放語音內(nèi)容
23、。這樣一個(gè)tts子程序便完成了。5. 預(yù)處理及語法規(guī)則用于實(shí)現(xiàn)程序功能的四個(gè)子程序如上所述,設(shè)計(jì)完成。此外除了上述四個(gè)子程序外,還要在程序開始處加上一段全局變量聲明語句,并編寫一個(gè).xml語法規(guī)則項(xiàng)才能完成程序設(shè)計(jì)。程序開始處的變量聲明有:程序庫引用(imports speechlib)、語音事件聲明(public withevents rc as spsharedrecocontext)、語法變量聲明(public mygrammar, b as ispeechrecogrammar)、其他全局變量聲明(dim i, j as boolean)等。建立語法規(guī)則,即用戶詞匯表。用戶詞匯表即用戶
24、對語音識別程序所說命令的內(nèi)容,用戶對語音識別程序所說的詞或詞組所組成的集合便構(gòu)成用戶詞匯表。用戶對語音識別程序的控制只能通過用戶詞匯表中詞或詞組來實(shí)現(xiàn),用戶詞匯表中的內(nèi)容將會(huì)與語音識別程序中的相關(guān)命令對應(yīng)而最終轉(zhuǎn)化為可供應(yīng)用程序執(zhí)行的控制命令。用戶詞匯表中的內(nèi)容也是用戶在進(jìn)行音頻信息輸入命令時(shí)唯一可被輸入的信息,音頻輸入命令信息的內(nèi)容必須在詞匯表所覆蓋的內(nèi)容范圍之內(nèi),一旦其超出詞匯表范圍,應(yīng)用程序?qū)o法識別。另外,詞匯表中的具體詞或詞組的內(nèi)容一般與其所要實(shí)現(xiàn)的控制命令相對應(yīng),如在詞匯表中定義“stop”這個(gè)詞時(shí),一般是要實(shí)現(xiàn)關(guān)閉程序的命令,當(dāng)用戶向應(yīng)用程序說出“stop”時(shí),應(yīng)用程序便可執(zhí)行關(guān)
25、閉命令?,F(xiàn)編寫語法規(guī)則.xml文件內(nèi)容如下: 開始 上網(wǎng) 結(jié)束 暫停 綜上所述,子程序設(shè)計(jì)完畢。接著就可編寫語音識別程序,首先在vb中創(chuàng)建一個(gè)項(xiàng)目,并為項(xiàng)目建立一個(gè)windows窗口,再在窗口中添加一些控件。然后將上述的各子程序和語法規(guī)則編寫完成,程序大體上便編輯完成了。然后在引用項(xiàng)中為項(xiàng)目添加microsoft speech object library,最后編譯項(xiàng)目,產(chǎn)生可執(zhí)行.exe文件,這樣一個(gè)語音識別程序便編寫完成了。四、 性能測試程序編寫完成后,還需要測試該應(yīng)用程序,以判斷其是否符合設(shè)計(jì)要求,達(dá)到用戶需求,以及實(shí)現(xiàn)效果是否良好。1 程序界面載入測試首先載入窗口。載入時(shí)程序會(huì)用語音報(bào)
26、告now system started,載入后窗口界面如圖4.1所示:圖4.1 界面載入測試如上圖所示,窗口載入成功,界面符合設(shè)計(jì),包含了一個(gè)文本框用于與用戶進(jìn)行交互,一組二選一按鈕用于選擇語音識別模式,一個(gè)命令按鈕用于下達(dá)朗讀命令。2 孤立詞識別測試下面進(jìn)行程序的孤立詞識別性能測試,首先按照窗口界面上的提示,選擇語音識別模式為命令模式(選擇cmd),然后對麥克風(fēng)說出命令信息,該語音識別程序即可執(zhí)行相關(guān)操作來實(shí)現(xiàn)用戶的預(yù)定義要求。如當(dāng)發(fā)出“網(wǎng)絡(luò)”命令后,打開網(wǎng)絡(luò),如圖4.2所示:圖4.2 命令模式示例在本語音識別程序的命令模式中還可執(zhí)行其他一些用戶命令,如暫停、結(jié)束、打開播放器等。由于語音信號
27、自身就有難識別,模糊性強(qiáng),噪音干擾大等特點(diǎn),再有語音識別技術(shù)還不是十分完善,所以語音識別存在不小的錯(cuò)誤率?,F(xiàn)在對該語音識別程序的識別性能進(jìn)行測試,檢測其對語音輸入的孤立詞識別錯(cuò)誤率如何。首先對程序進(jìn)行一些修改,以方便進(jìn)行測試:程序在接到語音信號后,會(huì)將收到的信號轉(zhuǎn)換為文本信息在文本框中顯示;語法規(guī)則詞匯表設(shè)為包含:金、木、水、火、土、乾、坤、坎、澤、開始、暫停、網(wǎng)絡(luò)等12個(gè)詞,以方便測試;并且識別收到的信息是孤立詞后,將不再執(zhí)行相應(yīng)的命令。測試效果如圖4.3所示:圖4.3 命令模式測試效果在上圖中,一共輸入了57個(gè)孤立詞,其中程序正確識別了57個(gè),錯(cuò)誤9個(gè)。按照示例所述,再進(jìn)行行了2次測試。測
28、試結(jié)果如表4.1所示:輸入詞數(shù)正確識別數(shù)正確率測試一574884.2測試二635181.0測試三594779.7總和17914681.6表4.1 孤立詞測試結(jié)果由上表可得:總共輸入詞179個(gè),其中146個(gè)被程序準(zhǔn)確識別,該語音識別程序?qū)铝⒃~識別的準(zhǔn)確率為81.6,識別率偏低但基本符合程序設(shè)計(jì)要求。3 聽寫模式測試接著選擇聽寫模式(選擇write),在此模式下,用戶所說的話將會(huì)轉(zhuǎn)換為文本顯示在文本框中,實(shí)現(xiàn)聽寫要求。如圖4.4所示:圖4.4 聽寫模式示例在聽寫模式下語音識別的準(zhǔn)確率比命令模式更小,錯(cuò)誤跟多,所以語音識別現(xiàn)在還更適合用于輸入固定此表中的內(nèi)容,而不太適合用于聽寫輸入。在聽寫完成后,
29、可點(diǎn)擊read按鈕,程序便會(huì)將文本框中的內(nèi)容朗讀出來。綜上,該語音識別程序能夠正常運(yùn)行,且性能滿足設(shè)計(jì)要求,能夠?qū)崿F(xiàn)語音識別功能。五、 結(jié)論使用vb,運(yùn)用microsoft speech sdk開發(fā)語音識別程序同開發(fā)一般應(yīng)用程序一樣具有簡單易用,開發(fā)周期短,出錯(cuò)率低,程序可讀性強(qiáng)等諸多優(yōu)點(diǎn)。然而其缺點(diǎn)也是很明顯的,這主要表現(xiàn)在vb 語言自身的缺點(diǎn)上,如vb不是真正的面向?qū)ο缶幊陶Z言,沒有自己的類庫,和系統(tǒng)打交道難,程序員對資源的分配所能做的很有限,不支持指針,將太多的東西“隱蔽”起來,不能知道程序的真正工作流程等等。此外,vb 缺乏工程支持,難以實(shí)現(xiàn)大型工程的開發(fā)。但vb 有易學(xué)易用、開發(fā)方便
30、,應(yīng)用范圍廣,使用人數(shù)多等優(yōu)勢,也十分有利于語音識別應(yīng)用程序的進(jìn)一步發(fā)展和推廣。在以上實(shí)例中只用到簡單的語音識別同應(yīng)用程序的接口間的操作,而vb 語言同語音識別引擎的良好接口的強(qiáng)大功能在此時(shí)并未真正體現(xiàn)出來,在此基礎(chǔ)上開發(fā)出更多更實(shí)用的用語音識別應(yīng)用程序,甚至是用語音識別控制計(jì)算機(jī)硬件的應(yīng)用程序都是不難實(shí)現(xiàn)的。六、 課設(shè)體會(huì)及合理化建議通過此次課程設(shè)計(jì),我學(xué)習(xí)到了vb編程的基礎(chǔ)知識,vb2010的使用發(fā)法,還用microsoft speech sdk的運(yùn)用,我學(xué)到的這些知識使我受益頗多,也必將有益于我今后的學(xué)習(xí)、工作。在為課設(shè)學(xué)習(xí)各種知識的過程中,我不僅加深了對以往知識的認(rèn)識,還還學(xué)到了新的學(xué)
31、習(xí)方法、研究方法。并且在學(xué)習(xí)開發(fā)語音識別程序的過程中,我還認(rèn)識到,程序開發(fā)工作只有在實(shí)踐中才能摸索出更多先進(jìn)的技術(shù)手段來為開發(fā)程序服務(wù)。通過利用先進(jìn)完善的技術(shù)可以縮短應(yīng)用程序的開發(fā)周期, 同時(shí)提高程序的可擴(kuò)展性和可維護(hù)性。同時(shí)在課設(shè)過程中需要學(xué)習(xí)各種新的、陌生的知識,學(xué)習(xí)量很大,內(nèi)容很龐雜,所以學(xué)習(xí)中不僅離不了先進(jìn)檢索方法的支持,同時(shí)也離不開老師的指導(dǎo)和幫助,所以十分感謝課設(shè)指導(dǎo)老師*老師的指導(dǎo)幫助。參考文獻(xiàn)1 李書琴等主編. visual basic程序設(shè)計(jì)基礎(chǔ). m北京:清華大學(xué)出版社,2006年2 bill evjen等編著. vb.net高級編程. m北京:清華大學(xué)出版社,2005年3
32、 李禹才, 左友東, 鄭秀清 等. 基于speech sdk 的語音控制應(yīng)用程序的設(shè)計(jì)與實(shí)現(xiàn)j.計(jì)算機(jī)應(yīng)用, 20044易克初,田斌,付強(qiáng)編著 .語音信號處理 .北京:國防工業(yè)出版社,20005趙力著.語音信號處理.北京:機(jī)械工業(yè)大學(xué)出版社, 20076蔡蓮紅,黃德智,蔡銳現(xiàn)代語音技術(shù)基礎(chǔ)與應(yīng)用m清華大學(xué)出版社,2003附錄 i 源程序option explicit onimports speechlibpublic class form1public withevents rc as spsharedrecocontext dim recognizer as spinprocrecogniz
33、er 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 = createobject(sapi.spsharedrecognizer) mygrammar = rc.cr
34、eategrammar() 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, 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 textbox1.text = result.phraseinfo.gettext rc.voice.speak(now iam listening your comma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濟(jì)南市考編試題及答案
- 2025年錳礦與采選產(chǎn)業(yè)鏈優(yōu)化與資源高效利用深度分析報(bào)告
- 2025湖南高速養(yǎng)護(hù)工程有限公司招聘勞務(wù)派遣員工55人(長期)筆試參考題庫附帶答案詳解
- 2025年黑龍江省煙草專賣局(公司)公開招聘筆試參考題庫附帶答案詳解
- 2025年福建省晉江人力資本有限公司招聘1人(第一批)筆試參考題庫附帶答案詳解
- 2025年浙江杭州市淳安縣國有企業(yè)招聘64人筆試參考題庫附帶答案詳解
- 電地焊工考試試題及答案
- 汽車美容師的職業(yè)發(fā)展前景試題及答案
- 鎮(zhèn)江丹陽市消防救援大隊(duì)招錄政府專職消防隊(duì)員筆試真題2024
- 秦農(nóng)銀行招聘筆試真題2024
- 空調(diào)改造安裝合同
- 2025年中考道德與法治專題復(fù)習(xí):非選擇題答題指導(dǎo)與答題模板 課件67張
- 患者隱私保護(hù)培訓(xùn)課件
- 四川涼山州人民政府辦公室考調(diào)所屬事業(yè)單位工作人員2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 分包單位負(fù)責(zé)人崗位責(zé)任制度模版(3篇)
- 2023年高考化學(xué)試卷(河北)(解析卷)
- 2025年國家信息中心招聘15人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 基于STM32單片機(jī)的人體感應(yīng)燈設(shè)計(jì)
- 教學(xué)課件英語人教版2024版七年級初一上冊Unit?1?You?and?Me?Section?A1a1d2
- 學(xué)前兒童語言教育與活動(dòng)指導(dǎo)-期末試卷(二)
- 畜牧業(yè)邊境管理辦法
評論
0/150
提交評論