摘 要: 介紹一種基于定點數(shù)字信號處理器ADSP2181的實時語音識別系統(tǒng)。該系統(tǒng)可以實現(xiàn)100詞以內(nèi)的特定人語音識別。識別的準確率超過97%。
關(guān)鍵詞: 定點DSP語音識別 線性預(yù)測倒譜系數(shù)ADPCM 動態(tài)時間彎折
本系統(tǒng)的目的是在廉價定點數(shù)字信號處理器(DSP)芯片上實現(xiàn)語音識別。在微機平臺,一般采用隱含Markov模型(HMM)進行語音識別,該算法在識別階段計算量較少,適應(yīng)性強,但是需要大量的前期訓(xùn)練工作。由于DSP系統(tǒng)存儲資源有限,計算速度也比較慢,大運算量的前期訓(xùn)練是無法在有限的DSP資源上獨立完成的,因此系統(tǒng)采用了動態(tài)時間彎折算法(DTW),以解決模板匹配中時間不定長的問題,實現(xiàn)了一個特定人小詞表語音識別系統(tǒng)。下面分別介紹該系統(tǒng)的硬件和軟件結(jié)構(gòu)。
1 系統(tǒng)硬件
系統(tǒng)的電路原理如圖1所示。該系統(tǒng)采用Analog Decive公司(ADI)的定點數(shù)字信號處理器ADSP2181為核心部件。2181指令字長24位,數(shù)據(jù)字長16位,在16.67MHz下工作,指令周期可達30ns。用AD73311編碼譯碼器(CODEC)作語音輸入輸出模擬前端。AD73311是ADI公司的低成本、低功耗通用模擬前端。它具有諸多優(yōu)良性能:如16位75dB的模數(shù)轉(zhuǎn)換信噪比和70dB的數(shù)模轉(zhuǎn)換信噪比、輸入輸出采樣頻率和增益可編程、小的轉(zhuǎn)換群延時、允許8個芯片級連、工作電壓范圍寬(2.7~5.5V)、自身帶參考電壓等,在語音信號處理和有源控制方面得到了廣泛的應(yīng)用。AD73311通過串行口與2181相連。采用一片27C512作為程序存儲器,系統(tǒng)復(fù)位后,程序自動由EPROM中加載進入DSP的片內(nèi)程序存儲區(qū)運行。還有一片AT29C020作為模板和語音存儲器,通過BDMA接口與2181相連。以上四個芯片組成了語音識別的核心電路。系統(tǒng)的譯碼電路由一片GAL16V8實現(xiàn),復(fù)位和電源監(jiān)視電路由MAX705實現(xiàn),還有一片74HC574用來輸出識別結(jié)果,這就構(gòu)成了基本的語音識別模塊。加上可選的鍵盤、LCD顯示接口和相應(yīng)的譯碼電路,即可構(gòu)成完整的控制器。該控制器具有體積小、成本低的優(yōu)點。
2 系統(tǒng)軟件
2.1 語音信號的端點檢測
所謂端點檢測,就是從含噪聲的環(huán)境中檢測出說話人的語音命令。我們采用語音信號的短時能量和過零率來進行端點檢測。語音信號的采樣頻率為8kHz,每幀數(shù)據(jù)為30ms,共240個采樣點,幀交迭10ms,共80個采樣點。每隔10ms計算一次短時能量和過零率。短時能量用下面公式計算:

