基于MATLAB的語音識別DTW算法設(shè)計(jì)_第1頁
基于MATLAB的語音識別DTW算法設(shè)計(jì)_第2頁
基于MATLAB的語音識別DTW算法設(shè)計(jì)_第3頁
基于MATLAB的語音識別DTW算法設(shè)計(jì)_第4頁
基于MATLAB的語音識別DTW算法設(shè)計(jì)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、目錄1概述21.1研究的目的和意義21.2國內(nèi)外發(fā)展?fàn)顩r21.2.1國外研究歷史及現(xiàn)狀31.2.3國內(nèi)研究歷史及現(xiàn)狀42語音識別系統(tǒng)的概述43 MATLAB中的語音信號的采集43.1 wavrecord函數(shù)43.2 wavplay函數(shù)64語音信號的端點(diǎn)檢測64.1語音信號端點(diǎn)檢測的流程64.1.1短時能量84.1.2過零率的計(jì)算94.1.3雙門限端點(diǎn)檢測115語音識別參數(shù)提取125.1 MFCC的基本原理126特定人語音識別算法-DTW算法136.1DTW算法原理146.2DTW算法流程及實(shí)驗(yàn)結(jié)果167 GUI界面的設(shè)計(jì)177.1圖形用戶界面設(shè)計(jì)工具的啟動177.3測試與分析18總結(jié)20致謝2

2、1參考文獻(xiàn)22附件23基于MATLAB的特定人語音識別算法設(shè)計(jì)摘要在高度發(fā)達(dá)的社會,語言是一種人類交流最方便的,最速度的信息,在高度發(fā)達(dá)的社會中,用數(shù)字化的方式舉行語音的保存、傳遞、判別、加強(qiáng)和合成等是全部數(shù)字化通信過程中最基礎(chǔ)、最重要的組成的一部分。由于人類進(jìn)入信息社會節(jié)奏加快, 語音信號處理方面的知識被越來越多的地方需要。本設(shè)計(jì)主要在MATLAB平臺下先語音信號的端點(diǎn)檢測、預(yù)處理,然后提取特征參數(shù),建立兩個模塊,一個為參考模塊,一個為測試模塊,然后通過動態(tài)時間歸整技術(shù)(DTW)算法進(jìn)行匹配,算出匹配結(jié)果。最后在用戶開發(fā)界面(GUI界面)直觀地呈現(xiàn)出來。本次設(shè)計(jì)錄制010的數(shù)字做為參考庫(m

3、odel),測試庫(test)中為需要測試及識別的語音,0的序號為11,19的數(shù)字以相應(yīng)數(shù)字做為文件名的命名。關(guān)鍵詞:端點(diǎn)檢測; MFCC特征提取;語音識別;DTW算法1概述1.1研究的目的和意義隨著計(jì)算機(jī)技術(shù)和科技成果的的飛速發(fā)展,人們早已不再滿足于讓計(jì)算機(jī)做一些簡單的科學(xué)計(jì)算和運(yùn)算,而是向它提出了更高的要求,即要求我們的計(jì)算機(jī)向智能化方向發(fā)展,于是人們便開始了第五代計(jì)算機(jī)(即智能計(jì)算機(jī))的研究。計(jì)算機(jī)人工智能方面的研究內(nèi)容有很多,諸如計(jì)算機(jī)知識處理、專家系統(tǒng)、視覺、計(jì)算機(jī)語音等。其中人機(jī)自然語言的接口是一個非常重要的部分。它要求人工智能計(jì)算機(jī)能說會聽,應(yīng)此要求出現(xiàn)了語音識別和語音合成兩門學(xué)

4、科。語音識別是人機(jī)通信的關(guān)鍵技術(shù)之一,也是一種最為理想的人機(jī)通信方式。 對于許多應(yīng)用來說,一個語音識別系統(tǒng)只要一組詞匯或命令就能為用戶提供一個有效的工具,因此簡單有效的特定人語音識別系統(tǒng)就能滿足要求。同時特定人語音識別系統(tǒng)具有廣闊的應(yīng)用前景,比如工業(yè)命令控制、計(jì)算機(jī)控制、家庭電器服務(wù)、個人移動通信呼叫等,尤其當(dāng)人手已被占用或無法使用的情況下必須進(jìn)行聲音控制時,更可以起到不可替代的作用,這項(xiàng)技術(shù)將給人們的日常生活帶來極大的便利。1.2國內(nèi)外發(fā)展?fàn)顩r1.2.1國外研究歷史及現(xiàn)狀國外的語音識別方面的研究工作可以追溯到20世紀(jì)50年代AT&T貝爾實(shí)驗(yàn)室的Audry系統(tǒng),它是第一個可以識別十個英文數(shù)字的

5、語音識別系統(tǒng)。但是真正取得實(shí)質(zhì)性進(jìn)展,并將其作為一個重要的課題開展研究則是在60年代末70年代初。這首先是因?yàn)橛?jì)算機(jī)技術(shù)的發(fā)展為語音識別的實(shí)現(xiàn)提供了硬件和軟件的可能,更重要的是語音信號線性預(yù)測編碼(LPC)技術(shù)和動態(tài)時間規(guī)整(DTW)技術(shù)的提出,有效的解決了語音信號的特征提取和不等長匹配問題。實(shí)驗(yàn)室語音識別研究的巨大突破產(chǎn)生于20世紀(jì)80年代末:人們終于在實(shí)驗(yàn)室突破了大詞匯量、連續(xù)語音和非特定人這三大障礙,第一次把這三個特性都集成在一個系統(tǒng)中,比較典型的是卡耐基梅隆大學(xué)(CarnegieMellonUniversity)的Sphinx系統(tǒng),它是第一個高性能的非特定人、大詞匯量連續(xù)語音識別系統(tǒng)。

