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

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

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

