語音鑰匙 DSP_第1頁
語音鑰匙 DSP_第2頁
語音鑰匙 DSP_第3頁
語音鑰匙 DSP_第4頁
語音鑰匙 DSP_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、DSP課程實驗報告基于DSP的語音鑰匙目 錄1.設(shè)計任務(wù)書22.設(shè)計內(nèi)容33.方案的設(shè)計、原理33.1語音鑰匙的概述33.2語音信號的預(yù)處理33.2.1 語音信號的采集3語音信號的分幀4語音信號的預(yù)加重4語音信號的加窗4語音信號的端點檢測5語音信號的短時能量5語音信號的短時過零6語音信號的雙門限斷點檢測73.3 相關(guān)法93.4 特征參數(shù)的提取93.4.1 LPC和LPCC系數(shù)93.4.1 MFCC系數(shù)93.5 DTW算法114 程序設(shè)計、調(diào)試與結(jié)果分析134.1 語音信號相關(guān)法的MATLAB的實現(xiàn)134.2 語音信號相關(guān)法的C語言的實現(xiàn)134.3 語音信號DTW算法的MATLAB及C語言的實現(xiàn)

2、135.實驗總結(jié)及個人體會136、參考文獻131. 設(shè)計任務(wù)書 語音信號處理是利用數(shù)字信號處理技術(shù)對語音信號進行處理的一門學(xué)科,其核心技術(shù)包括語音合成、語音識別、語音測評等,是現(xiàn)代人機交互的重要方式之一,具有廣泛的應(yīng)用前景。近年來隨著互聯(lián)網(wǎng)和通信的發(fā)展,信息檢索也呈現(xiàn)多樣化,如文字檢索、語音檢索和基于內(nèi)容的圖像檢索,其中語音檢索將成為跨領(lǐng)域資源整合的紐帶,而語音檢索的關(guān)鍵在于進行語音匹配與識別。 本實驗設(shè)計一個基于DSP處理系統(tǒng)的語音鑰匙,實驗內(nèi)容如圖1-1所示。圖1-1 設(shè)計的任務(wù)要求分為基礎(chǔ)要求和發(fā)揮部分。基本部分:利用Matlab將采集到的一段語音進行仿真處理,實現(xiàn)基于語音相關(guān)匹配的較為

3、簡單的語音鑰匙的功能。在CCS編譯環(huán)境下利用C語言編寫語音鑰匙程序,并在BJTUDSP5502實驗系統(tǒng)平臺上實現(xiàn)。若語音鑰匙開啟,將指示燈D1進行1Hz閃爍(慢閃),并進行相應(yīng)的語音提示。未開啟,將指示燈D1進行3Hz閃爍(快閃),并進行相應(yīng)的語音提示。發(fā)揮部分:利用Matlab將采集到的一段語音進行仿真處理,實現(xiàn)基于語音特征值匹配的較為復(fù)雜的語音鑰匙的功能。此語音鑰匙安全性更高。在CCS編譯環(huán)境下利用C語言編寫語音鑰匙程序,并在BJTUDSP5502實驗系統(tǒng)平臺上實現(xiàn)。若語音鑰匙開啟,將指示燈D1進行1Hz閃爍(慢閃),并進行相應(yīng)的語音提示。未開啟,將指示燈D1進行3Hz閃爍(快閃),并進行

4、相應(yīng)的語音提示。2. 設(shè)計內(nèi)容1、理解語音信號的基本特征,學(xué)會利用Matlab對語音信號進行處理的基本方法與流程2、學(xué)會利用Matlab對語音信號的預(yù)處理的方法和去噪的方法、信號相關(guān)算法仿真;3、掌握利用CCS編程環(huán)境編寫語音信號處理算法(C代碼),并在BJTUDSP5502實驗系統(tǒng)上實現(xiàn)。4、設(shè)計合理的結(jié)果測試方式和方法,驗證所設(shè)計系統(tǒng)的正確性;5、按照給定的模板撰寫實驗報告,并參加統(tǒng)一的驗收答辯。如參加爭優(yōu)環(huán)節(jié)需另外提前報名,通過公開答辯方式通過驗收。3.方案的設(shè)計、原理3.1語音鑰匙的概述語音技術(shù),包括語音識別、語音合成、關(guān)鍵詞檢出、說話人識別與確認、口語對話系統(tǒng)等,是現(xiàn)代人機交互的重要