6、這一時期,語音識別研究進(jìn)一步走向深入,其顯著特征是隱馬爾可夫模型(HMM)模型和人工神經(jīng)元網(wǎng)絡(luò)(ANN)在語音識別中的成功應(yīng)用。HMM模型的廣泛應(yīng)用應(yīng)歸功于AT&TBell實(shí)驗(yàn)室Rabiner等科學(xué)家的努力,他們把原本艱澀的HMM純數(shù)學(xué)模型工程化,從而為更多研究者了解和認(rèn)識,從而使統(tǒng)計(jì)方法成為了語音識別技術(shù)的主流。20世紀(jì)90年代前期,許多著名的大公司如IBM、蘋果、AT&T和NTT都對語音識別系統(tǒng)的實(shí)用化研究投以巨資。語音識別技術(shù)有一個很好的評估機(jī)制,那就是識別的準(zhǔn)確率,而這項(xiàng)指標(biāo)在20世紀(jì)90年代中后期實(shí)驗(yàn)室研究中得到了不斷的提高。比較有代表性的是:IBM公司推出的ViaVoice和Dra

7、gonSystem公司的NaturallySpeaking,Nuance公司的NuanceVoicePlatform語音平臺,Microsoft的Whisper,Sun的VoiceTone等。其中IBM公司于1997年開發(fā)出漢語ViaVoice語音識別系統(tǒng),次年又開發(fā)出可以識別上海話、廣東話和四川話等地方口音的語音識別系統(tǒng)ViaVoice98。它帶有一個32,000詞的基本詞匯表,可以擴(kuò)展到65,000詞,還包括辦公常用詞條,具有“糾錯機(jī)制”,其平均識別率可以達(dá)到95%。該系統(tǒng)對新聞?wù)Z音識別具有較高的精度,是目前具有代表性的漢語連續(xù)語音識別系統(tǒng)。1.2.3國內(nèi)研究歷史及現(xiàn)狀我國語音識別研究工作

8、起步于五十年代,但近年來發(fā)展很快。研究水平也從實(shí)驗(yàn)室逐步走向?qū)嵱?。?987年開始執(zhí)行國家863計(jì)劃后,國家863智能計(jì)算機(jī)專家組為語音識別技術(shù)研究專門立項(xiàng),每兩年滾動一次。我國語音識別技術(shù)的研究水平已經(jīng)基本上與國外同步,在漢語語音識別技術(shù)上還有自己的特點(diǎn)與優(yōu)勢,并達(dá)到國際先進(jìn)水平。清華大學(xué)電子工程系語音技術(shù)與專用芯片設(shè)計(jì)課題組,研發(fā)的非特定人漢語數(shù)碼串連續(xù)語音識別系統(tǒng)的識別精度,達(dá)到94.8%(不定長數(shù)字串)和96.8%(定長數(shù)字串)。在有5%的拒識率情況下,系統(tǒng)識別率可以達(dá)到96.9%(不定長數(shù)字串)和98.7%(定長數(shù)字串),這是目前國際最好的識別結(jié)果之一,其性能已經(jīng)接近實(shí)用水平。研發(fā)的

9、5000詞郵包校核非特定人連續(xù)語音識別系統(tǒng)的識別率達(dá)到98.73%,前三選識別率達(dá)99.96%;并且可以識別普通話與四川話兩種語言,達(dá)到實(shí)用要求。中科院自動化所及其所屬模式科技(Pattek)公司2002年發(fā)布了他們共同推出的面向不同計(jì)算平臺和應(yīng)用的“天語”中文語音系列產(chǎn)品PattekASR,結(jié)束了中文語音識別產(chǎn)品自1998年以來一直由國外公司壟斷的歷史。2語音識別系統(tǒng)的概述語音識別系統(tǒng)的總體結(jié)構(gòu)框圖如圖2-1所示。從圖中可以看出語音識別系統(tǒng)的本質(zhì)就是一種模式識別系統(tǒng),它也包括特征提取、模式匹配、參考模式庫等基本單元。由于語音信號是一種典型的非平穩(wěn)信號,加之呼吸氣流、外部噪音、電流干擾等使得語

10、音信號不能直接用于提取特征,而要進(jìn)行前期的預(yù)處理。首先通過語音的錄制作為輸入信號,輸入的模擬語音信號要進(jìn)行預(yù)處理,包括預(yù)濾波、采樣和量化、加窗、端點(diǎn)檢測、預(yù)加重等等。經(jīng)過預(yù)處理后,接下來就是重要的一環(huán):特征參數(shù)提取,在訓(xùn)練階段,將特征參數(shù)進(jìn)行一定的處理之后,為每個詞得到一個模型,保存為模板庫。在識別階段,語音信號經(jīng)過相同的通道得到語音參數(shù),生成測試模板,與參考模板進(jìn)行匹配,將匹配分?jǐn)?shù)最高的參考模板作為識別結(jié)果。訓(xùn)練識別參考 模塊識別結(jié)果語音輸入預(yù)處理特征提取測度估計(jì)模板庫識別決策專家知識圖2.1 語音識別總體架構(gòu)3 MATLAB中的語音信號的采集語音信號的采集也可以使用Windows中的“錄音

11、機(jī)”錄制成.wav格式。而在MATLAB環(huán)境中語音信號的采集可使用wavrecord函數(shù)錄制,然后使用wavread函數(shù)讀入,wavplay函數(shù)播放,uiputfile函數(shù)保存。3.1 wavrecord函數(shù)wavrecord的用法:y = wavrecord(n,Fs);y = wavrecord(n,Fs,ch);其中n為樣本個數(shù),F(xiàn)s為頻率,默認(rèn)值為11025,本設(shè)計(jì)采用16000,ch為通道數(shù),默認(rèn)為1,若為2,則表示采樣為雙聲道立體聲數(shù)據(jù),本設(shè)計(jì)ch為1Audiorecorder函數(shù)也可以用來錄制音頻,但在本次設(shè)計(jì)的操作上,通常采用的語音格式以wav格式為主,在保存語音上,uiput