其中N為一幀語音的采樣點數(shù)(240)。過零率為一幀語音信號穿越零電平的次數(shù)。短時能量描述了信號的幅度,而過零率對能量低的清音比較敏感,兩者配合起來就可以準確地判斷語音信號的開始和結(jié)束。
2.2 語音參數(shù)的選擇和計算
輸入的模擬語音信號首先要通過截止頻率為4kHz的抗混迭濾波器,然后由AD73311采樣和量化。接下來很重要的一環(huán)就是特征參數(shù)的提取。對特征參數(shù)的要求是:(1)能有效地代表語音特征,包括聲道特征和聽覺特征,具有很好的區(qū)分性;(2)各階參數(shù)之間有良好的獨立性;(3)特征參數(shù)要計算方便,最好有高效的計算方法,以保證語音識別的實時實現(xiàn)。一般選擇線性預(yù)測倒譜系數(shù)(LPCC)和Mel頻率倒譜系數(shù)(MFCC)作為語音識別的參數(shù),兩種參數(shù)的計算請參考文獻[1]和[2]。該系統(tǒng)為每幀信號計算出12階LPCC系數(shù),加上短時能量和過零率,作為以后的識別參數(shù)。以上算法是用ADSP2181的匯編語言實現(xiàn)的定點算法,比純浮點算法快得多,可以在720μs內(nèi)完成,從而可以達到實時計算。
大量文獻的研究表明,MFCC系數(shù)對提高識別率有一定的作用。我們也在ADSP2181上實現(xiàn)了MFCC系數(shù)的定點算法,但是與LPCC系數(shù)相比,MFCC系數(shù)計算有兩個缺點:一是計算時間長,一幀參數(shù)的計算至少需要1.25ms;二是精度難以保證。由于MFCC系數(shù)的計算需要FFT變換和對數(shù)操作,影響了計算的動態(tài)范圍,要保證其在定點DSP上的運算速度,就只有犧牲參數(shù)精度。而LPCC參數(shù)的計算有遞推公式,速度和精度都可以保證。在微機和DSP平臺上分別進行的大量試驗表明,LPCC參數(shù)已經(jīng)足以滿足我們的識別要求,同時采用LPCC參數(shù),可以減少計算時間,從而降低系統(tǒng)功耗。
2.3 語音的編碼與回放
本系統(tǒng)采用8kHz采樣頻率,精度為16位,數(shù)據(jù)傳輸率為128kbps。采用ADPCM算法實現(xiàn)對語音的編碼,將采集到的語音樣本壓縮到32kbps,可以保持清晰的音質(zhì),同時大大降低存儲需求。為了進一步降低碼率,系統(tǒng)還可以采用GSM編碼算法,不但合成語音質(zhì)量好,而且算法比較簡單,可以在ADSP2181定點DSP芯片上實時實現(xiàn)。它的碼率為13.6kbps。GSM編碼實際上是規(guī)則脈沖激勵長時線性預(yù)測編碼(RPE-LTP),它包括預(yù)處理、LPC分析、短時分析濾波、長時預(yù)測和規(guī)則脈沖激勵序列編碼等五部分。GSM算法比ADPCM相對復(fù)雜,占用DSP計算時間也長,因而功耗也相對高。
2.4 參數(shù)模板的管理
語音參數(shù)和ADPCM編碼保存在256KB的Flash RAM內(nèi)。該芯片為AT29C020,是非易失存儲器。為了合理利用這有限的存儲資源,同時實現(xiàn)快速的模板搜索,我們參考DOS的磁盤管理系統(tǒng),實現(xiàn)了以扇區(qū)為單位的管理系統(tǒng)。
首先將256K字節(jié)空間劃分為1024塊,每塊為一扇區(qū),每扇區(qū)256字節(jié)。由于2181的字長為16位,因此每扇區(qū)按128字處理。如果設(shè)置類似DOS的文件分配表(FAT)和文件目錄表,來管理這些扇區(qū),勢必導(dǎo)致對這兩個表的頻繁讀取和擦寫??紤]到Flash RAM的擦寫次數(shù)有限,而其讀取速度很快,我們采用了順序表的方法進行管理。每扇區(qū)的格式固定,如表1所示。