5、方式之一,具有廣泛的應(yīng)用前景。其中語音識別技術(shù),尤其是連續(xù)語音識別技術(shù),是最基礎(chǔ)、最重要的部分,而且已經(jīng)逐步走向成熟與實用。語音識別(Speech Recognition)是指讓機器聽懂人說的話,即在各種情況下,準確的識別語音的內(nèi)容,從而根據(jù)其信息,執(zhí)行人的各種意圖或執(zhí)行特定的任務(wù),其最終目標(biāo)是實現(xiàn)人與機器進行自然語言通信。利用DSP可以對語音信號進行實時采集、提取語音特征向量、進行語音識別。語音識別系統(tǒng)對語音特征參量的提取可以采用FFT等算法,不同的參數(shù)表示不同的頻譜包絡(luò)。利用DSP技術(shù)來實現(xiàn)語音識別其實就是要利用DSP處理器強大的數(shù)據(jù)處理功能對表征語音的各種形式的信息進行處理和分析,以對語

6、音進行描述、辨認、分類和解釋。無論是早期的孤立詞識別系統(tǒng)還是當(dāng)代的連續(xù)語音和非特定人識別系統(tǒng),它們的系統(tǒng)基本結(jié)構(gòu)框圖都可以用下圖來進行簡單描述。其主要過程包括語音信號的預(yù)處理(端點檢測等)、特征提取、建立參考模板庫、相似性度量和識別決策等幾個功能模塊,其流程如圖3-1所示。圖3-1從圖3-1可以看出語音識別系統(tǒng)的本質(zhì)就是一種模式識別系統(tǒng),它也包括特征提取、模式匹配、參考模式庫等基本單元。由于語音信號是一種典型的非平穩(wěn)信號,加之呼吸氣流、外部噪音、電流干擾等使得語音信號不能直接用于提取特征,而要進行前期的預(yù)處理。預(yù)處理過程包括預(yù)濾波、采樣和量化、分幀、加窗、預(yù)加重、端點檢測等。經(jīng)過預(yù)處理的語音數(shù)

7、據(jù)就可以進行特征參數(shù)提取。在訓(xùn)練階段,將特征參數(shù)進行一定的處理之后,為每個詞條得到一個模型,保存為模板庫。在識別階段,語音信號經(jīng)過相同的通道得到語音參數(shù),生成測試模板,與參考模板進行匹配,如果匹配分數(shù)大于臨界值,燈1Hz閃爍,播放“正確”;否則,燈3Hz閃爍,播放“錯誤”。其中語音端點檢測是語音分析、合成和識別中的一個重要環(huán)節(jié),其算法的優(yōu)劣在某種程度上也直接決定了整個語音識別系統(tǒng)的優(yōu)劣,在端點檢測技術(shù)中,比較常用的是方法是:1.基于短時幅值和短時平均過零率的端點檢測 2.基于倒譜特征的端點檢測 3.基于熵的端點檢測。在語音識別的過程中,其實質(zhì)就是解決一個語音輸入與一個語音模版之間的正確匹配的問

8、題,常見的語音識別方法有:1.動態(tài)時間歸整技術(shù)(DTW) 2.矢量量化技術(shù)(VQ) 3. 隱馬爾可夫模型(HMM) 4. 基于段長分布的非齊次隱馬爾可夫模型(DDBHMM) 5. 人工神經(jīng)元網(wǎng)絡(luò)(ANN) 6.相關(guān)法 此次試驗中,我們使用的是DTW和相關(guān)法。3.2語音信號的預(yù)處理語音信號的預(yù)處理模塊一般包括預(yù)濾波、采樣和量化、分幀、加窗、預(yù)加重、端點檢測等。在不同的系統(tǒng)中對各子模塊會有不同的要求,如在嵌入式語音識別系統(tǒng)中一般要求有防混疊濾波電路、A/D轉(zhuǎn)換電路和采樣濾波電路等,而在計算機上實驗時則可由音頻采集卡完成,無需實驗者親自動手。3.2.1 語音信號的采集在Matlab環(huán)境中語音信號的采