12、file能更好的與wavrecord相結(jié)合,所以用wavrecord比較好。3.2 wavplay函數(shù)wavplay函數(shù)的用法:wavplay(y,Fs)其中y為輸入信號,F(xiàn)s為頻率sound函數(shù)與soundsc函數(shù)也可以用來播放音頻,雖然它們可以在任何操作系統(tǒng)平臺上使用,而wavplay只支持Windows平臺。但因?yàn)樵谡Z音識別中,我們通常采用的語音格式為wav格式,而wavplay函數(shù)與wavrecord函數(shù)的配合能更好的操作運(yùn)行起來,兩者結(jié)合共同使用。舉個例子:Fs=16000;y=wavrecord(5*Fs,Fs,int16);wavplay(y,Fs);該段代碼意思為:通過Wind

13、ows的錄音設(shè)備以16000Hz的采樣頻率錄制5秒的數(shù)據(jù),采樣精度為16位,存儲格式為int16;隨后通過Windows的音頻設(shè)備進(jìn)行播放, 如圖3-1所示為采集到的信號波形圖。圖3-1 語音信號波形 在MATLAB平臺處理語音信號時,可以通過wavplay函數(shù)回放錄制好了的語音,次函數(shù)具有快速檢驗(yàn)數(shù)據(jù)和計(jì)算可靠性。但是在錄音的時候,wavrecord函數(shù)有很大的局限性,在錄制語音的時候必須事先制定語音的時間。如果在指定的時間內(nèi)用戶沒有說話,就會漏掉全部或部分的語音數(shù)據(jù),操作起來不方便。并且,在一個語音識別系統(tǒng)中,程序會自動判斷當(dāng)前是用戶在說話還是靜音,如果檢測用戶有發(fā)出語音,那么就會保存該段

14、語音,然后將刪除掉頭部和尾部的靜音部分,這一功能被稱為語音信號的端點(diǎn)檢測。4語音信號的端點(diǎn)檢測無論是測試和建立模板階段還是在識別階段,都先采用端點(diǎn)檢測算法確定語音的起點(diǎn)和終點(diǎn)。語音端點(diǎn)檢測是指用計(jì)算機(jī)數(shù)字處理技術(shù)從包含語音的一段信號中找出起始點(diǎn)及結(jié)束點(diǎn),從而只存儲和處理有效語音信號。語音端點(diǎn)檢測是語音分析和識別中的一個重要環(huán)節(jié),其算法的優(yōu)劣在某種程度上也直接決定了整個語音識別系統(tǒng)的優(yōu)劣。4.1語音信號端點(diǎn)檢測的流程語音信號輸入設(shè)置短時能量高、低門限設(shè)置短時過零率高、低門限計(jì)算過零率計(jì)算短時能量進(jìn)入狀態(tài)status開始檢測調(diào)整能量門限歸一化語音端點(diǎn)檢測流程如圖4-1所示。圖4-1端點(diǎn)檢測算法流程

15、圖(1)歸一化:為了后面處理方便,通常將讀取的語音信號進(jìn)行歸一化到-1,1(2)短時能量的作用: 可以較好地區(qū)分出濁音和靜音。(3)短時過零的作用:檢測清音。由于其能量較小,在短時能量檢測中會因?yàn)榈陀谀芰块T限而被誤判為靜音;短時過零率則可以從語音中區(qū)分出靜音和清音(如“S”、“C”)(4)高低門限的作用:檢測之前,先為短時能量和過零率分別確定兩個門限。一個是比較低的門限,其數(shù)值比較小,對信號的變化能夠敏感,很容易就會被超過;而另一個是比較高的門限,數(shù)值要求比較大,信號要達(dá)到一定的強(qiáng)度,該門限才可能被超過。不過,低門限被超過未必就是語音的開始,有可能是時間很短的噪聲引起的。高門限被超過的話則可以

16、基本確定是由于語音信號引起的。在了解語音信號的端點(diǎn)檢測之前,我們先來了解一下語音信號的特征,如圖4-2可以看到,信號在大致0.480.84之間的采樣點(diǎn)屬于發(fā)音狀態(tài),在頭部跟尾部的信號幅度很低,屬于靜音或噪音。圖4-2 語音信號波形圖4-1中的圖(II)和圖(III)是信號波形的頭部放大圖,可以看出,在0.48之前的信號幅度很低,明顯屬于靜音,而從0.48開始,幅度開始增強(qiáng),并且有明顯的周期性,兩個尖峰之間的距離就是所謂的基音周期,也就是人的聲帶振動的周期。于是我們可以用信號的幅度作為特征來區(qū)分靜音和語音。這樣只要設(shè)定一個門限,當(dāng)語音信號幅度超過這個門限時,就當(dāng)作語音開始,當(dāng)幅度降低到門限以下時

17、就認(rèn)為語音結(jié)束。于是,我們可以采用短時能量來描述語音信號的幅度。比如,對于一個讀取到的語音信號x(n),n為采樣點(diǎn),首先對其進(jìn)行分幀,將語音信號分為每20-30ms一段,相鄰兩幀起始點(diǎn)之間的間隔為10ms,也就是說兩幀之間有10-20ms的交疊。由于采樣頻率的差異,幀長和幀移所對應(yīng)的實(shí)際采樣點(diǎn)數(shù)都不一樣。比如:一個8kHz的采樣頻率,30ms的幀長對應(yīng)240點(diǎn),記為N,而10ms的幀移對應(yīng)為80點(diǎn),記為M。 對應(yīng)第i幀,第n個樣本,與原始語音信號的關(guān)系為:xi(n)=x(i-1)M+n第i幀的語音信號的短時能量就可以用下面幾種算法得到:分別為絕對值的累加、平方累加和平方的對數(shù)的累加,以上任意一

