吳佳龍,李 坤,劉 中
(西安電子科技大學電子工程學院,陜西西安 710071)
在孤立詞語音識別中,主要的研究方法有動態(tài)時間規(guī)整(Dynamic Time Warping,DTW)算法、隱馬爾科夫模型(HMM)和人工神經(jīng)元網(wǎng)絡(luò)等。但HMM算法復雜,需通過反復計算才能得到模型參數(shù)。而DTW算法是語音識別中出現(xiàn)最早、較為經(jīng)典的一種算法,該算法的訓練中無需額外計算,且在孤立詞語音識別中,DTW算法與HMM算法在相同環(huán)境條件下,識別效果相差較小。另外,MFCC的提出對語音識別做出了重大貢獻,該算法模擬人耳處理語音的機制,具有較好的魯棒性和識別效果,成為語音識別系統(tǒng)中的主要特征參數(shù)[1]。文中使用梅爾倒譜系數(shù)作為特征參數(shù),采用動態(tài)時間規(guī)整技術(shù)進行模式匹配,是孤立詞語音識別的有效解決方法。
孤立詞語音識別的本質(zhì)為模式識別,其基本算法框架如圖1所示[2]。包括對語音信號的預處理單元、端點檢測單元、特征參數(shù)提取單元、參考模板庫建立單元和模式匹配單元等。
圖1 非特定人孤立詞語音識別算法框架
圖1中,預處理單元對輸入語音進行數(shù)字化和高通濾波處理;端點檢測單元使用短時能零差分法判斷語音信號的始末點,獲得真實語音信號;特征參數(shù)提取單元則采用 Mel倒譜系數(shù)(Mel Frequency Cepstral Coefficient,MFCC)提取能代表語音最基本特征的參數(shù);參考模板庫建立單元通過基于平均路徑長度的訓練方法,建立參考特征參數(shù)模板庫;模式匹配單元,指通過動態(tài)時間規(guī)整技術(shù)(Dynamic Time Warping,DTW)計算測試特征參數(shù)與參考特征參數(shù)之間的歐式距離,以獲得識別結(jié)果。
傳統(tǒng)的端點檢測算法通過判斷語音信號幀的短時能量或短時平均過零率閾值來判定語音幀的起始點和終止點。文中使用一種改進的結(jié)合短時能量和短時平均過零率差分閾值的端點檢測算法,即短時能零差分法。
用En表示第n幀信號 xn(m)的短時能量,如式(1)所示,En為由信號幅度值平方?jīng)Q定的函數(shù)[2]
用Mn表示短時平均幅度函數(shù),如式(2)所示,Mn僅由信號幅度值決定,信號中噪聲的影響明顯減小
一幀語音信號中波形通過零電平的次數(shù)稱為短時過零率。過零率在語音信號中表現(xiàn)為,高頻段的過零率相比低頻段高,因此用短時平均過零率對清音和濁音進行區(qū)分。第n幀信號xn(m)的短時過零率Zn如式(3)所示
式中,sgn[]是符號函數(shù),即
語音信號幀的非語音部分,短時能量Mn和短時平均過零率Zn變化緩慢,而在非語音和語音的過渡部分這兩個參數(shù)的變化急劇增大,因此通過判斷這兩個參數(shù)便可找到語音信號的起始點和終止點[5]。語音信號有清音和濁音之分,濁音的短時能量和短時過零率特征均較為明顯,而清音信號只有短時過零率變化明顯。因此,本文采用短時能零差分法進行端點檢測,算法的基本框架如圖2所示。
圖2 短時能零差分法框架
短時能零差分法檢測步驟如下:
(1)對輸入的語音信號預處理,并根據(jù)語音信號的短時平穩(wěn)性進行分幀,每幀長度為32 ms。
(2)分別計算前5幀語音數(shù)據(jù)的平均短時能量Pa和平均短時過零率Pb。
(3)假設(shè)短時能量差分的高、低閾值分別為ε2、ε1,短時平均過零率差分的閾值為γ1。
尋找邊界點:
(4)從語音信號的第6幀數(shù)據(jù)開始,每5幀組成一組(如第6~10幀為一組,第11~15為一組等),將每組最后1幀(如第10幀,第15幀等)的短時能量與Pa求差分,得差分值m。將m與短時能量差分的低閾值相比較,若m<ε1,則說明還未進入有效語音部分,重復執(zhí)行第(4)步驟;若差分值m>高閾值ε2,則表明該幀已是有效語音幀,接著執(zhí)行步驟(5)尋找該組中具體有效語音部分的真正起始點;若ε1≤m≤ε2,則按m<ε1處理,即認定尚未進入有效語音段。
(5)向前搜索。將第(4)步中找到的語音信號起始點所在組的每一幀數(shù)據(jù)的短時能量均與Pa求差分,得出差分值m,并將m與低閾值ε1相比較,若m>ε1,則認為該幀確定進入語音段。同時,為了防止漏檢清音起始點,需向前計算每一幀數(shù)據(jù)的短時平均過零率與Pb的差分值n,也將n與過零率差分的閾值γ1比較,若n<γ1的幀位置為X,即可認為該幀為本次輸入語音的起始點。若該組中每一幀的n值均>γ1,則需繼續(xù)向前搜索,直至找出語音信號的真正起始點為止。
(6)向后搜索。查找語音信號的結(jié)束點。繼續(xù)向后計算每組數(shù)據(jù)最后一幀的短時能量與Pa的差分值m,若m<ε1,即可認為該幀數(shù)據(jù)為語音信號的終止點Y。
判斷端點:
(7)根據(jù)以上步驟得出的數(shù)據(jù)計算語音信號的長度L=Y-X,然后與預先設(shè)置的語音信號段的最小長度Lmin相比較,若L<Lmin,則認為X到Y(jié)是一個脈沖噪音段,重新執(zhí)行步驟(4),從Y的下一幀組數(shù)據(jù)開始繼續(xù)檢測語音信號起始點。若檢測到的語音信號長度L大于最小長度Lmin,則此時的段就是有效語音段。
將語音數(shù)據(jù)“救命”通過Matlab進行端點檢測算法的仿真,圖3所示為其端點檢測結(jié)果。
如圖3所示,語音信號被準確的分為了兩個字,除去了無語音信號段,檢測出有效語音信號,且頻譜前后基本無變化。
孤立詞語音信號的特征參數(shù)提取是指根據(jù)某種算法從語音信號中提取出能表征該語音信號最基本特征的參數(shù)。提取特征參數(shù)的目的是去掉冗余的、無用的信息及噪聲,僅保留能反映語音特征的最基本信息,以實現(xiàn)對孤立詞語音信號的識別。
描述語音信號特征時,需考慮人耳的聽覺特征。耳蝸是人耳的主要組成部分,其本質(zhì)類似一個濾波器組,且在對數(shù)頻率單位上實現(xiàn)其濾波性能。臨界頻率帶寬隨著頻率的變化而變換,頻率在0~1 kHz時,為線性尺度,帶寬約為100 Hz;1 kHz以上則為對數(shù)尺度??紤]到人的聽覺感受,定義新的接近耳蝸特性的梅爾(Mel)頻率為單位[3]。Mel頻率與線性頻率Hz的關(guān)系為
Mel頻率和物理頻率的坐標圖,如圖4所示。
圖3 基于短時能零差分法的“救命”端點檢測結(jié)果
圖4 Mel頻率與物理頻率坐標圖
Mel濾波器組,如圖5所示。其是語音頻譜范圍內(nèi)設(shè)置的若干帶通濾波器hm(k),m=1,…,M;k=0,…,N/2。其中,M為濾波器的個數(shù),N為一幀語音信號中的采樣點數(shù),該濾波器的傳遞函數(shù)如式(6)所示。
圖5 Mel頻率濾波器組
其中,f(m)為中心頻率,計算公式如式(7)所示
式中,F(xiàn)s為采樣頻率;fl和fh為濾波器組的最低頻率與最高頻率;M為濾波器組的數(shù)目。
MFCC參數(shù)提取具體計算過程如下:
(1)根據(jù)式(5)將實際物理頻率轉(zhuǎn)化成Mel頻率。
(2)對輸入語音幀進行端點檢測后作FFT變換得到其頻譜,將時域信號轉(zhuǎn)化為頻域信號。
(4)對所有三角形帶通濾波器的輸出求對數(shù),并做DCT變換,得到MFCC
圖6所示為孤立詞語音信號“救命”所提取的MFCC特征參數(shù)。
動態(tài)時間規(guī)整(DTW)技術(shù)利用動態(tài)規(guī)劃方式,將繁雜的全局優(yōu)化問題轉(zhuǎn)換為多個局部優(yōu)化問題進行解決[7]。對于有M幀數(shù)據(jù)矢量參考模板R和有N幀數(shù)據(jù)的矢量測試模板T,各幀號組成一個網(wǎng)格,網(wǎng)格中的任何一個交叉點(n,m)均表示測試模板與參考模板的匹配比較點,且該交叉點語音信號幀的失真度為d(T(n),R(m)),路徑通過的所有交叉點組合成測試模板與參考模板的總距離。動態(tài)時間規(guī)整法的搜索路徑,如圖7所示。
DTW遵循一定的搜索規(guī)則,根據(jù)語音信號在時間上的連貫性,認為所有路徑均是從第一幀出發(fā),即m=n=1,然后在(N,M)結(jié)束。路徑中間各點的斜率必須約束為η為0、1/2、1或2。由此可知,若路徑通過格點(ni-1,mi-1),則將要通過的下一個格點(ni,mi)為式(10)中3種情況的一種
最優(yōu)路徑為在滿足約束條件的基礎(chǔ)上,計算路徑累計距離的最小值,即滿足
最優(yōu)路徑通過在匹配過程中限定彎折斜率來實現(xiàn)。如圖8所示,先作出一個菱形,圈出可能計算的點來節(jié)省計算時間,同時也能減少存儲空間。
圖8 DTW匹配約束條件
DTW算法的實現(xiàn)步驟如下:
(1)假設(shè)M<N,將曲線分成三折,拐點分別為(1,X),(X+1,X)及(X+1,N)。其中,X=(2M-aabbaN),X=(2N-m);X、X均四舍五入取整。若測bab試模板與參考模板的幀長不符合(8)所列規(guī)則,則可不用計算該模板,即距離不匹配
(2)按式(13)和式(14)計算 Y 軸上[ymin,ymax]
(3)由式(15)計算出當前幀的最小累計距離
由于在X軸上前進一幀,只用到之前幀的累計距離,因此只需用矢量D保存前列幀的累計距離,用矢量d保存當前列數(shù)據(jù)的累計距離。每前進一幀數(shù)據(jù)均需要更新,按照式(15)將前一列數(shù)據(jù)的累計距離D(x,y)和當前列所有幀數(shù)據(jù)進行匹配,獲得匹配距離d(x,y),即可計算出當前語音幀的累計距離并存于矢量d中。然后將新的累計距離d賦給D,作為新的累計距離,在下一列幀計算累計距離時使用。如圖9所示,循環(huán)執(zhí)行到X軸上的最后一列數(shù)據(jù),則矢量D的第M個元素便是參考模板與測試模板間動態(tài)時間彎折的最小匹配距離。
圖9 累積距離的動態(tài)更新圖
文中使用一種基于平均路徑長度的訓練方法,該方法為每個孤立詞籌備N(N≤10)個語音樣本,計算這N個語音樣本的特征參數(shù)矢量沿DTW的平均路徑長度。設(shè)置初始參考模板,其路徑長度最接近平均路徑長度;對其余模板在DTW中進行匹配,保證這些矢量模板的路徑長度和初始參考模板相同。最后計算每幀中已成功匹配模板的均值,即可獲得參考模板。
最終參考模板的計算過程如下:
(1)初始參考模板與第一個模板相匹配,計算出最佳規(guī)整函數(shù) w(i),1≤i≤I。
(2)從最后一幀數(shù)據(jù)開始向前搜索,直至第一幀,在w(i)上尋找每幀信號先前可能通過路徑的斜率,有3種可能:1)斜率為1。語音信號幀保持不變。2)斜率為2。重復的語音信號幀,即w(i-1)與w(i)表示相同幀。3)斜率為0.5。計算兩個連續(xù)語音幀的平均值,即w(i-1)與w(i)的平均值。
(3)對其余的語音參考模板重復步驟(2),得到長度相同的一組模板。
(4)對按以上方法求得的每幀語音信號中的模板計算均值,即可獲得最終參考模板。
文中主要對孤立詞語音識別系統(tǒng)中各個模塊進行研究及Matlab仿真。從斷點檢測看出,該方法能準確檢測出起始點和終止點,為信號的特征參數(shù)提取做準備工作;而特征參數(shù)提取通過MFCC算法也能較好地提取對信號識別的參數(shù)值;研究了DTW算法的原理與實現(xiàn),通過對一些孤立詞語音進行識別驗證,證明了該系統(tǒng)在實際應(yīng)用中具有較好的可行性。
[1]楊熙.基于DSP的非特定人孤立詞語音識別系統(tǒng)的研究和設(shè)計[D].長沙:湖南大學,2007.
[2]潘夏英.圖像邊緣檢測技術(shù)的研究[D].西安:西安科技大學,2011.
[3]丁愛明.作為說話人識別特征參量的MFCC的提取過程[J].信息化研究,2006,32(1):51 -53.
[4]王炳錫,屈丹,彭煊.實用語音識別基礎(chǔ)[M].北京:國防工業(yè)出版社,2005.
[5]魏峰.特定人孤立詞語音識別方法的研究[D].長沙:湖南大學,2007.
[6]孫振超.基于FPGA的說話人識別系統(tǒng)設(shè)計與實現(xiàn)[D].武漢:武漢理工大學,2012.
[7]劉長明,任一峰.語音識別中DTW特征匹配的改進算法研究[J].中北大學學報:自然科學版,2006,27(1):37-40.