9、集可使用wavrecord(n,fs,ch,dtype)函數(shù)錄制,也可使用Windows的“錄音機”程序錄制成.wav文件然后使用wavread(file) 函數(shù)讀入。為了進行批量的的訓(xùn)練和識別處理,本系統(tǒng)的訓(xùn)練語音和識別語音全部使用“錄音機”程序預(yù)先錄制。如圖3-2所示為數(shù)字0的訓(xùn)練語音00.wav的信號波形圖,第(I)幅圖為完整的語音波形,第(II)、(III)幅圖分別為語音的起始部分和結(jié)束部分的放大波形圖。圖3-2 語音00.wav的信號波形圖語音信號的分幀語音信號是一種典型的非平穩(wěn)信號,它的均值函數(shù)u(x)和自相關(guān)函數(shù)R(xl,x2)都隨時間而發(fā)生較大的變化。但研究發(fā)現(xiàn),語音信號在短時

10、間內(nèi)頻譜特性保持平穩(wěn),即具有短時平穩(wěn)特性。因此,在實際處理時可以將語音信號分成很小的時間段(約1030ms),稱之為“幀”,作為語音信號處理的最小單位,幀與幀的非重疊部分稱為幀移,而將語音信號分成若干幀的過程稱為分幀。分幀小能清楚地描繪語音信號的時變特征但計算量大;分幀大能減少計算量但相鄰幀間變化不大,容易丟失信號特征。一般取幀長20ms,幀移為幀長的1/31/2。在Matlab環(huán)境中的分幀最常用的方法是使用函數(shù)enframe(x,len,inc),其中x為語音信號,len為幀長,inc為幀移。在本系統(tǒng)中幀長取240,幀移取80語音信號的預(yù)加重對于語音信號的頻譜,通常是頻率越高幅值越小,在語音