18、種都可以。計(jì)算完每幀的短時能量,接著再設(shè)定一個門限,便實(shí)現(xiàn)一個簡單的檢測算法了。但是這種算法并不可靠,因?yàn)槿说陌l(fā)音有濁音和清音之分,濁音為聲帶振動發(fā)出,幅度高,周期性明顯,而清音則不會有聲帶的震動,只是靠空氣在口腔中的摩擦和沖擊,其短時能量一般比較小。如聲母“s”、“c”等的幅度就很低。所以基于短時能量的算法對這些語音信號幾乎無能為力。不過雖然不能用短時能量區(qū)分開,但是可以通過用一幀信號中波形穿越零電平的次數(shù)來描述這種變化的劇烈程度,稱為過零率,公式為:實(shí)際上,為了避免靜音段的隨機(jī)噪聲產(chǎn)生過高的過零率,通常都會先設(shè)定一個門限,當(dāng)前后兩個采樣的符號不同時,而且差值大于該門限的時候,就將過零率的數(shù)

19、值加1。4.1.1短時能量語音和噪聲的主要區(qū)別在它們的能量上,如圖4-3所示。語音段的能量比噪聲段的大,語音段的能量是噪聲段能量疊加語音聲波能量的和。對第n幀語音信號的短時能量En的定義為:xn為原樣本序列在窗函數(shù)所切取出的第n段短時語音,N為幀長。因?yàn)樵谟?jì)算時使用的是信號的平方,故將En作為一個度量語音幅度值變化的函數(shù)有一個缺陷,即對高電平非常敏感。因此在許多場合會將En用下式來代替:這樣就不會因?yàn)槿∑椒蕉斐尚盘柕男∪又档拇笕又党霈F(xiàn)較大差異。4.1.2過零率的計(jì)算短時過零表示一幀語音信號波形穿過橫軸(零電平)的次數(shù)。對于連續(xù)語音信號,過零意味著時域波形通過時間軸;而對于離散信號,如果相

