摘 要:研究一種適合醫(yī)療儀器的語音識別算法,采用帶噪聲端點檢測算法、美爾頻標倒譜系數(shù)(MFCC)特征參數(shù)提取算法和整體路徑約束DTW算法即ADTW算法,能有效地提高識別率和穩(wěn)健性。在此為噪聲環(huán)境下的語音識別提供了理論分析與仿真實驗數(shù)據(jù)。實驗結(jié)果表明:這種語音識別算法不僅有很高的識別率,而且能減小或者消除噪聲所帶來的訓練模型和測試語音之間的失配。它完全滿足醫(yī)療儀器對語音識別率的要求。
關(guān)鍵詞: 端點檢測; 美爾頻標倒譜系數(shù); ADTW模式匹配; Matlab仿真
中圖分類號:TP301.2 文獻標識碼:A
文章編號:1004-373X(2010)10-0040-03
Isolate Word Speech Recognition Algorithm in Application of Medical Equipment
XIAO Li-jun, CHEN Ming-yi
(College of Information Science and Engineering Central South University, Changsha 410083, China)
Abstract:A speech identification algorithm suit for medical devices is researched, which improves the identification rate and steadiness efficiently by using noisy endpoint detecting algorithm, MFCC character parameter extraction algorithm and thewhole path constraint DTW algorithm (namely ADTW mode match algorithm). The theory analysis and simulation experiment data of speech identification under noise environment are also provided. Simulation experiment results show that this speech identification algorithm has high identification rate, and can decrease or eliminate the mismatch between training pattern and speech test resulting from noise. It can reach all demands of speech identification rate for medical devices.
Keywords: endpoint detection; MFCC; ADTW mode match; Matlab simulation
隨著語音識別技術(shù)的發(fā)展,語音識別技術(shù)在旅游業(yè)、服務(wù)業(yè)和軍事領(lǐng)域中都被廣泛應(yīng)用。本文主要研究的是孤立詞語音識別算法應(yīng)用于醫(yī)療儀器中,實現(xiàn)人與機器之間的通信,比如便攜式肺功能儀、家用心腦血管儀等,它使得醫(yī)療儀器使用起來更加方便自然,讓老年人和殘疾人可以無障礙地使用。
1 孤立詞語音識別系統(tǒng)
孤立詞語音識別系統(tǒng)的原理如圖1所示。
圖1 孤立詞識別系統(tǒng)原理
在訓練階段,用戶將每個詞依次說一遍,并將計算得到的每個詞所對應(yīng)的特征矢量序列作為模板存入模板庫中。在識別階段,將輸入語音的特征矢量序列依次與模板庫中的每一模板進行相似度比較,將相似度最高者作為識別結(jié)果輸出。
2 孤立詞語音識別算法設(shè)計
孤立詞語音識別算法設(shè)計主要包括三大部分:一是帶噪聲端點檢測,本文采用短時能量和短時過零率相結(jié)合的方法,力求使噪聲的干擾降到最低,滿足抗干擾的要求。二是特征參數(shù)提取,采用一種符合人耳聽覺特性的Mel頻率倒譜系數(shù)MFCC算法,該算法能很好地表征語音信號,而且在噪聲環(huán)境下能取得很好的識別效果。三是模板匹配,采用平行四邊形限制動態(tài)規(guī)整范ADTW算法,可以大大減小計算量,提高程序的性能。
2.1 帶噪聲端點檢測算法
(1) 短時平均能量[1]。設(shè)S(n)為加窗語音信號,第t幀語音的短時平均能量為:
Eng(t)=1N∑N-1n=0|S2t(n)|(1)
Eng(t)=1N∑N-1n=0|St(n)|(2)
式中:N為分析窗寬度;St(n)為第t幀語音信號中的第n個點的信號樣值。上面兩式原理是相同的,但式(2)有利于區(qū)別小取樣值和大取樣值,不像式(1)取平方造成很大差異[2]。短時平均能量是時域特征參數(shù)。把它用于模型參數(shù)時,應(yīng)進行歸一化處理,本文將取其對數(shù)值后使用,使計算和識別結(jié)果均取得了較好的效率和結(jié)果。
(2) 短時過零率[1]。短時過零率ZCR(zero crossing rate)為:
Zn=∑∞m=-∞[sgn(x(m))-sgn(x(m-1)]#8226;W(n-m)(3)
式中:
sgn[x(n)]=1,x(n)>NoiseMax
(NoiseMax為噪聲上限)-1,x(n) (NoiseMin為噪聲下限) 0, otherwise(4) W(n)=12N, 0≤n≤N-1 (N為1幀聲音的長度) 0,otherwise(5) 在開始進行端點檢測之前,首先為短時能量和過零率分別確定2個門限[3]。一個是比較低的門限,其數(shù)值比較小,對信號的變化比較敏感,很容易被超過;另一個是比較高的門限,數(shù)值比較大,信號必須達到一定的強度,該門限才可能被超過。低門限被超過未必就是語音的開始,有可能是時間很短的噪聲引起的。高門限被超過則可以基本確信是由于語音信號引起的。整個語音信號的端點檢測可以分成4段[4]:靜音、過渡段、語音段、結(jié)束。在靜音段,如果能量或過零率超越了低門限,就應(yīng)該開始標記起始點,進入過渡段。在過渡段中,由于參數(shù)的數(shù)值比較小,不能確信是否處于真正的語音段,因此只要2個參數(shù)的數(shù)值回落到低門限以下,就將當前狀態(tài)恢復到靜音狀態(tài)。而如果在過渡段中兩個參數(shù)中的任一個超過了高門限,就可以確信進入語音段了。一些突發(fā)性的噪聲也可以引起短時能量或過零率的數(shù)值很高,但是往往不能維持足夠長的時間,如門窗的開關(guān)、物體的碰撞等引起的噪聲,這些都可以通過設(shè)定最短時間門限來判別。當前狀態(tài)處于語音段時,如果2個參數(shù)的數(shù)值降低到低門限以下,而且總的計時長度小于最短時間門限,則認為這是一段噪音。 2.2 Mel頻率倒譜系數(shù)MFCC算法 Mel頻率倒譜系數(shù)(Mel-frequency cepstral coefficients,MFCC)的分析基于人耳的聽覺特性[5]。因為,人耳聽到的聲音的高低與聲音的頻率并不成線性正比關(guān)系,Mel頻率尺度更符合人耳的聽覺特性。所謂Mel頻率尺度,它的值大體上對應(yīng)于實際頻率的對數(shù)分布關(guān)系,具體關(guān)系可用式(6)表示: Mel(f)=2 595log(1+f/700)(6) 實際頻率f的單位是Hz,臨界頻率帶寬隨著頻率的變化而變化,并與Mel頻率的增長一致。在1 000 Hz以下,大致呈線性分布,帶寬為100 Hz左右,在1 000 Hz以上呈對數(shù)增長。類似于臨界帶的劃分,可以將語音頻率劃分成一系列三角形的濾波器序列,即Mel濾波器組,MFCC參數(shù)的計算過程步驟如下: (1) 根據(jù)式(6)將實際頻率尺度轉(zhuǎn)換為Mel頻率尺度。 (2) 在Mel頻率軸上配置L個通道的三角濾波器組,L的個數(shù)由信號的截止頻率決定。每個三角形濾波器中心頻率c(l)在Mel頻率軸上等間隔分配。設(shè)o(l),c(l),h(l)分別是第l個三角濾波器的下限、中心和上限頻率,則相鄰三角形濾波器之間的下限、中心和上限頻率有如下關(guān)系: c(l)=h(l-1)=o(l+1)(7) (3) 根據(jù)語音信號幅度譜xn(k)求每個三角形濾波器的輸出: m(l)=∑h(l)k=o(l)wl(k)×|xn(k)|(8) 式中: wl(k)=k-o(l)c(l)-o(l),o(l)≤k≤c(l) h(l)-kh(l)-c(l),c(l)≤k≤h(l)(9) (4) 對所有濾波器的輸出做數(shù)學對數(shù)運算再進一步做離散余弦變換(DCT)即可得到MFCC。 CMFCC(i)=2/Nlog m(l)cos{(l-1/2)iπ/L}(10) 2.3 模板匹配ADTW算法 傳統(tǒng)DTW算法的一個缺點就是模式匹配的運算量太大[6],為了減少計算量和存儲空間的需求,本文采用了整體路徑約束DTW算法即ADTW算法。采用平行四邊形限制動態(tài)規(guī)整范圍,如圖2所示。平行四邊形之外的路徑點對應(yīng)的幀匹配距離是不需要計算和的。也不用保存所有的幀匹配距離和累積距離矩陣,因為每一列各路徑點上的匹配計算只用到了前一列的3個點[7]。充分利用這兩個特點可以減少計算量和存儲空間的需求[8]。把實際的動態(tài)彎折分為3段:(1,xA),(xA+1,xB)和(xB+1,N)。其中: xA=(1/3)(2M-N) xB=(2/3)(2N-M)(11) xA和xB都取最相近的整數(shù)。由此也得出對M和N長度的限制條件: 2M-N≥3 2N-M≥2 (12) 當不能滿足以上條件時,則認為兩者差別太大,無法進行動態(tài)彎折匹配。此時,在x軸上的每一幀不再需要與y軸上的每一幀進行匹配比較,而只是需要與y軸上[ymin,ymax]間的數(shù)據(jù)幀進行比較,ymin和ymax的計算如下: ymin=x/2,0≤x≤xB 2x+(M-2N),xB≤x≤N(13) ymax=2x, 0≤x≤xA x/2+(M-N/2),xA≤x≤N(14) 也可能出現(xiàn)xA>xB的情況,此時彎折匹配的三段為(1,xB),(xB+1,xA),和(xA+1,N)。對于x軸上每前進一幀,雖然所要比較的y軸上的幀數(shù)不同,但彎折特性是一樣的,累積距離矩陣的更新都可以用下式實現(xiàn): D(x,y)=d(x,y)+min[D(x-1,y), D(x-1,y-1),D(x-1,y-2)](15) 圖2 平行四邊形區(qū)域限 2.4 孤立詞語音識別算法Matlab實驗仿真 為了對語音識別算法應(yīng)用于醫(yī)療儀器中的效果進行測試,本文以便攜式肺功能儀為例,設(shè)計了一些識別命令,基于Matlab構(gòu)建了孤立詞語音識別系統(tǒng)[9],對識別算法進行仿真和分析。該命令分別是:開電源、關(guān)電源、肺功能檢測、檢測結(jié)果提示、打印輸出、保存檢測結(jié)果等。 該系統(tǒng)使用設(shè)計的模板匹配技術(shù)、特征提取和帶噪聲端點檢測技術(shù)。語音采用頻率為8 kHz,16位量化精度,預加重系數(shù)a=0.95,語音幀每幀30 ms,240點為1幀,幀移為80,窗函數(shù)采用Hamming窗[10]。實驗人員為2名同學,一男一女。實驗仿真數(shù)據(jù)如下: (1) 帶噪聲端點檢測算法仿真結(jié)果。本次端點檢測實驗參考模板為25個,測試模板為20個,識別率為85%,基本符合醫(yī)療儀器的要求,圖3為男生“肺功能檢測”端點檢測圖。 (2) 模板匹配ADTW算法仿真結(jié)果。模板匹配ADTW實驗的識別率達到 95%,完全達到了醫(yī)療儀器的要求。圖4 為模板匹配Matlab程序輸出結(jié)果。從輸出結(jié)果看,識別得到了正確的結(jié)果。 3 結(jié) 語 實驗證明,本文設(shè)計的孤立詞語音識別算法能夠?qū)︶t(yī)療儀器中一些命令詞進行識別,并且有很高的識別率,完全滿足醫(yī)療儀器對語音識別率的要求,為更多的人提供了方便,在醫(yī)療領(lǐng)域中有很好的應(yīng)用前景。而連續(xù)語音的識別目前來說還比較難以達到高的識別率,這也是今后語音識別研究發(fā)展的方向。在不遠的將來,語音識別技術(shù)將作為一種重要的人機交互手段,輔助甚至取代傳統(tǒng)的鍵盤、鼠標等輸入設(shè)備,實現(xiàn)語音控制操作各種設(shè)備。 圖3 男聲“肺功能檢測”端點檢測 圖4 模板匹配Matlab程序輸出結(jié)果 參考文獻 [1]胡航.語音信號處理[M].3版.哈爾濱:哈爾濱工業(yè)大學出版社,2005. [2]BHIKSHA R, RITA S. Classifier-based non-linear projection for adaptive endpointing of continuous speech[J]. Computer Speech Language, 2003, 17(l): 5-26. [3]徐大為,吳邊.一種噪聲環(huán)境下的實時語音端點檢測算法[J].計算機工程與應(yīng)用,2003(1):115-117. [4]肖宜.語音識別中雙門限端點檢測算法的研究[D].武漢:武漢理工大學,2008. [5]HUANG C S, WANG H C. Bandwidth-adjusted LPC ana-lysis for robust speech recognition[J]. Pattern Recognition Letters, 2003, 24(9): 1593-1597. [6]李須真,李虎生,劉潤生.漢語數(shù)碼語音識別算法在定點DSP上的實現(xiàn)[M].北京:清華大學出版社,2003. [7]馬莉,黨幼云.特定人孤立詞語音識別系統(tǒng)的仿真與分析[J].西安工程科技學院學報,2007,21(3):10-12. [8]劉金偉,黃樟欽,侯義斌.基于片上系統(tǒng)的孤立詞語音識別算法設(shè)計[J].計算機工程,2007,33(13):25-27. [9]何強,何英.Matlab擴展編程[M].北京:清華大學出版社,2002. [10]楊行峻.語音信號數(shù)字處理[M].北京:電子工業(yè)出版社,2003.