11、信號的頻率增加兩倍時,其功率譜的幅度下降6dB。因此必須對高頻進行加重處理,一般是將語音信號通過一個一階高通濾波器1-0.9375z-1,即為預(yù)加重濾波器。其目的是濾除低頻干擾,特別是50Hz到60Hz的工頻干擾,將對語音識別更為有用的高頻部分進行頻譜提升。在計算短時能量之前將語音信號通過預(yù)加重濾波器還可起到消除直流漂移、抑制隨機噪聲和提升清音部分能量的效果。預(yù)加重濾波器在Matlab中可由語句x=filter(1-0.9375,1,x)實現(xiàn)。語音信號的加窗為了保持語音信號的短時平穩(wěn)性,利用窗函數(shù)來減少由截斷處理導(dǎo)致的Gibbs效應(yīng)。用的最多的三種為矩形窗、漢明窗(Hamming)和漢寧窗(H

12、anning)。其窗函數(shù)如下,式中的N為窗長,一般等于幀長。矩形窗: 漢明窗(Hamming):漢寧窗(Hanning):WR =1 (0nN-1)0 (Other)WHM =0.5-0.46cos(2n/(N-1) (0nN-1)0 (Other) WHN =0.5-0.5cos(2n/(N-1) (0nN-1)0 (Other)(3-1)(3-2)(3-3)窗口的選擇非常重要,不同的窗口將使能量的平均結(jié)果不同。矩形窗的譜平滑,但波形細節(jié)丟失;而漢明窗則剛好相反,可以有效克服泄漏現(xiàn)象,具有平滑的低通特性。因此,在語音的時域處理方法中,一般選擇矩形窗,而在語音的頻域處理方法中,一般選擇漢明窗或

13、漢寧窗。在Matlab中要實現(xiàn)加窗即將分幀后的語音信號乘上窗函數(shù),如加漢明窗即為x=x.*hamming(N)。本系統(tǒng)中的端點檢測采用時域方法故加矩形窗,計算MFCC系數(shù)時加漢明窗。語音信號的端點檢測語音端點檢測是指用計算機數(shù)字處理技術(shù)從包含語音的一段信號中找出字、詞的起始點及結(jié)束點,從而只存儲和處理有效語音信號。對漢語來說,還可進一步找出其中的聲母段和韻母段所處的位置。語音端點檢測是語音分析、合成和識別中的一個重要環(huán)節(jié),其算法的優(yōu)劣在某種程度上也直接決定了整個語音識別系統(tǒng)的優(yōu)劣。進行端點檢測的基本參數(shù)主要有短時能量、幅度、過零率和相關(guān)函數(shù)等。端點檢測最常見的方法是短時能量短時過零率雙門限端點

14、檢測,近年來在此基礎(chǔ)上發(fā)展出的動態(tài)窗長短時雙門限端點檢測方法也被廣泛使用。 語音信號的短時能量語音和噪聲的主要區(qū)別在它們的能量上,如圖3-3(III) 和圖3-4(III)所示。語音段的能量比噪聲段的大,語音段的能量是噪聲段能量疊加語音聲波能量的和。對第n幀語音信號的短時能量En的定義為: (3-4)xn為原樣本序列在窗函數(shù)所切取出的第n段短時語音,N為幀長。因為在計算時使用的是信號的平方,故將En作為一個度量語音幅度值變化的函數(shù)有一個缺陷,即對高電平非常敏感。因此在許多場合會將En用下式來代替: (3-5)這樣就不會因為取平方而造成信號的小取樣值的大取樣值出現(xiàn)較大差異。本系統(tǒng)中窗函數(shù)為WR(

15、見式3-1),N為240。圖3-3(I)和圖3-4(I)分別為數(shù)字0的訓(xùn)練語音00.wav和數(shù)字4的訓(xùn)練語音40.wav的波形,圖3-3(III)和圖3-4(III)分別為它們的短時能量。圖3-3 語音00.wav的時域分析參數(shù)圖3-4 語音40.wav的時域分析參數(shù).2語音信號的短時過零短時過零表示一幀語音信號波形穿過橫軸(零電平)的次數(shù)。對于連續(xù)語音信號,過零意味著時域波形通過時間軸;而對于離散信號,如果相鄰的取樣值的改變符號則稱為過零。過零率就是樣本改變符號次數(shù),定義語音信號壽(m)的短時過零率Zn為: (3-6)1 (x0)-1 (x0)sgnx= (3-7)清音的能量多集中在較高的頻

16、率上,它的平均過零率要高于濁音,故短時過零率可以用來區(qū)分清音、濁音以及無聲。圖3-3(II)和圖3-4(II)分別為數(shù)字0的訓(xùn)練語音00.wav和數(shù)字4的訓(xùn)練語音40.wav的短時過零率。從圖中可以看到清音s的過零率明顯高于其后的i音,有聲段過零率明顯高于無聲段,但在鼻音階段過零率迅速滑落到無聲水平而能量值則是緩慢下滑。在實際應(yīng)用時并不能通過式3-6直接計算過零率,因為在無聲段噪聲使語音波形在0值附近來回擺動,導(dǎo)致計算出的過零率和有聲段的區(qū)別并不十分明顯。比較簡單的解決方法是設(shè)定一個差的閾值,使不僅xn(m)*xn(m-1)<0,還要|xn(m) - xn(m-1)| > 。在本系

17、統(tǒng)中經(jīng)多次試驗取定=0.01。3.2.5.2語音信號的雙門限斷點檢測雙門限端點檢測顧名思義需要兩級檢測,即短時能量檢測和短時過零率檢測。在開始檢測之前需要設(shè)定4個門限,即分別為短時能量和短時過零率各設(shè)置一個高門限和一個低門限:EHigh、ELow和ZHigh、ZLow。整個語音端點檢測分為四部分:靜音段、過度段、語音段、結(jié)束段。在靜音段中如果能量或過零率有一個超過了其低門限,則認為進入了過度段。在過度段中,由于參數(shù)數(shù)值較小,還不能確定是否真的進入語音段,只有兩個參數(shù)的其中一個超越了高門限才被認為是進入語音段。當(dāng)參數(shù)降至低門限則認為進入結(jié)束。此外,還有兩種可能會引起端點檢測的誤判:一是短時噪音引

18、起的誤判,此時則需要引入最小語音長度門限進行噪聲判定,即語音段時間小于一定數(shù)值則認定為是噪聲,重新回到靜音段,本系統(tǒng)設(shè)為20ms;二是語音中字與字的時間空隙引起的誤判,此時需要設(shè)定最大靜音長度門限來降低識別的錯誤率,本系統(tǒng)所訓(xùn)練和識別的都為單字,故無需設(shè)置此門限。在雙門限端點檢測中4個門限的設(shè)定至關(guān)重要,門限設(shè)定的好壞將直接影響端點檢測的結(jié)果。門限值的設(shè)置還沒有一個通用可靠的方法,需要根據(jù)經(jīng)驗和特定環(huán)境進行調(diào)整。常見的方法有最大值乘上某個比率、中位值乘上某個比率、最小值乘上某個常數(shù)、前三幀平均值乘上某個常數(shù)等。本系統(tǒng)中EHigh,ELow,ZHigh,ZLow的取值分別為:EHigh=max(

19、min(amp)*10,mean(amp)*0.2,max(amp)*0.1); ZHigh=max(round(max(zcr)*0.1),5);ELow=min(min(amp)*10,mean(amp)*0.2,max(amp)*0.1); ZLow=max(round(mean(zcr)*0.1),3);圖3-5和圖3-6分別是數(shù)字0的訓(xùn)練語音00.wav和數(shù)字4的訓(xùn)練語音40.wav的端點檢測結(jié)果,紅線之間的部分為檢測出的語音有聲段。圖3-5 語音00.wav的端點檢測結(jié)果圖3-6 語音40.wav的端點檢測結(jié)果3.3 相關(guān)法 經(jīng)過處理的語音信號都有相應(yīng)的臨界帶特征矢量,通過相關(guān)法計

20、算前后兩次聲音的特征矢量的相關(guān)性,由相關(guān)性來判斷兩次語音信號的相似性。 (3-13)衡量X與Y的相關(guān)程度,(3-13)被稱為相關(guān)系數(shù)。顯然,當(dāng)?shù)闹翟酱?,說明X和Y越相關(guān)(相似),當(dāng)?shù)闹翟叫。ㄔ浇咏诹悖?,說明X和Y越不相關(guān)(不相似)。尤其是,當(dāng)時,與(是各分量為1的列向量,常稱為1向量,表示為)線性相關(guān),當(dāng)時,與正交,即最不相關(guān)。3.4 特征參數(shù)的提取經(jīng)過預(yù)處理的語音數(shù)據(jù)就可以進行特征參數(shù)提取,特征參數(shù)的好壞將直接影響系統(tǒng)的性能和效率,對特征參數(shù)的要求包括:(1) 提取的特征參數(shù)能有效地代表語音特征,具有很好的區(qū)分性;(2) 各階參數(shù)之間有良好的獨立性;(3) 特征參數(shù)要計算方便,最好有高效的

