實(shí)時(shí)語(yǔ)音識(shí)別系統(tǒng)中,由于語(yǔ)音的數(shù)據(jù)量大,運(yùn)算復(fù)雜,對(duì)處理器性能提出了很高的要求,適于采用高速DSP實(shí)現(xiàn)。雖然DSP提供了高速和靈活的硬件設(shè)計(jì),但是在實(shí)時(shí)處理系統(tǒng)中,還需結(jié)合DSP器件的結(jié)構(gòu)及工作方式,針對(duì)語(yǔ)音處理的特點(diǎn),對(duì)軟件進(jìn)行反復(fù)優(yōu)化,以縮短識(shí)別時(shí)間,滿足實(shí)時(shí)的需求。因此如何對(duì)DSP進(jìn)行優(yōu)化編程,解決算法的復(fù)雜性和硬件存儲(chǔ)容量及速度之間的矛盾,成為實(shí)現(xiàn)系統(tǒng)性能的關(guān)鍵。本文基于TMS320C6713設(shè)計(jì)并實(shí)現(xiàn)了高速實(shí)時(shí)語(yǔ)音識(shí)別系統(tǒng),在固定文本的說(shuō)話人辨識(shí)的應(yīng)用中效果顯著。
1 語(yǔ)音識(shí)別的原理
語(yǔ)音識(shí)別的基本原理框圖如圖1所示。語(yǔ)音信號(hào)中含有豐富的信息,從中提取對(duì)語(yǔ)音識(shí)別有用的信息的過(guò)程,就是特征提取,特征提取方法是整個(gè)語(yǔ)音識(shí)別系統(tǒng)的基礎(chǔ)。語(yǔ)音識(shí)別的過(guò)程可以被看作足模式匹配的過(guò)程,模式匹配是指根據(jù)一定的準(zhǔn)則,使未知模式與模型庫(kù)中的某一模型獲得最佳匹配。
?
?
1.1 MFCC
語(yǔ)音識(shí)別中對(duì)特征參數(shù)的要求是:
(1) 能夠有效地代表語(yǔ)音特征;
(2) 各階參數(shù)之間有良好的獨(dú)立性;
(3) 特征參數(shù)要計(jì)算方便,保證識(shí)別的實(shí)時(shí)實(shí)現(xiàn)。
系統(tǒng)使用目前最為常用的MFCC(Mel FrequencyCepSTral Coefficient,美爾頻率倒譜系數(shù))參數(shù)。
求取MFCC的主要步驟是:
(1) 給每一幀語(yǔ)音加窗做FFT,取出幅度;
(2) 將幅度和濾波器組中每一個(gè)三角濾波器進(jìn)行Binning運(yùn)算;
(3) 求log,換算成對(duì)數(shù)率;
(4) 從對(duì)數(shù)率的濾波器組幅度,使用DCT變換求出MFCC系數(shù)。
?
?
本文中采用12階的MFCC,同時(shí)加過(guò)零率和delta能量共14維的語(yǔ)音參數(shù)。
1.2 DTW
語(yǔ)音識(shí)別中的模式匹配和模型訓(xùn)練技術(shù)主要有DTW(Dynamic TIme Warping,動(dòng)態(tài)時(shí)間彎折)、HMM(HideMarkov Model,隱馬爾科夫模型)和ANN(Artificial Neu-ral Network,人工神經(jīng)元網(wǎng)絡(luò))。
DTW是一種簡(jiǎn)單有效的方法。該算法基于動(dòng)態(tài)規(guī)劃的思想,解決了發(fā)音長(zhǎng)短不一的模板匹配問(wèn)題,是語(yǔ)音識(shí)別中出現(xiàn)較早、較為經(jīng)典的一種算法。DTW算法的原理是計(jì)算兩個(gè)長(zhǎng)度不同的語(yǔ)音之間的相似程度,即失真距離。
設(shè)測(cè)試語(yǔ)音和參考語(yǔ)音用T和R表示,他們分別含有N幀和M幀的語(yǔ)音參數(shù)。本文中每幀語(yǔ)音的特征參數(shù)為14維,因此T,R分別為N×14和M×14的矩陣。把測(cè)試語(yǔ)音的各個(gè)幀號(hào)x=1~N在一個(gè)二維直角坐標(biāo)系中的橫軸上標(biāo)出,把參考語(yǔ)音的各幀號(hào)y=1~M在縱軸上標(biāo)出,通過(guò)這些表示幀號(hào)的整數(shù)坐標(biāo)畫出一些縱橫線即可形成一個(gè)網(wǎng)格,網(wǎng)格中的每一個(gè)交叉點(diǎn)(x,y)表示測(cè)試模式中某一幀號(hào)與訓(xùn)練模式某一幀的交叉點(diǎn),對(duì)應(yīng)于兩個(gè)14維向量的歐氏距離。DTW算法在于尋找一條通過(guò)此網(wǎng)格中若干交叉點(diǎn)的路徑,使得該路徑上節(jié)點(diǎn)的路徑和最小。算法示意圖如圖3所示。
?
?
2 系統(tǒng)硬件環(huán)境
本系統(tǒng)的核心芯片為TI公司的32位浮點(diǎn)數(shù)字信號(hào)處理器TMS320C6713。其時(shí)鐘頻率最高可達(dá)300 MHz,處理能力可以高達(dá)1 336 MIPS和1 000 MFLOPS。由于256 kB的片上RAM無(wú)法滿足多路信號(hào)處理時(shí)的空間需求,系統(tǒng)通過(guò)EMIF(External Memory Interface,外部存儲(chǔ)器接口)擴(kuò)展了32 MB的外部SDRAM,并采用EDMA(External Direct Memory Access,擴(kuò)展的直接存儲(chǔ)器訪問(wèn))方式對(duì)這些外部空間進(jìn)行訪問(wèn)。
?
TMS320C6713有2個(gè)McBSPs(Multi-channel Buff-ered Serial Port,多通道緩沖串口),每個(gè)McBSP,可與多達(dá)128個(gè)通道進(jìn)行收發(fā)。本系統(tǒng)中采用McBSP0實(shí)現(xiàn)數(shù)字語(yǔ)音信號(hào)到DSP的輸入,DSP進(jìn)行實(shí)時(shí)判別后輸出結(jié)果。
3 軟件實(shí)現(xiàn)
由于TMS320C6x系列的C語(yǔ)言編譯器的效率可達(dá)匯編語(yǔ)言的70%~80%,并且C語(yǔ)言具有開(kāi)發(fā)周期短、可維護(hù)性好、可移植性好、可繼承性好等優(yōu)點(diǎn),所以軟件采用C語(yǔ)言實(shí)現(xiàn)。
3.1 軟件流程
測(cè)試中采用10個(gè)參考模板,每個(gè)模板由相應(yīng)的參考語(yǔ)音中2 s的語(yǔ)音數(shù)據(jù)訓(xùn)練而成。識(shí)別策略為每路積累2 s的接收語(yǔ)音數(shù)據(jù)后與逐個(gè)參考模板進(jìn)行匹配,如果經(jīng)由DTW運(yùn)算所得的距離值小于特定的門限,就判決已匹配。如果不匹配,就繼續(xù)接收匹配,超過(guò)8 s匹配不上,就放棄。軟件流程框圖如圖5所示,其中語(yǔ)音數(shù)據(jù)的采樣率為8 000 Hz,每幀取256個(gè)采樣點(diǎn),即32 ms的數(shù)據(jù)為一幀。
?
?
程序調(diào)試通過(guò)后,采用CCS對(duì)其實(shí)時(shí)性進(jìn)行分析。CCS(Code Composer Studio,代碼編譯器)是TI公司提供的軟件開(kāi)發(fā)環(huán)境。他擴(kuò)展了基本的代碼生成工具,集成了調(diào)試和實(shí)時(shí)分析功能。在CCS下,程序通過(guò)Wintech TDS510仿真器接到目標(biāo)板的JTAG口進(jìn)行硬件仿真測(cè)試。
測(cè)試發(fā)現(xiàn)1幀信號(hào)的處理時(shí)間為78 135 679個(gè)指令周期,即391 ms(TMS320C6713工作在200 MHz),遠(yuǎn)遠(yuǎn)達(dá)不到實(shí)時(shí)處理的要求,必須對(duì)其進(jìn)行優(yōu)化。
3.2 代碼的優(yōu)化
首先根據(jù)TI公司提供的軟件開(kāi)發(fā)流程,從合作編譯器選項(xiàng)、使用內(nèi)聯(lián)函數(shù)、使用字訪問(wèn)短整型數(shù)據(jù)和使用軟件流水等方面對(duì)代碼進(jìn)行了優(yōu)化。具體實(shí)現(xiàn)中,采用-pm選項(xiàng)、-op3選項(xiàng)和-o3選項(xiàng)對(duì)程序進(jìn)行了重新編譯。展開(kāi)內(nèi)層循環(huán),并通過(guò)#pragma MUST ITERATE()告訴編譯器循環(huán)執(zhí)行的次數(shù),上述優(yōu)化后,處理一幀的時(shí)間從78 135 679個(gè)指令周期降到了50 364 683個(gè)指令周期,但是還是無(wú)法滿足實(shí)時(shí)性的要求。
進(jìn)一步對(duì)代碼進(jìn)行測(cè)試分析,提取MFCC參數(shù)的過(guò)程中,256點(diǎn)的實(shí)數(shù)FFT運(yùn)算占用了大量的時(shí)間。TI公司針對(duì)C6000系列的DSP提供了豐富的庫(kù)函數(shù)可以方便地調(diào)用。這里,從dsp67x.lib中調(diào)用DSPF_dp_cfftr4_dif()進(jìn)行256點(diǎn)實(shí)數(shù)的FFT運(yùn)算,把提取MFCC的時(shí)間降為了0.72 ms。
由于采用10個(gè)參考模板,每路數(shù)據(jù)一次識(shí)別就要進(jìn)行10次DTW的運(yùn)算,所以如何減少DTW的運(yùn)算時(shí)間是優(yōu)化的重點(diǎn)。對(duì)DTW的優(yōu)化從兩方面進(jìn)行,首先采用查表法縮小匹配時(shí)搜索的區(qū)域。
由于DTW匹配的過(guò)程中限定了彎折的斜率,因此好多格點(diǎn)實(shí)際上是達(dá)不到的,如圖6所示。因此菱形之外的格點(diǎn)對(duì)應(yīng)的幀匹配距離是不需要計(jì)算的。在本系統(tǒng)的應(yīng)用中,因?yàn)槊看味家? s和2 s的語(yǔ)音數(shù)據(jù)進(jìn)行匹配,M和N都固定是64幀,所以可以建一個(gè)表格儲(chǔ)存菱形區(qū)域內(nèi)的測(cè)試幀號(hào)和參考幀號(hào),匹配時(shí)只計(jì)算表格中兩幀間的矢量距離,即歐氏距離,從而把歐氏距離的運(yùn)算從40 960次減少到了19 460次。
在采用DTW快速算法后,還需進(jìn)行了19 460次歐氏距離的運(yùn)算。測(cè)試可得,每次運(yùn)算耗時(shí)1 524個(gè)指令周期,所以這部分的運(yùn)算仍是影響識(shí)別速度的關(guān)鍵。為了進(jìn)一步提高代碼的性能,把這段代碼改為線性匯編來(lái)實(shí)現(xiàn)。
完成上述全部?jī)?yōu)化后,測(cè)試得到,處理一幀的時(shí)間為1 849 365個(gè)指令周期,其中TMS320C6713工作在200 MHz,即處理1幀的時(shí)間為1 849 365/200 000 000=9.25 ms,達(dá)到0.29倍實(shí)時(shí)。
?
?
4 實(shí)驗(yàn)及小結(jié)
為了測(cè)試上述系統(tǒng)的識(shí)別性能,對(duì)其進(jìn)行了固定文本的說(shuō)話人辨識(shí)實(shí)驗(yàn)。實(shí)驗(yàn)中,采用錄音設(shè)備錄制了10個(gè)人、3個(gè)不同時(shí)間所說(shuō)的同一句話,共30句,平均時(shí)間長(zhǎng)度為4.5 ms。從每個(gè)人的3句話中選擇頻譜最清晰的一句訓(xùn)練成模板,另外錄制20句由這10個(gè)人所說(shuō)的長(zhǎng)度接近但內(nèi)容不同的語(yǔ)音做測(cè)試語(yǔ)音。這樣模板庫(kù)中有10個(gè)模板,測(cè)試語(yǔ)音有50個(gè)。
首先通過(guò)各模板間的匹配,確定了判決門限0.2,然后把50句測(cè)試語(yǔ)音依次送入識(shí)別系統(tǒng),所有語(yǔ)音全部正確匹配。
本文通過(guò)對(duì)DTW算法的改進(jìn),結(jié)合TMS320C6713的特點(diǎn)對(duì)C代碼進(jìn)行了優(yōu)化,在保證識(shí)別率的情況下,用TMS320C6713成功地實(shí)現(xiàn)了語(yǔ)音信號(hào)的高速實(shí)時(shí)識(shí)別。
評(píng)論
查看更多