20、鄰的取樣值的改變符號則稱為過零。過零率就是樣本改變符號次數(shù),定義語音信號)的短時過零率Zn為: 1 (x0)-1 (x0)sgnx= 清音的平均過零率要高于濁音,它的能量多集中在較高的頻率上,故短時過零率可以用來區(qū)分清音、濁音以及無聲。圖4-3(II)和圖4-4(II)分別為數(shù)字6數(shù)字4的短時過零率。從圖中可以看到清音S的過零率明顯高于其后的L音,有聲段過零率明顯高于無聲段,但在鼻音階段過零率迅速滑落到無聲水平而能量值則是緩慢下滑。在實(shí)際應(yīng)用時并不能直接計(jì)算過零率,因?yàn)樵跓o聲段噪聲使語音波形在0值附近來回?cái)[動,導(dǎo)致計(jì)算出的過零率和有聲段的區(qū)別并不十分明顯。比較簡單的解決方法是設(shè)定一個差的閾值,

21、使不僅xn(m)*xn(m-1) 。在本系統(tǒng)中經(jīng)多次試驗(yàn)取定=0.01。圖4-3 數(shù)字“6”的過零率波形圖圖4-4 數(shù)字“4”的過零率波形圖完成計(jì)算短時能量及過零率后,并調(diào)整好能量門限,接下里進(jìn)入到最關(guān)鍵的一步,即變量status分析,status可以分為四種狀態(tài):(1)在靜音段,如果能量或過零率超越了低門限,就應(yīng)該開始標(biāo)記起始點(diǎn),進(jìn)入過渡段。(2)在過渡段,由于參數(shù)的數(shù)值小,不能確定是否處于真正的語音段,所以只要當(dāng)兩個參數(shù)的數(shù)值都回落到低門限以下,就要將當(dāng)前狀態(tài)恢復(fù)到靜音狀態(tài),但是如果在過渡段中兩個參數(shù)中的任何一個超過了高門限,那么就可以確定進(jìn)入語音段了。(3)結(jié)束段。但是一些突發(fā)性的噪聲當(dāng)

22、然也會引起過零率或者短時能量的數(shù)值變高,但是都不能維持足夠長的時間,比如開關(guān)門窗、物體的碰撞等等引起的噪聲。這些都可以通過設(shè)置最短時間門限來判定。若當(dāng)前狀態(tài)假如處于語音段時,若兩個參數(shù)的數(shù)值降低到最低門限以下,并且總的記時長度小于最短的時間門限,那么我們認(rèn)為這一段為噪聲,然后繼續(xù)掃描接下來的語音數(shù)據(jù)。圖4-5為語音信號的端點(diǎn)檢測結(jié)果,豎線之間的部分為檢測出的語音有聲段。圖4-5 端點(diǎn)檢測結(jié)果4.1.3雙門限端點(diǎn)檢測雙門限端點(diǎn)檢測顧名思義需要兩級檢測,即短時能量檢測和短時過零率檢測。在開始檢測之前需要設(shè)定4個門限,即分別為短時能量和短時過零率各設(shè)置一個高門限和一個低門限:EHigh、ELow和Z

23、High、ZLow。整個語音端點(diǎn)檢測分為四部分:靜音段、過度段、語音段、結(jié)束段。在靜音段中如果能量或過零率有一個超過了其低門限,則認(rèn)為進(jìn)入了過度段。在過度段中,由于參數(shù)數(shù)值較小,還不能確定是否真的進(jìn)入語音段,只有兩個參數(shù)的其中一個超越了高門限才被認(rèn)為是進(jìn)入語音段。當(dāng)參數(shù)降至低門限則認(rèn)為進(jìn)入結(jié)束。此外,還有兩種可能會引起端點(diǎn)檢測的誤判:一是短時噪音引起的誤判,此時則需要引入最小語音長度門限進(jìn)行噪聲判定,即語音段時間小于一定數(shù)值則認(rèn)定為是噪聲,重新回到靜音段,本系統(tǒng)設(shè)為20ms;二是語音中字與字的時間空隙引起的誤判,此時需要設(shè)定最大靜音長度門限來降低識別的錯誤率,本系統(tǒng)所訓(xùn)練和識別的都為單字,故無

24、需設(shè)置此門限。在雙門限端點(diǎn)檢測中4個門限的設(shè)定至關(guān)重要,門限設(shè)定的好壞將直接影響端點(diǎn)檢測的結(jié)果。門限值的設(shè)置還沒有一個通用可靠的方法,需要根據(jù)經(jīng)驗(yàn)和特定環(huán)境進(jìn)行調(diào)整。常見的方法有最大值乘上某個比率、中位值乘上某個比率、最小值乘上某個常數(shù)、前三幀平均值乘上某個常數(shù)等。本系統(tǒng)中EHigh,ELow,ZHigh,ZLow的算法分別為:5語音識別參數(shù)提取語音信號進(jìn)行端點(diǎn)檢測及預(yù)處理后便會進(jìn)行MFCC(特征參數(shù)提?。?,特征參數(shù)提取的好壞對系統(tǒng)的性能和準(zhǔn)確率的影響非常大,對MFCC參數(shù)的要求如下:(1)提取具有很好區(qū)分性及能夠有效地代表語音特征的參數(shù)特;(2)各個參數(shù)之間有良好的獨(dú)立性;(3)為了確保語音

25、識別的實(shí)時實(shí)現(xiàn),計(jì)算特征參數(shù)方便,最好是有效的計(jì)算方法。5.1 MFCC的基本原理近年來,以一種能充分利用人耳的感知性能系數(shù)有這被大量而廣泛應(yīng)用,這個系數(shù)就是Mel尺度倒譜系數(shù)(MFCC)。在整個語音識別的過程中,MFCC參數(shù)為了方便建模及計(jì)算,是按照幀計(jì)算的。其特征提取的過程如圖5-1所示。x(n)預(yù)加重、分幀、加窗端點(diǎn)檢測DFT/FFTMel頻率濾波器組log對數(shù)能量DCT求倒譜圖5-1 MFCC特征提取及計(jì)算流程Mel頻率可以用如下公式表示:MFCC系數(shù)按每個幀計(jì)算后,我們必須通過FFT得到對應(yīng)幀信號的功率譜S(n),轉(zhuǎn)換為Mel頻率下的功率譜。這必須在計(jì)算先前在語音頻譜范圍之內(nèi)設(shè)置的幾

26、個帶通濾波器:Hm(n) m=0,1,M-1; n=0,1,N/2-1 M是濾波器的數(shù)目,通常取24;一幀語音信號的點(diǎn)數(shù)為N,通常取256,這樣計(jì)算FFT的方便。濾波器是一個簡單的三角形的頻域?yàn)V波器的中心頻率,F(xiàn)M是均勻地分布在頻率軸。語音信號幀長取為256個點(diǎn),包含了24個濾波器,本設(shè)計(jì)語音信號的采樣頻率設(shè)為8KHz。事先計(jì)算好帶通濾波器的系數(shù),再計(jì)算MFCC系數(shù)。MFCC特征系數(shù)的計(jì)算過程如下:(1)預(yù)處理:首先確定N為每一幀語音采樣點(diǎn),如:N=256,并對每一幀序列s(n)進(jìn)行分幀、預(yù)加重和加窗處理;(2)離散功率譜的計(jì)算:先對預(yù)處理的每一幀進(jìn)行離散傅里葉變換得到其頻譜,再通過模的平方計(jì)

27、算離散功率譜S(n),功率譜如圖5-2所示。圖5-2 DTW功率譜圖(3)將離散功率譜經(jīng)過濾波器組:將S(n)通過M個濾波組后得到功率值,也就是在各離散頻率點(diǎn)上將S(n)和Hm(n)的乘積并相加,得到M個參數(shù)Pm,m=0,1,M-1;(4)對數(shù)的計(jì)算:得到Lm,m=0,1,M-1;6特定人語音識別算法-DTW算法語音識別中較為經(jīng)典的一種算法是DTW算法(動態(tài)時間規(guī)整)。在詞,音節(jié)識別系統(tǒng),識別率和HMM算法的識別率幾乎是一樣的。但是相比之下HMM算法相當(dāng)?shù)膹?fù)雜,在識別階段需要進(jìn)行大量的反復(fù)計(jì)算語音數(shù)據(jù)才能得到模型參數(shù),但是DTW算法不需要反復(fù)計(jì)算,因此本設(shè)計(jì)采用DTW算法。6.1DTW算法原理

28、不管是在測試和建立參考模塊還是在識別階段,語音的起點(diǎn)和終點(diǎn)都必須用端點(diǎn)檢測來確定。已存入模板庫的各個詞條稱為參考模板,一個參考模板可以表示為,m為訓(xùn)練語音幀的時序標(biāo)號,m=1為起點(diǎn)語音幀,m=M為終點(diǎn)語音幀,因此M為該模板所包含的語音幀總數(shù),R(m)為第m幀語音特征矢量。所要識別的一個輸入詞條語音稱為測試模板,可表示為,n為測試語音幀的時序標(biāo)號,n=1為起點(diǎn)語音幀,n=N為終點(diǎn)語音幀,因此N為該模板所包含的語音幀總數(shù),T(n)為第n幀語音特征矢量。參考模板與測試模板一般采用相同類型的特征矢量(如MFCC系數(shù))、相同的幀長、相同的窗函數(shù)和相同的幀移。假設(shè)測試和參考模板分別用T和R表示,為了比較它

