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