基于片上系統(tǒng)SoC的孤立詞語音識別算法設(shè)計
3.3.3 應(yīng)用中提高算法效率的改進方法
在計算傳統(tǒng)DTW算法過程中,如果限定動態(tài)規(guī)整的計算范圍,可以大大減小計算量,提高程序的性能。
采用平行四邊形限制動態(tài)規(guī)整范圍,如圖3,菱形之外的節(jié)點對應(yīng)的幀匹配距離是不需要計算的,也沒有必要保存所有幀匹配距離矩陣和累積距離矩陣,以 ADTW的局部約束路徑為例,每一列各節(jié)點上的匹配計算只用到了前兩列的幾個節(jié)點。充分利用這兩個特點可以減少計算量和存儲空間的需求。把實際的動態(tài)規(guī)整分為三段,(1,Xa),(Xa+1,Xb)和(Xb+1,N),
由于X軸上每前進一幀,只用到前兩列的累積距離,所以只需要三個列矢量A、B和C分別保存連續(xù)三列的累積距離,而不需保存整個距離矩陣。每前進一幀都對A、B、C進行更新,即用A和B的值求出C,再根據(jù)B和C的值求出下一列的累積矩陣放入A中,由此可以反復(fù)利用這三個矢量,一直前進到X軸上最后一列,最后一個求出矢量的第M個元素即為兩個模板動態(tài)規(guī)整的匹配距離。
高效DTW對識別的區(qū)域進行了限制,整個平面區(qū)域大小為M×N,匹配區(qū)域的大小為
公式(12)
若M=N=150,則限定區(qū)域內(nèi)的計算量只是傳統(tǒng)DTW算法計算量的24%;同時算法節(jié)省了空間,由原來的2個N×M矩陣,減少為3個M矢量,大大減少了需要的存儲空間,解決了普通DTW算法在存儲空間有限的嵌入式系統(tǒng)中難以實現(xiàn)的問題。
4. MATLAB實驗與分析
為了對算法的識別效果進行測試,設(shè)計了用于數(shù)字家庭控制系統(tǒng)的識別命令集,并基于Matlab構(gòu)建了孤立詞語音識別系統(tǒng),對識別算法進行實驗和分析。該命令集包括語音命令100條,分別是如下幾類:
l 語音通話控制命令,例如,“撥打電話”,數(shù)字,人名;
l 音樂控制類,“打開音樂”、“減小音量”等;
l 門窗控制類,“關(guān)閉百葉窗”、“打開大門”等;
l 家庭電器控制類,“打開空調(diào)”、“打開收音機”等。
該系統(tǒng)使用設(shè)計的端點檢測技術(shù)、特征提取和模板匹配技術(shù)。語音采用頻率為8KHz,16位量化精度,預(yù)加重系數(shù)a=0.95,語音幀每幀 30ms,240點為一幀,幀移為80,窗函數(shù)采用Hamming 窗。LPC參數(shù)為10階,LPCC參數(shù)為16階。實驗人員為三名同學(xué),兩男一女,分別用甲乙丙代表,實驗環(huán)境為辦公室環(huán)境。實驗平臺為Windows XP,Matlab 7.0,進行的各項實驗和數(shù)據(jù)分別如下:
(1)改進端點檢測實驗
針對于設(shè)計的端點檢測算法,得到改進前和改進后語音識別率的變化,數(shù)據(jù)見表1。其中,改進前和改進后所用的參考模板和測試模板數(shù)據(jù)相同。實驗的過程是,Matlab程序自動把50個測試模板逐個和100個參考模板進行匹配,找到測試模板所對應(yīng)的語音命令。
表1 改進端點檢測前后的識別率
Table 1. the recognition ratio of before and after ameliorate endpointing detection
從數(shù)據(jù)可以看出,對端點檢測進行改進后,平均識別率從74%提高到82%,這是因為改進后的端點檢測能夠有效地區(qū)分噪音和語音,嚴(yán)格的把語音段提取出來。
(2)使用冗余參考模板實驗
對每個語音命令建立四個參考模板,其他同實驗(1),實驗數(shù)據(jù)見表2。
表2 使用冗余參考模板前后的識別率
Table 2. the recognition ratio of before and after use redundancy reference template
從實驗數(shù)據(jù)看出,使用冗余模板后,平均識別率由87.5%提高到95%,平均誤識率由12.5%下降到5%。所以,使用冗余參考模板有效的提高了識別性能。
評論