29、們之間的相似度,可以計(jì)算它們之間的距離DT,R,距離越小則相似度越高。為了計(jì)算這一失真距離,應(yīng)從T和R中各個對應(yīng)幀之間的距離算起。設(shè)n和m分別是T和R中任意選擇的幀號,dT(n),R(m)表示這兩種特征矢量之間的距離。距離函數(shù)取決于實(shí)際采用的距離度量,在DTW算法中通常采用歐氏距離。若N=M則可以直接計(jì)算,否則要考慮將T(n)和R(m)對齊。對齊可以采用線性擴(kuò)張的方法,如果NM可以將T線性映射為一個M幀的序列,再計(jì)算它與之間的距離。但是這樣的計(jì)算沒有考慮到語音中各個段在不同的情況下的持續(xù)時間會產(chǎn)生或長或短的變化,因此識別效果不可能最佳。因而更多地是采用動態(tài)規(guī)劃(DP)的方法。通常,規(guī)整函數(shù)被限

30、制在一個平行四邊形的網(wǎng)格內(nèi),如圖6-1所示。它的一條邊斜率為2,另一條邊斜率為1/2。規(guī)整函數(shù)的起點(diǎn)是(1, 1),終點(diǎn)為(N,M)。DTW算法的目的是在此平行四邊形內(nèi)由起點(diǎn)到終點(diǎn)尋找一個規(guī)整函數(shù),使其具有最小的代價函數(shù),保證了測試模板與參考模板之間具有最大的聲學(xué)相似特性。圖6-1 DTW原理圖由于在模板匹配過程中限定了彎折的斜率,因此平行四邊形之外的格點(diǎn)對應(yīng)的幀匹配距離是不需要計(jì)算的。另外,因?yàn)槊恳涣懈鞲顸c(diǎn)上的匹配計(jì)算只用到了前一列的3個網(wǎng)格,所以沒有必要保存所有的幀匹配距離矩陣和累積距離矩陣。充分利用這兩個特點(diǎn)可以減少計(jì)算量和存儲空間的需求,形成一種高效的DTW算法,如圖所示。圖中,把實(shí)際

31、的動態(tài)彎折分為三段,(1,xa),(xa+1,xb),(xb+1,N),其中:xa= (2M-N)/3,xb=2(2N-M)/3xa和xb都取最相近的整數(shù),由此可得出對M和N長度的限制條件:2M-N3,2N-M2當(dāng)不滿足以上條件時,認(rèn)為兩者差別太大,則無法進(jìn)行動態(tài)彎折匹配。在x軸上的每一幀不再需要與y軸上的每一幀進(jìn)行比較,而只是與y軸上ymin,ymax間的幀進(jìn)行比較,ymin和ymax的計(jì)算公式為:ymin=x/2,0xxb,2x+(M-2N),xb xNymax=2x,0xxa,x/2+(M-N/2),xa xb的情況,則彎折匹配的三段為(1,xb),(xb+1,xa),(xa+1,N)。

32、對于x軸上每前進(jìn)一幀,雖然所要比較的y軸上的幀數(shù)不同,但彎折特性是一樣的,累積距離的更新都是用下式實(shí)現(xiàn)的:D(x,y) = d(x,y)+minD(x-1,y),D(x-1,y-1),D(x-1,y-2)6.2DTW算法流程及實(shí)驗(yàn)結(jié)果通過DTW算法原理,得出DTW算法的流程如圖6-2所示信號輸入幀匹配距離矩陣?yán)鄯e距離矩陣動態(tài)規(guī)劃信號輸出圖6-2 DTW算法流程首先申請兩個n*m的矩陣D和d,分別為累計(jì)距離和幀匹配距離。這里n和m為測試模板與參考模板的幀數(shù)。然后通過一個循環(huán)計(jì)算兩個模板的幀匹配距離矩陣d。接下來進(jìn)行動態(tài)規(guī)劃,為每個格點(diǎn)(i,j)都計(jì)算其三個可能的前續(xù)格點(diǎn)的累積距離1D,2D和3D

33、。考慮到邊界問題,有些前續(xù)格點(diǎn)可能不存在,因此要加用一些判斷條件。最后利用最小值函數(shù)min,找到三個前續(xù)格點(diǎn)的累積距離的最小值作為累積距離,與當(dāng)前幀的匹配距離d(i,j)相加,作為當(dāng)前格點(diǎn)的累積距離。該計(jì)算過程一直達(dá)到格點(diǎn)(n,m),并將D(n,m)輸出,作為模板匹配的結(jié)果。通過點(diǎn)擊語音識別組件,MATLAB將會自動讀取對應(yīng)文件夾中的wav格式的語音,然后進(jìn)行前期的端點(diǎn)檢測和預(yù)處理,通過計(jì)算非線性預(yù)測系數(shù)(MFCC),并保留為參考庫及測試庫。接著通過DTW算法進(jìn)行匹配并計(jì)算它們的dist距離。最終得出結(jié)果,其運(yùn)行結(jié)果窗口如圖6-3所示。圖6.3 運(yùn)行結(jié)果窗口圖7 GUI界面的設(shè)計(jì)光標(biāo)、按鍵、窗

34、口、菜單、圖標(biāo)、對話框和文本等各種圖形對象組成的用戶界面組成了圖形用戶界面(GUI)。它讓我們用戶自己定制MATLAB與用戶的交互方法,使命令窗口不是唯一與MATLAB的交互方式。其能夠使使用者的學(xué)習(xí)和使用更為方便、簡單。用戶不需要了解應(yīng)用程序到底怎么樣執(zhí)行各種命令的,而只需要知道GUI的使用方法;用戶也不必要了解命令是怎么樣執(zhí)行的,用戶只需通過與界面交互就可以使指定行為可以正確執(zhí)行。7.1圖形用戶界面設(shè)計(jì)工具的啟動單擊如圖7-1所示的紅色框,有三個設(shè)計(jì)模式,選擇一個GUI設(shè)計(jì)模板,選擇自己的存儲路徑,然后點(diǎn)擊OK按鈕后,MATLAB就會跳出如圖7-2所示GUI設(shè)計(jì)窗口,當(dāng)然選擇不同的GUI設(shè)

