0 引 言
在孤立詞語音識別中,最為簡單有效的方法是采用動態(tài)時間規(guī)整(Dynamic Time Warping,DTW)算法,該算法解決了發(fā)音長短不一的模板匹配問題,是語音識別中出現(xiàn)最早、較為經(jīng)典的一種算法。用于孤立詞識別,該算法較現(xiàn)在比較流行的HMM算法在相同的環(huán)境條件下,識別效果相差不大,但HMM算法要復(fù)雜的多,這主要體現(xiàn)在HMM算法在訓練階段需要提供大量的語音數(shù)據(jù),通過反復(fù)計算才能得到模型參數(shù),而DTW算法的訓練中幾乎不需要額外的計算。所以在孤立詞語音識別中,DTW算法仍得到廣泛的應(yīng)用。本系統(tǒng)就采用了該算法。
1 系統(tǒng)概述
語音識別系統(tǒng)的典型實現(xiàn)方案如圖1所示。輸入的模擬語音信號首先要進行預(yù)處理,包括預(yù)濾波、采樣和量化、加窗、斷點檢測、預(yù)加重等。語音信號經(jīng)過預(yù)處理后,接下來重要的一環(huán)就是特征參數(shù)提取,其目的是從語音波形中提取出隨時間變化的語音特征序列。然后建立聲學模型,在識別的時候?qū)⑤斎氲恼Z音特征同聲學模型進行比較,得到最佳的識別結(jié)果。
2 硬件構(gòu)成
2.1 系統(tǒng)構(gòu)成
這里采用DSP芯片為核心(圖2),系統(tǒng)包括直接雙訪問快速SRAM、一路ADC/一路DAC及相應(yīng)的模擬信號放大器和抗混疊濾波器。外部只需擴展FLASH存儲器、電源模塊等少量電路即可構(gòu)成完整系統(tǒng)應(yīng)用。
2.2 系統(tǒng)主要功能模塊構(gòu)成
語音處理模塊采用TI TMS320VC5402,其主要特點包括:采用改進的哈佛結(jié)構(gòu),一條程序總線(PB),三條數(shù)據(jù)總線(CB,DB,EB)和四條地址總線(PAB,CAB,DAB,EAB),帶有專用硬件邏輯CPU(40位算術(shù)邏輯單元(ALU),包括1個40位桶形移位器和二個40位累加器;一個17×17乘法器和一個40位專用加法器,允許16位帶或不帶符號的乘法),片內(nèi)存儲器(八個輔助寄存器及一個軟件棧),片內(nèi)外專用的指令集,允許使用業(yè)界最先進的定點DSP C語言編譯器。TMS320VC5402含4 KB的片內(nèi)ROM和16 KB的雙存取RAM,一個HPI(HostPortInterface)接口,二個多通道緩沖單口MCBSP(Multi-Channel Buffered SerialPort),單周期指令執(zhí)行時間10 ns,帶有符合IEEE1149.1標準的JTAG邊界掃描仿真邏輯。語音輸入、輸出的模擬前端采用TI公司的TLC320ADSOC,它是一款集成ADC和DAC于一體的模擬接口電路,并且與DSP接口簡單,性能高、功耗低,已成為當前語音處理的主流產(chǎn)品。16位數(shù)據(jù)結(jié)構(gòu),音頻采樣頻率為2~22.05 kHz,內(nèi)含抗混疊濾波器和重構(gòu)濾波器的模擬接口芯片,還有一個能與許多DSP芯片相連的同步串行通信接口。TLC320AD50C片內(nèi)還包括一個定時器(調(diào)整采樣率和幀同步延時)和控制器(調(diào)整編程放大增益、鎖相環(huán)PLL、主從模式)。TLC320AD50C與TMS320VC5402的硬件連接,如圖3所示。
3 語音識別算法實現(xiàn)
3.1 語音信號的端點檢測
語音的端點檢測是語音識別中最基本的模塊,在嵌入式語音識別系統(tǒng)中更是占有非常重要的地位:一方面端點檢測的結(jié)果不準確,系統(tǒng)的識別性能就得不到保證;另一方面如果端點檢測的結(jié)果過于放松,雖然語音部分被很好地包含在處理的信號中,但是增加過多的靜音則會增加系統(tǒng)的運算量,同時對識別性能也有負面影響。因此為能量和過零率兩個參數(shù)分別設(shè)定兩個門限,一個是比較低的門限,數(shù)值比較小,對信號的變化比較敏感,很容易就被超過。另一個是比較高的門限,數(shù)值比較大,信號必須達到一定的強度,該門限才可能被超過。低門限被超過未必就是語音的開始,有可能是時間很短的噪聲引起的。高門限被超過,則基本確信是由于語音信號引起的。
整個語音信號的端點檢測可以分為四段:靜音、過渡段、語音段、結(jié)束。程序中使用一個變量status來表示當前所處的狀態(tài)。在靜音段,如果能量或過零率超越了低門限,就應(yīng)該開始標記起始點,進入過渡段。在過渡段中,由于參數(shù)的數(shù)值比較小,不能確信是否處于真正的語音段,因此只要兩個參數(shù)的數(shù)值都回落到低門限以下,就將當前狀態(tài)恢復(fù)到靜音狀態(tài)。而如果在過渡段中兩個參數(shù)中任意一個超過了高門限,就可以確信進入語音段了。一些突發(fā)性的噪聲可以引發(fā)短時能量或過零率的數(shù)值很高,但是往往不能維持足夠長的時間,這些可以通過設(shè)定最短時間門限來判別。當前狀態(tài)處于語音段時,如果兩個參數(shù)的數(shù)值降低到低門限以下,而且總的計時長度小于最短時間門限,則認為這是一段噪音,繼續(xù)掃描以后的語音數(shù)據(jù)。否則就標記好結(jié)束端點,并返回。
3.2 語音特征參數(shù)的提取
近年來,一種能夠比較充分利用人耳這種特殊的感知特新的參數(shù)得到了廣泛的應(yīng)用,這就是Mel尺度倒譜參數(shù)(Mel-scaled Cepstrum Coefficients,MFCC)。它和線性頻率的轉(zhuǎn)換關(guān)系是:
fMel=2 596log10(1+f/700)
MFCC參數(shù)是按幀計算的。首先要通過FFT得到該幀信號的功率譜,轉(zhuǎn)換為Mel頻率下的功率譜。這需要在計算之前先在語音的頻譜范圍內(nèi)設(shè)置若干個帶通濾波器Hm(n)。MFCC參數(shù)的計算流程為:
(1)確定每一幀語音采樣序列的點數(shù),本系統(tǒng)采取N=256點。對每幀序列s(n)進行預(yù)加重處理后再經(jīng)過離散FFT變換,取模的平方得到離散功率譜s(n)。
(2)計算s(n)通過M個Hm(n)后所得的功率值,即計算s(n)和Hm(n)在各個離散頻率點上乘積之和,得到M個參數(shù)Pm,m=0,1,…,M-1。
(3)計算Pm的自然對數(shù),得到Lm,m=0,1,…,M-1。
(4)對L0,L1,…,LM-1計算其離散余弦變換,得到Dm,m=0,1,…,M-1。
(5)舍去代表直流成分的D0,取D1,D2,…,DK作為MFCC參數(shù)。此處K=12。
3.3 特定人語音識別算法
在孤立詞語音識別中,最為簡單有效的方法是采用DTW動態(tài)時間規(guī)整算法,設(shè)參考模板特征矢量序列為A={a1,a2,…,aj),輸入語音特征矢量序列為B={b1,b2,…,bk),j≠k。DTW算法就是要尋找一個最佳的時間規(guī)整函數(shù),使得語音輸入B的時間軸k映射到參考模板A的時間軸j上總的累計失真最小。
將己經(jīng)存入模板庫的各個詞條稱為參考模板,一個參考模板可以表示為{R(1),R(2),…,R(M)},m為訓練語音幀的時序標號,m=1為起點語音幀,m=M為終點語音幀,因此M為該模式包含的語音幀總數(shù),R(m)為第m幀語音的特征矢量。所要識別的一個輸入詞條語音稱為參考模板,可表示為{T(1),T(2),…,T(N)),n為測試語音幀標號,模板中共包含N幀音,T(n)為第n幀音的特征矢量。
為了比較它們的相似度,可以計算,它們之間的失真D[T,R],失真越小相似度越高。為了計算這一失真,應(yīng)從T和R中各個對應(yīng)幀之間的失真算起。將各個對應(yīng)幀之間的失真累計起來就可以得到兩模式間的總失真。很容易想到的辦法是當兩模式長度相等時,直接以相等的幀號相匹配后累加計算總失真,而當兩個模式長度不等時則利用線性擴張或線性壓縮的方法使兩模式具有相等長度,隨后進行匹配計算失真度。但由于人類發(fā)音具有隨機的非線性變化,這種方法效果不可能是最佳的。為了達到最佳效果,可以采用動態(tài)時間規(guī)整的方法。如圖4所示,橫坐標對應(yīng)“1”這個字音的一次較短的發(fā)音,經(jīng)過分幀和特征矢量計算后共得到一個長度為43幀的語音序列,而縱坐標對應(yīng)“1”這個字音的一次較長的發(fā)音,該語音特征序列共有56幀。為了找到兩個序列的最佳匹配路徑,現(xiàn)把測試模式的各個幀號n=1~N(圖4中N=43)在一個二維直角坐標系中的橫軸上標出,把參考模式的各幀號m=1~M(圖4中M=56)在縱軸上標出。
通過這些表示幀號的整數(shù)坐標畫一些縱橫線即可形成一個網(wǎng)格,網(wǎng)格中何一個節(jié)點(n,m)表示測試模式中的某一幀和參考模式中的某一幀的交匯點。動態(tài)時間規(guī)整算法可以歸結(jié)為尋找一條通過此網(wǎng)格中若干交叉點的路徑,路徑通過的交叉點即為參考模式和測試模式中進行失真計算的幀號。路徑不是隨意選擇的,首先任何一種語音的發(fā)音快慢可能有變化,但是各部分的先后順序不可能改變,因此所選的路徑必定從左下角出發(fā),在右上角結(jié)束。其次為了防止漫無目的的搜索,可以刪去那些向n軸方向或者m軸方向過分傾斜的路徑(例如,過分向n軸傾斜意味著R(m)壓縮很大而T(n)擴張很大,而實際語音中這種壓、擴總是有限的)。為了引入這個限制,可以對路徑中各通過點的路徑平均斜率的最大值和最小值予以限制。通常最大斜率定為2,最小平均斜率定為1/2。路徑的出發(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é)束。前者稱為固定終點,后者稱為松弛終點。
使用DTW算法為核心直接構(gòu)造識別系統(tǒng)十分簡單,首先通過訓練得到詞匯表中各參考語音的特征序列,直接將這些序列存儲為模板。在進行識別時,將待識語音的特征序列依次與各參考語音特征序列進行DTW匹配,最后得到的總失真度最小且小于識別閾值的就認為是識別結(jié)果。該方法最顯著的優(yōu)點是識別率極高,大大超過目前多數(shù)的HMM語音識別系統(tǒng)和VQ語音識別系統(tǒng)。但其最明顯的缺點是由于需要對大量路徑及這些路徑中的所有節(jié)點進行匹配計算,導致計算量極大,隨著詞匯量的增大其識別過程甚至將達到難以接受的程度,因此無法直接應(yīng)用于大、中詞匯量識別系統(tǒng)。
4 結(jié) 語
以本系統(tǒng)為基礎(chǔ)開發(fā)了一種語音撥號系統(tǒng),經(jīng)過大量實驗表明,該系統(tǒng)電路運行穩(wěn)定,且識別率可以達到90%。系統(tǒng)成本低,稍加改進就可把該語音識別模塊移植應(yīng)用到各種系統(tǒng)設(shè)備中。