21、計算方法,以保證語音識別的實時實現(xiàn)。3.4.1 LPC和LPCC系數(shù)LPC(Linear Prediction Coefficient,線性預(yù)測系數(shù))模擬人發(fā)音器官的聲管模型,是一種基于語音合成的參數(shù)模型。在語音識別系統(tǒng)中很少直接使用LPC系統(tǒng),而是由LPC系數(shù)推出的另一種參數(shù)LPCC。LPCC(Linear Prediction Cepstrum Coefficient,線性預(yù)測倒譜系數(shù))是LPC在倒譜域中的表示。該特征是基于語音信號為自回歸信號的假設(shè),利用線性預(yù)測分析獲得倒譜系數(shù)。LPCC的優(yōu)點是計算量小,易于實現(xiàn),對元音有較好的描述能力,缺點是對輔音描述能力較差。3.4.1 MFCC系數(shù)

22、LPC模型是基于發(fā)音模型建立的,LPCC系數(shù)也是一種基于合成的系數(shù),這種參數(shù)沒有充分利用人耳的聽覺特性。實際上,人的聽覺系統(tǒng)是一個特殊的非線性系統(tǒng),它響應(yīng)不同頻率信號的靈敏度是不同的,基本上是一個對數(shù)的關(guān)系。近年來,一種能夠比較充分利用人耳的這種特殊感知特性的系數(shù)得到了廣泛應(yīng)用,這就是Mel尺度倒譜系數(shù)(Mel-scaled Cepstrum Coefficients,簡稱MFCC)。大量研究表明,MFCC系數(shù)能夠比LPCC參數(shù)更好地提高系統(tǒng)的識別性能。MFCC系數(shù)的計算是以“bark”為其頻率基準的,它和線性頻率的轉(zhuǎn)換關(guān)系是: (3-8)MFCC系數(shù)也是按幀計算的,首先要通過FFT得到該幀信