35、計(jì)模式時,在進(jìn)入GUI設(shè)計(jì)窗口后顯示的結(jié)果當(dāng)然也是不一樣的。圖7-1 GUI打開方式(1)組件面板在GUI界面中放置組件, GUI組件布置完成后,可以單擊菜單欄中最后一個三角形按鈕選項(xiàng)來觀察GUIDE的設(shè)計(jì)結(jié)果。這時會自動生成一個FIG文件和一個M文件,F(xiàn)IG文件會提示保存路徑。雙擊界面區(qū)域內(nèi)的按鈕就會彈出屬性窗口,可以修改自己需要的屬性。(2)編程回調(diào)函數(shù)布置完GUI組件后,接下來最重要的一步就是編程每個按鈕的回調(diào)函數(shù),實(shí)現(xiàn)自己需要的功能,其編程過程為: 選擇右鍵單擊按鈕,彈出窗口,選擇最后一項(xiàng)views callbacks; 鼠標(biāo)放在views callbacks后就會彈出子選擇窗口,根據(jù)

36、自己的按鈕屬性選擇相應(yīng)的函數(shù)回調(diào);選擇完函數(shù)后,則會自動跳到M文件中該按鈕所對應(yīng)的回調(diào)函數(shù),在該段函數(shù)中,可以編寫自己需要實(shí)現(xiàn)該按鈕的功能的代碼。待所有按鈕的功能的回調(diào)函數(shù)都編寫完畢后,點(diǎn)擊保存,然后點(diǎn)擊菜單欄中的三角形按鈕,則會彈出用戶開發(fā)界面,在該用戶開發(fā)界面中,用戶可以單擊按鈕以實(shí)現(xiàn)該按鈕所擁有的功能。7.3測試與分析在MATLAB窗口中選擇自己弄好的GUI的路徑,打開GUI。然后單擊菜單欄中的三角形按鈕則彈出如圖7-2 的用戶開發(fā)界面。在我的這次設(shè)計(jì)中,組建了三個模塊,即參考模塊、測試模塊、分析模塊,參考模塊和測試模塊均有相同的功能,即錄音、暫停、播放、保存及讀取,分析模塊包含語音識別

37、和退出。用戶可以在點(diǎn)擊錄音后,錄制字、詞,錄制完畢后,可以點(diǎn)擊播放進(jìn)行回放自己所錄制的語音,通過保存(uiputfile函數(shù)),用戶就可以保存數(shù)個錄制的語音。通過讀?。╱igetfile函數(shù)),用戶可以打開文件并讀取語音信號波形。圖7-2運(yùn)行界面錄制完成后,點(diǎn)擊分析模塊中的語音識別控件,系統(tǒng)就會將之前錄制好的參考模板庫與測試模板庫中的語音自動進(jìn)行匹配。并將結(jié)果在MATLAB命令窗口中顯示出來,可以看到,顯示結(jié)果如圖7-3。圖7-3運(yùn)行結(jié)果圖本設(shè)計(jì)采用端點(diǎn)檢測算法,再經(jīng)過特征提取,最后運(yùn)用DTW算法來實(shí)現(xiàn)語音的識別。采樣頻率為8kHz語音,語音幀長20ms,一幀分為256點(diǎn),幀移為80,采用漢明

38、窗的窗函數(shù)。錄制數(shù)字010的語音作為model(參考庫),test(測試庫)中有若干個需要識別語音,0的序號設(shè)置為11,且110的數(shù)字文件名的命名都依次從110命名。試驗(yàn)數(shù)據(jù)如表1-1。由以上數(shù)據(jù)分析可知識別率為86%。數(shù)字1234567891000-10正確數(shù)8910710879981095錯誤數(shù)2103023112015正確率80%90%100%70%100%80%70%90%90%80%100%86%表1-1 結(jié)果分析總結(jié)通過這次設(shè)計(jì),了解了語音識別的發(fā)展歷史以及在語音識別中每個算法的原理。在本設(shè)計(jì)中,通過MATLAB進(jìn)行錄制語音、播放語音、保存語音、讀取語音及打開語音,先對語音信號進(jìn)行

39、預(yù)處理,其次進(jìn)行端點(diǎn)檢測,提取特征參數(shù),然后建立一個參考庫及一個測試庫。最后通過DTW算法進(jìn)行匹配,最終將結(jié)果在MATLAB命令窗口顯示出來。在本次設(shè)計(jì)中遇到的難題有很多。比如:端點(diǎn)檢測算法的運(yùn)行DTW算法等等,最終通過論導(dǎo)師以及同學(xué)的解答,均解決了。在本次設(shè)計(jì)也存在著許多需要改進(jìn)的地方,比如:GUI界面功能比較單一,GUI界面美化不夠,算法不夠精準(zhǔn),有待進(jìn)行算法改進(jìn);本次設(shè)計(jì)只局限于孤立詞的識別,機(jī)器只能識別一個孤立的詞、音節(jié)等,而不能進(jìn)行少量詞匯的語音識別;DTW算法只針對于特定人語音識別。 致謝俗話說,“磨刀不誤砍柴工”,每當(dāng)我遇到不懂的問題,我都將記錄在本子上,虛心請教指導(dǎo)老師,老師給

40、我耐心地回答,從來都沒有因?yàn)槲业膯栴}有些簡單加以責(zé)備,選定題目設(shè)計(jì)到完成設(shè)計(jì),老師總是給我們細(xì)心引導(dǎo)和耐心講解。從選課題題目到設(shè)計(jì)的順利完成,陳杰老師都一直給予我耐心的指導(dǎo)。 第一,我要感謝我的良師益友陳潔老師是她精細(xì),苛刻,扎實(shí)細(xì)致的工作作風(fēng)一直在我實(shí)例給我起指明燈的作用;其次,還要感謝方剛同學(xué)對我的幫助,沒有他們的幫助和耐心解釋、鼓勵,這次課程設(shè)計(jì)也不會完成的如此的順利。參考文獻(xiàn)1 張雪英.數(shù)字語音處理及MATLAB仿真J.北京:電子工業(yè)出版社,2010.72韋麗興,張淼,鐘映春,韓光.采用PCNN的有噪特定人語音識別系統(tǒng)J.2012.13張瑤.基于量子神經(jīng)網(wǎng)絡(luò)的特定人語音識別研究D.天津

