基于片上系統(tǒng)SoC的孤立詞語(yǔ)音識(shí)別算法設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1. 引言
目前,嵌入式語(yǔ)音識(shí)別系統(tǒng)的實(shí)現(xiàn)主要通過(guò)單片機(jī)MCU和數(shù)字信號(hào)處理器DSP來(lái)實(shí)現(xiàn)[1]。但是單片機(jī)運(yùn)算速度慢,處理能力不高;雖然DSP處理速度很快,但是產(chǎn)品的成本很高,電源能量消耗也很大。因此,為了滿足嵌入式交互系統(tǒng)的體積越來(lái)越小、功能越來(lái)越強(qiáng)的苛刻需求,語(yǔ)音識(shí)別片上系統(tǒng)SoC(System on Chip)應(yīng)運(yùn)而生。
語(yǔ)音識(shí)別片上系統(tǒng)SoC本身就是一塊芯片,在單一芯片上集成了模擬語(yǔ)音模數(shù)轉(zhuǎn)換器ADC、數(shù)模轉(zhuǎn)換器DAC、信號(hào)采集和轉(zhuǎn)換、處理器、存儲(chǔ)器和I/O接口等,只要加上極少的電源就可以具有語(yǔ)音識(shí)別的功能,集成了聲音信息的采集、取樣、處理、分析和記憶。SoC具有片內(nèi)處理器和片內(nèi)總線,有著更靈活的應(yīng)用方式。它具有速度快,體積小,成本低,可擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),有著廣泛的應(yīng)用前景,已經(jīng)成為語(yǔ)音識(shí)別技術(shù)應(yīng)用發(fā)展的一個(gè)重要方向[2-3]。研究和開發(fā)應(yīng)用于片上系統(tǒng)SoC芯片的語(yǔ)音識(shí)別算法有著非常重要的意義。
2. 孤立詞語(yǔ)音識(shí)別系統(tǒng)
孤立詞語(yǔ)音識(shí)別系統(tǒng)應(yīng)用于嵌入式控制領(lǐng)域,例如數(shù)字家庭控制、車載語(yǔ)音控制和智能語(yǔ)音可控玩具等。在訓(xùn)練階段,用戶將每一個(gè)詞依次說(shuō)一遍,并將計(jì)算得到的每一個(gè)詞所對(duì)應(yīng)的特征矢量序列作為模板存入模板庫(kù)中。在識(shí)別階段,將輸入語(yǔ)音的特征矢量序列依次與模板庫(kù)中的每一模板進(jìn)行相似度比較,將相似度最高者作為識(shí)別結(jié)果輸出。
3. 針對(duì)片上系統(tǒng)SOC的孤立詞語(yǔ)音識(shí)別算法設(shè)計(jì)
在SoC芯片中實(shí)現(xiàn)孤立詞語(yǔ)音識(shí)別系統(tǒng),就要根據(jù)語(yǔ)音識(shí)別片上系統(tǒng)的特點(diǎn),來(lái)進(jìn)行SoC的語(yǔ)音識(shí)別算法的選擇和設(shè)計(jì)。
首先是特征提取算法的選擇。MFCC算法考慮到了人的聽覺(jué)效果,能很好的表征語(yǔ)音信號(hào),而且在噪聲環(huán)境下能取得很好的識(shí)別效果。而LPC系數(shù)主要是模擬人的發(fā)聲模型,對(duì)元音有較好的的描述能力,對(duì)輔音描述能力較差,抗噪聲性能也相對(duì)差一些。但是從算法的計(jì)算量來(lái)考慮,MFCC提取特征參數(shù)是LPCC 的10倍左右,通常在嵌入式系統(tǒng)下較難實(shí)現(xiàn)實(shí)時(shí)性。因此,選用LPCC算法。
模式匹配技術(shù)的選擇。隱馬爾柯夫模型HMM方法是用概率及統(tǒng)計(jì)學(xué)理論來(lái)對(duì)語(yǔ)音信號(hào)進(jìn)行分析與處理的,適用于大詞匯量、非特定人的語(yǔ)音識(shí)別系統(tǒng)。該算法對(duì)系統(tǒng)資源的要求較多。而動(dòng)態(tài)時(shí)間規(guī)整技術(shù)DTW采用模板匹配法進(jìn)行相似度計(jì)算,是一個(gè)最為小巧的語(yǔ)音識(shí)別算法,系統(tǒng)開銷小,識(shí)別速度快,可有效節(jié)約系統(tǒng)資源,降低系統(tǒng)成本開支。由于嵌入式系統(tǒng)資源有限,語(yǔ)音命令識(shí)別系統(tǒng)所需要的詞匯量有限,所需識(shí)別的語(yǔ)音都是簡(jiǎn)短的命令,模式匹配算法選擇DTW。
3.1 端點(diǎn)檢測(cè)算法設(shè)計(jì)
一個(gè)好的端點(diǎn)檢測(cè)算法可以在一定程度上提高系統(tǒng)的識(shí)別率。在雙門限端點(diǎn)檢測(cè)原理的基礎(chǔ)上,進(jìn)行語(yǔ)音端點(diǎn)檢測(cè)算法的設(shè)計(jì)。為了提高端點(diǎn)檢測(cè)的精度,采用短時(shí)能量E和短時(shí)過(guò)零率ZCR。
語(yǔ)音采樣頻率為8KHz,量化精度為16位,數(shù)字PCM碼首先經(jīng)過(guò)預(yù)加重濾波器H(z)=2-0.95z-1,再進(jìn)行分幀和加窗處理,每幀30ms,240點(diǎn)為一幀,幀移為80,窗函數(shù)采用Hamming窗。然后對(duì)每幀語(yǔ)音進(jìn)行歸一化處理,即把每點(diǎn)的值都除以所有語(yǔ)音幀中數(shù)值絕對(duì)值的最大值,把值的范圍從[-32767,32767]轉(zhuǎn)換到[-1,1]。
在實(shí)驗(yàn)中發(fā)現(xiàn),雙門限端點(diǎn)檢測(cè)算法對(duì)于兩個(gè)漢字和三個(gè)漢字的語(yǔ)音命令端點(diǎn)檢測(cè)效果不好。以語(yǔ)音“開燈”為例,如圖1所示語(yǔ)音波形圖中,端點(diǎn)檢測(cè)只能檢測(cè)到第一個(gè)字。
圖1 改進(jìn)前對(duì)語(yǔ)音“開燈”的端點(diǎn)檢測(cè)
Fig2. the endpointing detection of speech “kaideng” before ameliorate
如果語(yǔ)音命令中兩個(gè)字的間隔過(guò)長(zhǎng),使用雙門限端點(diǎn)檢測(cè)方法會(huì)發(fā)生只檢測(cè)到第一個(gè)字的情況,在實(shí)際中“開燈”和“開門”等命令只提取了“開”字的語(yǔ)音,從而可能造成語(yǔ)音匹配的錯(cuò)誤。
為避免該錯(cuò)誤,采用的辦法是,把可容忍的靜音區(qū)間擴(kuò)大到15幀 (約150ms)。在雙門限的后一門限往后推遲15幀,如15幀內(nèi)一直沒(méi)有energy和ZCR超過(guò)最低門限,則認(rèn)為語(yǔ)音結(jié)束;如發(fā)現(xiàn)仍然有語(yǔ)音,則繼續(xù)算入在內(nèi)。
圖2 改進(jìn)后對(duì)語(yǔ)音“開燈”的端點(diǎn)檢測(cè)
Fig3. the endpointing detection of speech “kaideng” after ameliorate
改進(jìn)后,整個(gè)語(yǔ)音信號(hào)的端點(diǎn)檢測(cè)流程設(shè)計(jì)為四個(gè)階段:靜音、過(guò)渡段、語(yǔ)音段和語(yǔ)音結(jié)束。在靜音段,如果能量或過(guò)零率超越了低門限,就應(yīng)該開始標(biāo)記起始點(diǎn),進(jìn)入過(guò)渡段。在過(guò)渡段中,由于參數(shù)的數(shù)值比較小,不能確信是否處于真正的語(yǔ)音段,因此只要兩個(gè)參數(shù)的數(shù)值都回落到低門限以下,就將當(dāng)前狀態(tài)恢復(fù)到靜音狀態(tài)。而如果在過(guò)渡段中兩個(gè)參數(shù)中的任一個(gè)超過(guò)了高門限,就可以確信進(jìn)入語(yǔ)音段。在語(yǔ)音段,如果兩個(gè)參數(shù)的數(shù)值降低到低門限以下,并且一直持續(xù)15幀,那么語(yǔ)音進(jìn)入停止。如果兩個(gè)參數(shù)的數(shù)值降低到低門限以下,但是并沒(méi)有持續(xù)到 15幀,后續(xù)又有語(yǔ)音段越過(guò)低門限,那么認(rèn)為語(yǔ)音還沒(méi)有結(jié)束。最后,如果檢測(cè)出的這段語(yǔ)音總長(zhǎng)度小于可接受的最小的語(yǔ)音幀數(shù)(設(shè)為15幀),則認(rèn)為是一段噪音而放棄。
采用改進(jìn)后的端點(diǎn)檢測(cè)算法,對(duì)于單個(gè)漢字或多個(gè)漢字的語(yǔ)音命令均識(shí)別常。圖2為語(yǔ)音“開燈”的端點(diǎn)檢測(cè)圖(兩條紅線以內(nèi)的部分為檢測(cè)出來(lái)的語(yǔ)音部分)。
[!--empirenews.page--]
3.2 LPCC特征參數(shù)提取算法設(shè)計(jì)
LPC參數(shù)是模擬人的發(fā)聲器官的,是一種基于語(yǔ)音合成的特征參數(shù)。在實(shí)際應(yīng)用中,使用較多的是由LPC系數(shù)推導(dǎo)出的另一種系數(shù),線性預(yù)測(cè)倒譜系數(shù)LPCC(Linear Predictive Ceptrum Coefficients)。
3.2.1線性預(yù)測(cè)編碼LPC算法
LPC模型的基本思想是:對(duì)于給定一n時(shí)刻采樣的語(yǔ)音信號(hào)采樣值s(n),可以用p個(gè)取樣值的加權(quán)和線性組合來(lái)表示[4]。 a1, a2,…, ap稱為L(zhǎng)PC系數(shù),也是全極點(diǎn)H(z)模型的參數(shù)。
cm為倒譜系數(shù),am為線性預(yù)測(cè)系統(tǒng),m為倒譜系數(shù)的階數(shù),p為線性預(yù)測(cè)系統(tǒng)的階數(shù)。這樣利用LPC系數(shù)通過(guò)遞推公式可以得到LPCC參數(shù)。LPCC由于利用了線性預(yù)測(cè)中聲道系統(tǒng)函數(shù)的最小相位特性,避免了相位卷積、求復(fù)對(duì)數(shù)
3.3 基于DTW的模式匹配算法設(shè)計(jì)
3.3.1 動(dòng)態(tài)時(shí)間規(guī)整DTW算法
存入模板庫(kù)的各個(gè)詞條稱為參考模板,一個(gè)參考模板可表示為R={R(1), R(2),…, R(m),…, R(M)}。m為訓(xùn)練語(yǔ)音幀的時(shí)序標(biāo)號(hào),m =1為起點(diǎn)語(yǔ)音幀,m =M為終點(diǎn)語(yǔ)音幀,M為該模式包含的語(yǔ)音幀總數(shù),R(m)為第m幀的語(yǔ)音LPC倒譜特征矢量。所要識(shí)別的一個(gè)輸入詞條語(yǔ)音稱為測(cè)試模板,可表示為T={T (1), T(2),…, T(n),…, T (N)},n為測(cè)試語(yǔ)音幀標(biāo)號(hào),模式中共包含N幀語(yǔ)音,T(n)為第n幀的LPC倒譜特征矢量。
比較參考模板和測(cè)試模板的相似度,可以計(jì)算它們的距離D[T,R],距離越小則相似度越高。語(yǔ)音中各個(gè)段落在不同情況下的持續(xù)時(shí)間會(huì)產(chǎn)生或長(zhǎng)或短的變化,大多數(shù)情況下測(cè)試模板和參考模板長(zhǎng)度不相等N≠M,因此采用動(dòng)態(tài)規(guī)整(DP)的方法。
DTW算法的實(shí)現(xiàn)為:分配兩個(gè)N×M矩陣,分別為累積距離矩陣D和幀匹配距離矩陣d,其中幀匹配距離矩陣d(i,j)的值為測(cè)試模板的第i幀與參考模板的第j幀間的距離。算法分為兩步:先要計(jì)算參考模板的所有幀和未知模板的所有幀之間的相互距離,結(jié)果存在矩陣d中;然后根據(jù)判斷函數(shù)計(jì)算累積距離矩陣D,D(N,M)即為最佳匹配路徑所對(duì)應(yīng)的匹配距離。DTW算法約束端點(diǎn)條件為:起點(diǎn)(1,1),終點(diǎn)(n,m),n和m分別為測(cè)試和參考語(yǔ)音模板的幀序列長(zhǎng)度。
3.3.2 應(yīng)用中提高識(shí)別率的改進(jìn)方法
在應(yīng)用中,提高DTW識(shí)別率的辦法有冗余模板法、松弛起點(diǎn)終點(diǎn)法、改進(jìn)局部路徑約束函數(shù)法等。
(1)冗余模板法。采用每個(gè)詞條多套模板的方法,可以改進(jìn)其識(shí)別效果。在實(shí)驗(yàn)中,采用在語(yǔ)音訓(xùn)練階段,每個(gè)詞條訓(xùn)練四次,即每個(gè)詞條提取出4個(gè)參考模板,這樣,只要測(cè)試模板與4個(gè)參考模板中的一個(gè)匹配成功,匹配結(jié)果就是正確的,這樣便大大提高了識(shí)別率。
(2)松弛起點(diǎn)終點(diǎn)法。將匹配過(guò)程中的固定起點(diǎn)(終點(diǎn))改為松弛起點(diǎn)(終點(diǎn))。端點(diǎn)對(duì)齊的限制條件提高了對(duì)語(yǔ)音端點(diǎn)檢測(cè)的精度要求。路徑不再是從(1,1)點(diǎn)出發(fā),可以從(n,m)=(1,2)或(2,1),或(1,3)或(3,1)…點(diǎn)出發(fā),稱為松弛起點(diǎn)。同樣,路徑也不必在(N,M)點(diǎn)結(jié)束,可在(n,m)=(N,M-1)或(N-1,M)或(N,M-2)或(N-2,M)點(diǎn)…結(jié)束,稱為松弛終點(diǎn)。松弛起點(diǎn)終點(diǎn)的優(yōu)點(diǎn)是可克服由于端點(diǎn)檢測(cè)不精確造成測(cè)試模板和參考模板起點(diǎn)終點(diǎn)不能嚴(yán)格對(duì)齊的問(wèn)題[6]。
(3)改變局部路徑約束函數(shù)法。不同的連續(xù)性條件導(dǎo)致了不同的路徑,局部路徑約束函數(shù)不一樣,DTW識(shí)別效果就會(huì)不同??梢詫?duì)局部約束路徑進(jìn)行加權(quán)處理,提高識(shí)別率。
本文中采用的模板匹配算法就是融合這三種改進(jìn)技術(shù)后的動(dòng)態(tài)規(guī)整算法,稱之為ADTW算法。對(duì)這種算法進(jìn)行了實(shí)驗(yàn),得到該算法的實(shí)際識(shí)別率,并對(duì)之進(jìn)行分析。
[!--empirenews.page--]
3.3.3 應(yīng)用中提高算法效率的改進(jìn)方法
在計(jì)算傳統(tǒng)DTW算法過(guò)程中,如果限定動(dòng)態(tài)規(guī)整的計(jì)算范圍,可以大大減小計(jì)算量,提高程序的性能。
采用平行四邊形限制動(dòng)態(tài)規(guī)整范圍,如圖3,菱形之外的節(jié)點(diǎn)對(duì)應(yīng)的幀匹配距離是不需要計(jì)算的,也沒(méi)有必要保存所有幀匹配距離矩陣和累積距離矩陣,以 ADTW的局部約束路徑為例,每一列各節(jié)點(diǎn)上的匹配計(jì)算只用到了前兩列的幾個(gè)節(jié)點(diǎn)。充分利用這兩個(gè)特點(diǎn)可以減少計(jì)算量和存儲(chǔ)空間的需求。把實(shí)際的動(dòng)態(tài)規(guī)整分為三段,(1,Xa),(Xa+1,Xb)和(Xb+1,N),
由于X軸上每前進(jìn)一幀,只用到前兩列的累積距離,所以只需要三個(gè)列矢量A、B和C分別保存連續(xù)三列的累積距離,而不需保存整個(gè)距離矩陣。每前進(jìn)一幀都對(duì)A、B、C進(jìn)行更新,即用A和B的值求出C,再根據(jù)B和C的值求出下一列的累積矩陣放入A中,由此可以反復(fù)利用這三個(gè)矢量,一直前進(jìn)到X軸上最后一列,最后一個(gè)求出矢量的第M個(gè)元素即為兩個(gè)模板動(dòng)態(tài)規(guī)整的匹配距離。
高效DTW對(duì)識(shí)別的區(qū)域進(jìn)行了限制,整個(gè)平面區(qū)域大小為M×N,匹配區(qū)域的大小為
公式(12)
若M=N=150,則限定區(qū)域內(nèi)的計(jì)算量只是傳統(tǒng)DTW算法計(jì)算量的24%;同時(shí)算法節(jié)省了空間,由原來(lái)的2個(gè)N×M矩陣,減少為3個(gè)M矢量,大大減少了需要的存儲(chǔ)空間,解決了普通DTW算法在存儲(chǔ)空間有限的嵌入式系統(tǒng)中難以實(shí)現(xiàn)的問(wèn)題。
4. MATLAB實(shí)驗(yàn)與分析
為了對(duì)算法的識(shí)別效果進(jìn)行測(cè)試,設(shè)計(jì)了用于數(shù)字家庭控制系統(tǒng)的識(shí)別命令集,并基于Matlab構(gòu)建了孤立詞語(yǔ)音識(shí)別系統(tǒng),對(duì)識(shí)別算法進(jìn)行實(shí)驗(yàn)和分析。該命令集包括語(yǔ)音命令100條,分別是如下幾類:
l 語(yǔ)音通話控制命令,例如,“撥打電話”,數(shù)字,人名;
l 音樂(lè)控制類,“打開音樂(lè)”、“減小音量”等;
l 門窗控制類,“關(guān)閉百葉窗”、“打開大門”等;
l 家庭電器控制類,“打開空調(diào)”、“打開收音機(jī)”等。
該系統(tǒng)使用設(shè)計(jì)的端點(diǎn)檢測(cè)技術(shù)、特征提取和模板匹配技術(shù)。語(yǔ)音采用頻率為8KHz,16位量化精度,預(yù)加重系數(shù)a=0.95,語(yǔ)音幀每幀 30ms,240點(diǎn)為一幀,幀移為80,窗函數(shù)采用Hamming 窗。LPC參數(shù)為10階,LPCC參數(shù)為16階。實(shí)驗(yàn)人員為三名同學(xué),兩男一女,分別用甲乙丙代表,實(shí)驗(yàn)環(huán)境為辦公室環(huán)境。實(shí)驗(yàn)平臺(tái)為Windows XP,Matlab 7.0,進(jìn)行的各項(xiàng)實(shí)驗(yàn)和數(shù)據(jù)分別如下:
(1)改進(jìn)端點(diǎn)檢測(cè)實(shí)驗(yàn)
針對(duì)于設(shè)計(jì)的端點(diǎn)檢測(cè)算法,得到改進(jìn)前和改進(jìn)后語(yǔ)音識(shí)別率的變化,數(shù)據(jù)見表1。其中,改進(jìn)前和改進(jìn)后所用的參考模板和測(cè)試模板數(shù)據(jù)相同。實(shí)驗(yàn)的過(guò)程是,Matlab程序自動(dòng)把50個(gè)測(cè)試模板逐個(gè)和100個(gè)參考模板進(jìn)行匹配,找到測(cè)試模板所對(duì)應(yīng)的語(yǔ)音命令。
表1 改進(jìn)端點(diǎn)檢測(cè)前后的識(shí)別率
Table 1. the recognition ratio of before and after ameliorate endpointing detection
從數(shù)據(jù)可以看出,對(duì)端點(diǎn)檢測(cè)進(jìn)行改進(jìn)后,平均識(shí)別率從74%提高到82%,這是因?yàn)楦倪M(jìn)后的端點(diǎn)檢測(cè)能夠有效地區(qū)分噪音和語(yǔ)音,嚴(yán)格的把語(yǔ)音段提取出來(lái)。
(2)使用冗余參考模板實(shí)驗(yàn)
對(duì)每個(gè)語(yǔ)音命令建立四個(gè)參考模板,其他同實(shí)驗(yàn)(1),實(shí)驗(yàn)數(shù)據(jù)見表2。
表2 使用冗余參考模板前后的識(shí)別率
Table 2. the recognition ratio of before and after use redundancy reference template
從實(shí)驗(yàn)數(shù)據(jù)看出,使用冗余模板后,平均識(shí)別率由87.5%提高到95%,平均誤識(shí)率由12.5%下降到5%。所以,使用冗余參考模板有效的提高了識(shí)別性能。
[!--empirenews.page--]
(3)提高識(shí)別率的ADTW實(shí)驗(yàn)
基于實(shí)驗(yàn)(2),使用松弛起點(diǎn)終點(diǎn)法和改變局部判決路徑函數(shù)法對(duì)DTW進(jìn)行改進(jìn),稱改進(jìn)后的算法為ADTW,改進(jìn)前后的兩種算法都采用一個(gè)詞條四個(gè)模板。實(shí)驗(yàn)數(shù)據(jù)見表3,其中平均識(shí)別率為三個(gè)人的平均識(shí)別率。
表3 傳統(tǒng)DTW和ADTW識(shí)別率比較
Table 3. the recognition ratio of DTW and ADTW
從實(shí)驗(yàn)數(shù)據(jù)可以看出,ADTW相對(duì)于傳統(tǒng)的DTW算法,平均識(shí)別率有了一定的提高,因?yàn)楸疚膶?shí)現(xiàn)的系統(tǒng)采用了ADTW算法。該算法平均識(shí)別率為98%,基本滿足了語(yǔ)音識(shí)別片上系統(tǒng)的需要。
5. 總結(jié)
本文在研究了現(xiàn)有的語(yǔ)音識(shí)別算法和理論的基礎(chǔ)上,在應(yīng)用中對(duì)雙門限端點(diǎn)檢測(cè)算法作了延長(zhǎng)可容忍靜音的改進(jìn),在一定程度上提高了整個(gè)系統(tǒng)的識(shí)別率;特征提取技術(shù)采用了線性預(yù)測(cè)編碼LPC及其倒譜系數(shù)LPCC,對(duì)其計(jì)算過(guò)程進(jìn)行了分析。從提高算法識(shí)別率和提高算法執(zhí)行效率兩個(gè)角度對(duì)DTW進(jìn)行了改進(jìn)和重新設(shè)計(jì),提出了松弛起點(diǎn)終點(diǎn)和改進(jìn)局部判決函數(shù)的ADTW算法,在實(shí)驗(yàn)中獲得了很高的識(shí)別率。
參考文獻(xiàn)
[1] 孫樣娥,汪忠德.基于G.729算法的新型語(yǔ)音通信系統(tǒng)的實(shí)現(xiàn).微計(jì)算機(jī)信息[J],2005, 21-4:152-154
[2] 朱璇, 劉加, 劉潤(rùn)生. 語(yǔ)音識(shí)別技術(shù)新熱點(diǎn)—語(yǔ)音識(shí)別專用芯片. 世界電子元器件[J], 2002:26-27.
[3] 趙念強(qiáng),鮑可進(jìn),申屠浩.基于Soc單片機(jī)C8051F的碼頭供給監(jiān)控系統(tǒng). 微計(jì)算機(jī)信息[J],2005, 21-3:46-48.
[4] 楊行峻, 遲惠生. 語(yǔ)音信號(hào)數(shù)字處理[M]. 電子工業(yè)出版社, 1995.
[5] Itakura F. Minimum prediction residual applied to speech recognition. IEEE Transactions on Acoustics, Speech, and Signal Processing[J], 1975, 23:67-72.
[6] Bernd Burchard, Ronald Romer. A single chip phoneme based HMM speech recognition system for consumer applications IEEE2000[J].