23、號的功率譜S(n),轉(zhuǎn)換為Mel頻率下的功率譜。這需要在計算之前先在語音的頻譜范圍內(nèi)設(shè)置若干個帶通濾波器:Hm(n) m=0,1,M-1; n=0,1,N/2-1 (3-9)M為濾波器的個數(shù),通常取24,與臨界帶的個數(shù)一樣;N為一幀語音信號的點數(shù),為了計算FFT的方便,通常取256。濾波器在頻域上為簡單的三角形,其中心頻率fm在Mel頻率軸上是均勻分布的。如圖3-7所示為Mel尺度濾波器組,包含24個濾波器,語音信號幀長取為256個點,語音信號的采樣頻率為8KHz,。圖3-7 Mel 尺度濾波器組帶通濾波器的系數(shù)事先計算好,在計算MFCC系數(shù)是直接使用。MFCC系數(shù)的計算過程如下:(1) 預(yù)處

24、理:確定每一幀語音采樣序列的長度(如N=256),并對每幀序列s(n)進行預(yù)加重、分幀和加窗處理;(2) 計算離散功率譜:對預(yù)處理的每幀進行離散FFT變換得到其頻譜,再取模的平方作為離散功率譜S(n);(3) 將功率譜通過濾波器組:計算S(n)通過M個Hm(n)后所得的功率值,即計算S(n)和Hm(n)在各離散頻率點上的乘積之和,得到M個參數(shù)Pm,m=0,1,M-1;(4) 取對數(shù):計算Pm的自然對數(shù),得到Lm,m=0,1,M-1;(5) 離散余弦變換:對Lm計算其離散余弦變換,得到D m,m=0,1,M-1,舍去代表直流成份的D0,取D1,D2,Dk作為MFCC參數(shù)。具體流程可以用框圖3-8

25、表示為:圖3-8 MFCC系數(shù)計算流程圖在Matlab環(huán)境中計算M個濾波器的系數(shù)可以調(diào)用語音工具箱voicebox中的函數(shù)melbankm(m,n,fs)來實現(xiàn),其中m為濾波器的個數(shù),n為語音幀長,fs為采樣頻率。計算mfcc系數(shù)的函數(shù)為melcepst(s,fs),s為語音信號。3.5 DTW算法在孤立詞語音識別中,最為簡單有效的方法是采用DTW動態(tài)時間規(guī)整算法,設(shè)參考模板特征矢量序列為A=a1,a2,aj),輸入語音特征矢量序列為B=b1,b2,bk),jk。DTW算法就是要尋找一個最佳的時間規(guī)整函數(shù),使得語音輸入B的時間軸k映射到參考模板A的時間軸j上總的累計失真最小。 將己經(jīng)存入模板庫

26、的各個詞條稱為參考模板,一個參考模板可以表示為R(1),R(2),R(M),m為訓(xùn)練語音幀的時序標(biāo)號,m=1為起點語音幀,m=M為終點語音幀,因此M為該模式包含的語音幀總數(shù),R(m)為第m幀語音的特征矢量。所要識別的一個輸入詞條語音稱為測試模板,可表示為T(1),T(2),T(N),n為測試語音幀標(biāo)號,模板中共包含N幀音,T(n)為第n幀音的特征矢量。為了比較它們的相似度,可以計算它們之間的失真DT,R,這里采用歐氏距離中的中的絕對平均誤差: (3-10)此失真度的主要優(yōu)點是計算簡單、硬件容易實現(xiàn)。失真越小相似度越高。為了計算這一失真,應(yīng)從T和R中各個對應(yīng)幀之間的失真算起。將各個對應(yīng)幀之間的失