其中標(biāo)志字含義為:0x01:語音參數(shù)扇區(qū),0x02:語音ADPCM編碼扇區(qū),0xffff:空白扇區(qū),其它:壞扇區(qū)。編號字分高低8位兩個字節(jié),高8位為命令分組(或用戶)號碼,低8位為該命令分組(或用戶)的命令編號。長度字為該模板或語音編碼的幀數(shù)。讀取模板時,根據(jù)給定的分組號和命令號,順序搜索FlashRAM,將符合條件的扇區(qū)讀入片內(nèi)存儲器,組裝成一個完整的模板。寫模板時,首先將片內(nèi)存儲器中的數(shù)據(jù)按125字分成若干塊,再依次尋找空閑扇區(qū),加上三個字的頭信息,寫入FlashRAM。寫入時采用累加和進行校驗,如果寫入有錯誤,則將該扇區(qū)標(biāo)記為壞扇區(qū)。試驗證明,該方法穩(wěn)定可靠,而且速度很快,檢索一個模板平均只需5ms左右。
2.5 參數(shù)模板的匹配
本系統(tǒng)采用動態(tài)時間彎折算法完成模板的匹配。在孤立詞語音識別中,最為簡單有效的方法是采用DTW算法。該算法基于動態(tài)規(guī)劃的思想,解決了發(fā)音長短不一的匹配問題,是語音識別中出現(xiàn)較早,較為經(jīng)典的一種算法。
DTW算法用于計算機兩個長度不同的模式之間的相似程度,或稱失真距離。假設(shè)測試和參考模式分別用T和R表示,按時間順序含有N幀和M幀的語音參數(shù),由于每幀數(shù)據(jù)為12維,T、R分別為N×12和M×12的矩陣。失真距離越小,表示T、R越接近。
如果把測試模式的各個幀號n=1~N在一個二維直角坐標(biāo)系中的橫軸上標(biāo)出,把參考模式的各幀號m=1~M在縱軸上標(biāo)出,通過這些表示幀號的整數(shù)坐標(biāo)畫出一些縱橫線即可形成一個網(wǎng)格,網(wǎng)格中的每一個交叉點(n,m)表示測試模式中某一幀與訓(xùn)練模式中某一幀的交會點。對應(yīng)兩個12維的向量的歐氏距離。DTW算法可以歸結(jié)為尋找一條通過此網(wǎng)格中若干交叉點的路徑,使得該路徑上節(jié)點的距離和(即失真距離)為最小。本系統(tǒng)的DTW算法也是用定點匯編程序?qū)崿F(xiàn),以加快速度。
2.6 進一步提高識別率的措施
為了進一步提高系統(tǒng)的識別率,我們設(shè)計了兩種措施。首先是為每個語音命令設(shè)置四個模板的預(yù)留空間,每個命令可以有四個模板參與識別。識別結(jié)果取其中的最小者或平均值,這樣可以盡量適應(yīng)說話人語氣語調(diào)的變化,大大提高一次識別率。其次提供多候選供用戶確認,設(shè)置確認詞,即“正確”、“不對”。程序在模板匹配完成后,選擇3個最佳模板,如果其中最佳模板的得分高于確信門限,則提示用戶口呼確認詞加以選擇。該措施大大降低了錯誤識別率。
2.7 模板管理
在訓(xùn)練過程中,可以通過鍵盤和液晶顯示器進行模板錄制和管理。鍵盤上有語音錄制、回放,模板添加、刪除,F(xiàn)lashRAM存儲器管理等功能,操作狀態(tài)和結(jié)果由液晶顯示器顯示出來。在識別階段,這兩者都不再需要。
總之,以本系統(tǒng)為基礎(chǔ),我們成功地開發(fā)了通用語音識別模塊、汽車語音防盜報警器等系統(tǒng)。經(jīng)過大量試驗和應(yīng)用表明,該系統(tǒng)穩(wěn)定可靠,正確識別率超過97%,系統(tǒng)平均響應(yīng)時間小于0.5s。其硬件成本低,可以控制在200元以下,是一種實用的語音識別裝置。
參考文獻
1 楊行峻,遲惠生.語音信號數(shù)據(jù)處理.北京:電子工業(yè)出版社,1995
2 L.Rabiner and B.H.Juang.Fundamentals of Speech Recognition.PTR Prentice Hall,1993
3 He Qiang,Zhang Youwei.On Prefiltering and Endpoint Detection of Speech Signal.Proceedings of ICSP'98:749~752
4 Analog devices Inc.AD73311 Data Sheet.,1997
5 Analog Inc.ADSP-2100 Family User's Manual.1995