41、師范大學(xué).2013.44 何強(qiáng),何英.MATLAB擴(kuò)展編程M.北京:清華大學(xué)出版社,20025 劉保柱,蘇彥華,張宏林.MATLAB 7.0從入門到精通(修訂版).北京:人民郵電出版社,2010.56陳立萬.基于語音識別系統(tǒng)中DTW算法改進(jìn)技術(shù)研究J.微機(jī)計(jì)算機(jī)信息.2006.27胡金平,陳若珠,李戰(zhàn)明.基于語音識別中DTW改進(jìn)算法的研究J.蘭州.2011.118吳曉平,崔光照,路康.基于DTW算法的語音識別系統(tǒng)實(shí)現(xiàn)J.2004.79惠博.語音識別特征提取算法的研究與實(shí)現(xiàn)D.西北大學(xué).2008.610詹新明,黃南山,楊燦. 語音識別技術(shù)研究進(jìn)展J. 現(xiàn)代計(jì)算機(jī)(專業(yè)版).2008.911沈宏余

42、,李英. 語音端點(diǎn)檢測方法的研究J. 科學(xué)技術(shù)與工程.2008.812譚保華,熊健民,劉幺和. 語音識別技術(shù)概述J. 鄖陽師范高等??茖W(xué)校學(xué)報(bào).2004.613 趙力語音信號處理M北京:機(jī)械工業(yè)出版社2003.714 熊偉,羅云貴.語音識別的MFCC 算法研究.武漢:2010年第三期15 蔡妍. 語音信號端點(diǎn)檢測方法的研究碩士學(xué)位論文D. 江南大學(xué), 2008.616 朱淑琴. 語音識別系統(tǒng)關(guān)鍵技術(shù)研究碩士學(xué)位論文 D. 西安電子科技大學(xué), 200417 劉金偉,黃樟欽,侯義斌 基于片上系統(tǒng)的孤立詞語音識別算法設(shè)計(jì)J計(jì)算機(jī)工程2007,318 胡金平,陳若珠,李戰(zhàn)明.基于語音識別中DTW改進(jìn)算

43、法的研究.蘭州:TP391.4219 李景川,董慧穎. 一種改進(jìn)的基于短時能量的端點(diǎn)檢測算法J. 沈陽理工大學(xué)學(xué)報(bào),2008.6 20 王嘉梅.基于MATLAB的數(shù)字信號處理與時間開發(fā).西安:西安電子科技大學(xué)出版社, 2007.1221 熊偉,羅云貴.語音識別的MFCC 算法研究.武漢:2010年第三期22 吳亞棟. 語音識別基礎(chǔ)R. 上海交通大學(xué)計(jì)算機(jī)系, 2007.0123 雷靜.語音識別技術(shù)的研究及基本實(shí)現(xiàn)D.武漢:武漢理工大學(xué),2002 24 張雄偉,陳亮,楊吉斌.現(xiàn)代語音處理技術(shù)及應(yīng)用M.北京:機(jī)械工業(yè)版社,200325 張志敏,郭英,王博一種基于倒譜特征的語音端點(diǎn)檢測改進(jìn)算法J電聲

44、技術(shù),2006.426 劉羽語音端點(diǎn)檢測及其在MATLAB中的實(shí)現(xiàn)J計(jì)算機(jī)時代,2005.827 徐剮,徐華中語音信號端點(diǎn)檢測的實(shí)驗(yàn)研究J福建電腦,2006.128 胡光銳,韋曉東基于倒譜特征的帶噪語音端點(diǎn)檢測J電子學(xué)報(bào),2000.1029 于迎霞,史家茂一種改進(jìn)的基于倒譜特征的帶噪端點(diǎn)檢測方法J計(jì)算機(jī)工程,2004.630 相征,朗朗,王靜. 基于基音頻能值的端點(diǎn)檢測算法J. 安徽工程科技學(xué)院學(xué)報(bào), 2008.9附件附錄語音識別主函數(shù)function varargout = GUI(varargin)% GUI M-file for GUI.fig% GUI, by itself, crea

45、tes a new GUI or raises the existing% singleton*.% H = GUI returns the handle to a new GUI or the handle to% the existing singleton*.% GUI(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLBACK in GUI.M with the given input arguments.% GUI(Property,Value,.) creates a new GUI

46、or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before GUI_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to GUI_OpeningFcn via varargin.% *See GUI Options o

47、n GUIDEs Tools menu. Choose GUI allows only one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES% Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help GUI% Last Modified by GUIDE v2.5 30-Apr-2015 22:25:50% Begin initialization code - DO NOT E

48、DITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, GUI_OpeningFcn, . gui_OutputFcn, GUI_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:narg

49、out = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before GUI is made visible.function GUI_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to fi

50、gure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to GUI (see VARARGIN)% Choose default command line output for GUIhandles.output = hObject;% Update handles structureguidata(hObject, han

51、dles);% UIWAIT makes GUI wait for user response (see UIRESUME)% uiwait(handles.figure1);% - Outputs from this function are returned to the command line.function varargout = GUI_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to

52、 figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout1 = handles.output;% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject,

53、eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global a;fs=16000;t=2; a=wavrecord(t*fs,fs);handles.a=a;guidata(hObject, handles);% - Executes on button press in

54、 pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global a;pause(handles.a);guidata(hObject, handles);% - Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbut

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論