27、真累計起來就可以得到兩模式間的總失真。很容易想到的辦法是當(dāng)兩模式長度相等時,直接以相等的幀號相匹配后累加計算總失真,而當(dāng)兩個模式長度不等時則利用線性擴張或線性壓縮的方法使兩模式具有相等長度,隨后進行匹配計算失真度。但由于人類發(fā)音具有隨機的非線性變化,這種方法效果不可能是最佳的。為了達到最佳效果,可以采用動態(tài)時間規(guī)整的方法。圖3- 9如圖所示,橫坐標(biāo)對應(yīng)“1”這個字音的一次較短的發(fā)音,經(jīng)過分幀和特征矢量計算后共得到一個長度為43幀的語音序列,而縱坐標(biāo)對應(yīng)“1”這個字音的一次較長的發(fā)音,該語音特征序列共有56幀。為了找到兩個序列的最佳匹配路徑,現(xiàn)把測試模式的各個幀號n=1N(N=43)在一個二維直

28、角坐標(biāo)系中的橫軸上標(biāo)出,把參考模式的各幀號m=1M(M=56)在縱軸上標(biāo)出。 通過這些表示幀號的整數(shù)坐標(biāo)畫一些縱橫線即可形成一個網(wǎng)格,網(wǎng)格中何一個節(jié)點(n,m)表示測試模式中的某一幀和參考模式中的某一幀的交匯點。動態(tài)時間規(guī)整算法可以歸結(jié)為尋找一條通過此網(wǎng)格中若干交叉點的路徑,路徑通過的交叉點即為參考模式和測試模式中進行失真計算的幀號。路徑不是隨意選擇的,首先任何一種語音的發(fā)音快慢可能有變化,但是各部分的先后順序不可能改變,因此所選的路徑必定從左下角出發(fā),在右上角結(jié)束。其次為了防止漫無目的的搜索,可以刪去那些向n軸方向或者m軸方向過分傾斜的路徑(例如,過分向n軸傾斜意味著R(m)壓縮很大而T(n

29、)擴張很大,而實際語音中這種壓、擴總是有限的)。為了引入這個限制,可以對路徑中各通過點的路徑平均斜率的最大值和最小值予以限制。通常最大斜率定為2,最小平均斜率定為12。路徑的出發(fā)點可以選擇(n,m)=(1,1)點,也可以選擇(n,m)=(1,2)或(1,3)或(2,1)或(3,1)點出發(fā)。前者稱為固定起點,后者稱為松弛起點。同樣,路徑可在(n,m)=(N,M)點結(jié)束,也可以在(n,m)=(N,M-1)或(N,M-2)或(N-1,M)或(N-2,M)點結(jié)束。前者稱為固定終點,后者稱為松弛終點。 D=min(i)i=1MdTi,R(i) (3-11)式中,dTi,R(i) 是第i幀測試矢量Ti和第

30、j幀模板矢量Rj之間的距離測度,D則是處于最有時間規(guī)整情況下兩矢量之間的匹配路徑。實際中采用動態(tài)規(guī)劃技術(shù)來加以具體實現(xiàn)的。動態(tài)規(guī)劃是一種最優(yōu)化算法??偞鷥r函數(shù)的計算式為Dc(k)=dc(k)+min Dc(k-1) (3-12)式中,dc(k)為匹配點c(k) 本身的代價,min Dc(k-1)是在c(k)以前所有允許值(由路徑限制而定)中的最小的一個。一次總代價函數(shù)是該點本身的代價與達到改點的最佳路徑的代價之和。由于DTW不斷地計算兩矢量的距離以尋找最優(yōu)的匹配路徑,所以得到的是兩矢量匹配時積累距離最小的規(guī)整函數(shù),這就保證了它們之間存在最大的聲學(xué)相似特性。使用DTW算法為核心直接構(gòu)造識別系統(tǒng)十

31、分簡單,首先通過訓(xùn)練得到詞匯表中各參考語音的特征序列,直接將這些序列存儲為模板。在進行識別時,將待識語音的特征序列依次與各參考語音特征序列進行DTW匹配,最后得到的總失真度最小且小于識別閾值的就認為是識別結(jié)果。該方法最顯著的優(yōu)點是識別率極高,大大超過目前多數(shù)的HMM語音識別系統(tǒng)和VQ語音識別系統(tǒng)。但其最明顯的缺點是由于需要對大量路徑及這些路徑中的所有節(jié)點進行匹配計算,導(dǎo)致計算量極大,隨著詞匯量的增大其識別過程甚至將達到難以接受的程度,因此無法直接應(yīng)用于大、中詞匯量識別系統(tǒng)。4 程序設(shè)計、調(diào)試與結(jié)果分析4.1 語音信號相關(guān)法的MATLAB的實現(xiàn)Matlab仿真效果如下圖,圖中上部分為模板信號的時

32、域波形,下部分為測試信號的時域波形,相關(guān)系數(shù)為0.1441,代碼如下 圖3-10recorder01(0);fname=sprintf('train0%d.wav',0); x,fs,bits=wavread(fname,20000);M=240;L=length(x);LL=length(x)/M;Em=zeros(1,(LL-1)*240); for ii=1:(LL-1)*240, temp=x(ii:ii+240); Em(ii)=sum(temp.*temp); endMn=zeros(1,(LL-1)*240); for ii=1:(LL-1)*240, temp=

33、x(ii:ii+240); Mn(ii)=sum(abs(temp)/M; endZn=zeros(1,(LL-1)*240); for ii=2:(LL-1)*240,temp1=sign(x(ii:ii+240); temp=sign(x(ii-1:ii+240-1); Zn(ii)=sum(abs(temp1-temp); end inc =90;amp1 = 0.5; amp2 = 0.0005; zcr1 = 10; zcr2 = 2; minsilence = 10000; minlen = 10;status = 0;count = 0; silence = 0; amp=Em;

34、 zcr=Zn;amp1 = min(amp1, max(amp)/4); amp2 = min(amp2, max(amp)/8); for n=1:length(zcr) goto = 0; switch status case 0,1if amp(n) > amp1 x1 = max(n-count-1,1); status = 2; silence = 0; count = count + 1;elseif amp(n) > amp2 | zcr(n) > zcr2 status = 1; count = count + 1; else status = 0; cou

35、nt = 0;endcase 2,if amp(n) > amp2 |zcr(n) > zcr2count = count + 1; else silence = silence+1; if silence < minsilence %時間小于此不算噪聲count = count + 1; elseif count < minlenstatus = 0; silence = 0; count = 0;else status = 3; end end case 3,break; end endcount = count-silence/2; x2 = x1 + count

36、 -1; y=x(x1:x2);fb=1000;fc=1200;As=100;Ap=1;Fs=8000;wc=2*pi*fc/Fs;wb=2*pi*fb/Fs;wdel=wc-wb;beta=0.112*(As-8.7);N=ceil(As-8)/2.285/wdel);wn=kaiser(N+1,beta);ws=(wb+wc)/2/pi;b=fir1(N,ws,wn);z=fftfilt(b,y);subplot(211);plot(y);axis(0 20000 -2 2);title('模板信號');recorder01(1);fname=sprintf('tr

37、ain0%d.wav',1);w,fs,bits=wavread(fname,20000);M=240;L1=length(w);LL1=length(w)/M;Em=zeros(1,(LL1-1)*240); for ii=1:(LL1-1)*240, temp=w(ii:ii+240); Em(ii)=sum(temp.*temp); endMn=zeros(1,(LL1-1)*240); for ii=1:(LL1-1)*240, temp=w(ii:ii+240); Mn(ii)=sum(abs(temp)/M; endZn=zeros(1,(LL1-1)*240); for

38、ii=2:(LL1-1)*240,temp1=sign(w(ii:ii+240); temp=sign(w(ii-1:ii+240-1); Zn(ii)=sum(abs(temp1-temp); end inc =90;amp1 = 0.5; amp2 = 0.0005; zcr1 = 10; zcr2 = 2; minsilence = 10000; minlen = 10;status = 0;count = 0; silence = 0; amp=Em; zcr=Zn;amp1 = min(amp1, max(amp)/4); amp2 = min(amp2, max(amp)/8);

39、for n=1:length(zcr) goto = 0; switch status case 0,1if amp(n) > amp1 x1 = max(n-count-1,1); status = 2; silence = 0; count = count + 1;elseif amp(n) > amp2 | zcr(n) > zcr2 status = 1; count = count + 1; else status = 0; count = 0;endcase 2,if amp(n) > amp2 |zcr(n) > zcr2count = count + 1; else silence = silence+1; if silence < minsilence %時間小于此不算噪聲count = count + 1; elseif count < minlenstatus = 0; silence = 0; count = 0;else sta

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論