基于TMS320VC5509A的語音識別與控制系統(tǒng)
1 語音識別原理
語音識別原理框圖如圖1所示。語音信號輸入之后,預處理和數(shù)字化是進行語音識別的前提條件。其中,預處理主要是進行預濾波,保留正常人的300~3400Hz的語音信號;數(shù)字化是要進行A/D轉換及抗混疊等處理;特征提取是進行語音信號訓練和識別必不可少的步驟。能夠體現(xiàn)語音信號特征的參數(shù)包括:(1)基于LPC的倒譜參數(shù);(2)Mel系數(shù)的倒譜參數(shù);(3)采用前沿數(shù)字信號處理技術的特征分析手段,如小波分析、時/頻域分析、人工神經(jīng)網(wǎng)絡等。本文采用基于LPC的倒譜參數(shù)表示方法,提取出的特征值存入?yún)⒖寄J綆熘?,用來匹配待識別語音信號的特征值。匹配計算是進行語音識別的核心部分,由待識別人的語音經(jīng)過特征提取后,與系統(tǒng)訓練時產(chǎn)生的模板進行匹配,在說話人辨認中,取與待識別語音相似度最大的模型所對應的語音作為識別結果,這就是語音識別的整個過程[1]。
2 硬件結構部分
本系統(tǒng)的硬件結構框圖如圖2所示。
此系統(tǒng)的核心器件是TI公司的TMS320VC5509A定點DSP芯片。它是系統(tǒng)的運算處理單元,具有2個乘法器(MAC),4個累加器(ACC);40位、16位的算術邏輯單元(ALU)各一個,這大大增強了DSP的運算能力;指令字長不只單一的16位,可擴展到最高48位,數(shù)據(jù)字長16位;在144MHz下工作,指令周期可達6.94ns。TMS320VC5509A還提供高速的多通道緩沖串口McBSP(Multi-channel Buffererd Serial Ports),DSP可通過McBSP與其他DSP、編解碼器等器件相連。McBSP具有全雙工通信,雙緩沖數(shù)據(jù)寄存器,允許傳送連續(xù)的數(shù)據(jù)流,能夠向CPU發(fā)送中斷,向DMA控制器發(fā)送DMA事件,可設置幀同步脈沖和時鐘信號的極性等功能,這大大方便了DSP采集音頻信號[3]。除此之外,TMS320VC5509A還提供了更為高效的外部存儲器接口(EMIF),以往DSP的空間選通信號被片選信號取代,而每個片選信號分別占用不同的地址空間,這樣就不需要外部的譯碼電路,從而實現(xiàn)了與外部設備的無縫連接,可使DSP外部存儲空間擴大到滿足系統(tǒng)要求。值得強調的是,可通過USB接口對TMS320VC5509A燒寫程序而不必借助仿真器。正是基于這些優(yōu)點,選擇該芯片可節(jié)省開發(fā)資金,減小電路板面積。
TLV320AIC23是TI公司的一款低成本、低功耗的音頻編解碼芯片(CODEC),在本系統(tǒng)中負責采集語音信號。它與本系統(tǒng)相關的性能參數(shù)如下:(1)支持8kHz~96kHz可調采樣率;(2)與DSP連接,主從類型可通過軟件編寫來實現(xiàn);(3)DSP可通過I2C總線來配置TLV320AIC23的寄存器;(4)采集語音信號字長16/20/24/32Bit;(5)MIC音頻輸入具有強抗噪性;(6)具有可調1~5dB的完整緩存放大系統(tǒng)[4]。
EPM3128ATC100-10可編程邏輯器件(CPLD)在本系統(tǒng)中擔當兩方面的職能:(1)作為控制部件,接收DSP發(fā)出的信號,經(jīng)邏輯判斷后,驅動諸如電機、發(fā)光二極管等器件;(2)用于DSP地址線的擴展。TMS320VC5509A只有14根地址線,但它的外部存儲空間可以擴展到16MB(字節(jié)尋址),顯然,DSP的固有地址線是無法滿足要求的。本系統(tǒng)采用CPLD完成地址線的擴展[5][6]。
HY57V641620同步動態(tài)存儲器(SDRAM),容量為4M×16Bit。作為RAM的擴展,大大增強了DSP的存儲與運算能力[7]。
SST39VF1601閃存存儲器(Flash),容量為1M×16Bit。在這個系統(tǒng)中[8],它主要用來存儲程序代碼。上電后,DSP從外部Flash加載并執(zhí)行程序代碼,使系統(tǒng)能夠脫機運行。
3 軟件模塊部分
軟件流程如圖3所示。系統(tǒng)采集語音信號后,首先要進行預濾波和預加重;接著將語音信號進行分幀,由于語音信號具有極強的相關性,因此在分幀時,要考慮幀重復。本文將語音信號以256個采樣點為一幀,兩幀之間的重復點數(shù)為80;然后計算每幀信號的短時能量與短時平均過零率,這也是接下來進行端點檢測的依據(jù);利用門限判決進行端點檢測后,提取每幀信號的LPC系數(shù),作為該幀信號的特征值;最后,用語音信號的特征值與模板逐個進行匹配。相似度最大的模板所對應的語音信號為識別結果,根據(jù)識別結果就可以向外發(fā)出控制信號。
3.1 端點檢測
端點檢測就是要從采集的信號中檢測出說話人的命令字。此系統(tǒng)中,對語音信號進行了分幀操作,一種簡便的方法就是獲取說話人命令字的起始幀數(shù),具體操作是通過求一幀信號的短時能量和短時平均過零率來判斷的。語音信號的短時能量分析給出了反應其幅度變化的一個合適描述方法。一幀語音信號的短時能量定義為:
短時過零率,即指每幀內信號通過零值的次數(shù),能夠在一定程度上反映信號的頻譜特性。一幀語音信號內短時平均過零率定義為:
在正式端點檢測開始后,短時能量與短時平均過零率一起做為門限來判決說話人命令字的開始與結束:連續(xù)5幀語音信號超過門限值視為說話人命令字的開始,連續(xù)8幀語音信號低于門限值視為說話人命令字的結束。
3.2 特征值提取
此系統(tǒng)以語音信號的線性預測系數(shù)(LPC)作為特征值。采用自相關法獲取LPC系數(shù),先計算每幀語音信號的13階自相關函數(shù),定義為:
得到自相關函數(shù)后,采用萊文遜—杜賓遞推算法計算線性預測系數(shù),得到說話人一個命令字的LPC系數(shù)矩陣,大小為:命令字幀數(shù)×12。
3.3 模板匹配(DTW算法)
模板匹配就是把上述計算得到的LPC系數(shù)矩陣中的元素與事先存在DSP中的模板元素進行差值計算。在此系統(tǒng)中,采用動態(tài)時間彎折(DTW)算法:假設參考模板的LPC系數(shù)向量序列為X=(x1,x2,…,xI),輸入語音的LPC系數(shù)向量序列為Y=(y1,y2,…,yJ),I≠J。DTW算法就是要尋找一個最佳的時間規(guī)正函數(shù),使待測語音的時間軸j非線性地映射到參考模板的時間軸i上,使總的累計差值最小[1]。算法過程如圖4所示。
圖4中曲線連接起來的點就是模板與待測語音信號間的距離d(xi(n),yj(n)),亦稱為局部匹配距離。DTW算法就是通過局部優(yōu)化的方法實現(xiàn)加權距離總和最小,也就是相似度最大,定義為:
3.4 小數(shù)的定點運算
在進行語音信號處理時,通常要先對其進行歸一化,使得語音信號|x(n)|≤1,為后面計算自相關函數(shù)及求LPC系數(shù)提供方便。這樣就面臨一個實際問題:對定點DSP而言,參與數(shù)值運算的數(shù)是16位二進制整型數(shù),而DSP芯片如何處理小數(shù)運算呢?方法是確定一個數(shù)的小數(shù)點處于16位中的某一位,這也就是數(shù)值的定標問題,舉例如下:
Q0 定標 (19AB)16=(31147)10
Q15定標 (19AB)16=(0.95)10
由此可見,對于定點DSP芯片內部而言,一個16位整型數(shù)到底表示多少,它本身是不能夠分辨的,必須通過定標來確定。進行歸一化處理就是把數(shù)以Q15形式定標,為以后的運算做好準備[2]。做小數(shù)的定點運算時,還要進行預運算和移位。預運算就是事先估計運算結果,為下一步移位做準備。其實現(xiàn)可采用如Matlab等的輔助軟件。由于此系統(tǒng)的識別過程涉及較多的乘加運算,如幾個Q15定標的數(shù)進行加法運算,結果可能出現(xiàn)溢出現(xiàn)象,如果不能進行很好的預運算,將對后面的運算產(chǎn)生很大影響;移位是小數(shù)做定點運算的具體操作。做加、減、乘、除法時,要嚴格按照相應的操作方法,每做一個四則運算都要參照實際情況,遵循先移位、再做運算、最后再移位的步驟,以在精度損失最少的情況下保證運算結果的可靠性。
3.5 定點DSP做浮點運算
定點運算是以DSP的實際存儲形式(16位二進制整型)為數(shù)值格式進行加、減、乘、除等四則運算,允許數(shù)值的表示范圍是:(-32768)10~(32767)10。定點DSP的浮點運算是人為地開辟兩個16位存儲單元來表示一個數(shù)值,其中一個用來存儲尾數(shù),另一個用來存儲指數(shù),按照自然科學計數(shù)法進行四則運算。顯而易見,這樣的存儲計算方法,其精度和動態(tài)表示范圍都遠遠高于定點運算。
為降低成本,本系統(tǒng)選擇了一款定點DSP。由于端點檢測、模板匹配對精度要求不高,所以采用定點算法進行小數(shù)運算;計算自相關系數(shù)、提取LPC系數(shù)時,要求精度高,因此采用浮點算法進行小數(shù)運算。這也意味著,在端點檢測完成之后,要先將定點運算轉換為浮點運算;提取LPC系數(shù)之后,再將浮點運算轉換為定點運算進行匹配。以犧牲少量運算時間為代價,適當提高運算精度和識別率。實驗證明,這是可行的。
4 測試方法及結果
下面用兩種實驗方法來測試此系統(tǒng)的性能。
實驗1:用CPLD的輸出信號來驅動兩個步進電機R和L,某特定人的四個命令信號“走”,“左”,“右”,“停”控制這兩個電機的運轉。對應的實驗現(xiàn)象:走—L、R同時轉;左—L轉,R停;右—L停,R轉;?!猂、L都不轉。
實驗2:用CPLD的輸出信號驅動四個發(fā)光二極管A、B、C、D,某特定人的四個命令信號“1”,“2”,“3”,“4”來控制相應發(fā)光二極管的亮滅。對應的實驗現(xiàn)象:1—A亮,其余滅;2—B亮,其余滅;3—C亮,其余滅;4—D亮,其余滅。
以上兩個實驗,除了測試識別率外,還要比較在計算自相關函數(shù)和提取LPC系數(shù)時,分別采用定點算法、浮點算法所消耗機器周期的個數(shù),本系統(tǒng)DSP的機器周期為83.28ns。由于每次采集的命令字幀長不確定,以進行十次實驗消耗的機器周期的平均值來統(tǒng)計,測試結果如表1所示。
由表1可見,在相同的測試條件下,當采用浮點運算計算自相關函數(shù)和提取LPC系數(shù)時,盡管識別率高于定點運算,但是系統(tǒng)消耗了更多的運算時間。
本文設計的語音識別與控制系統(tǒng),具有體積小、成本低、便于攜帶等優(yōu)點。在實現(xiàn)系統(tǒng)功能的同時又使板級調試與系統(tǒng)升級變得極為方便,因此可以作為一個處理語音信號的通用硬件平臺,亦可完成語音編碼、聲回波對消等算法的實現(xiàn)。系統(tǒng)在DSP提供的地址線少于Flash地址線的情況下,由CPLD擴展了DSP的地址線。在不借助硬件仿真器的情況下,實現(xiàn)了對Flash的在線燒寫,并采用二次引導的方法,完成了程序的并行加載,使系統(tǒng)能夠脫機運行。由CPLD發(fā)出相應的識別控制信號,能夠驅動電動機及指示燈等。測試結果表明,該系統(tǒng)處理速度快,運行穩(wěn)定可靠,達到設計要求。
參考文獻
[1] 韓紀慶,張磊,鄭鐵然.語音信號處理[M].北京:清華大學出版社,2004.
[2] 張雄偉,陳亮,徐光輝.DSP芯片的原理與開發(fā)應用[M].北京:電子工業(yè)出版社,2004.
[3] Texas Instruments.TMS320VC5509A Fixed-Point Digital Signal Processor[EB/OL].Texas Instruments Inc,2006,3. www.ti.com.
[4] Texas Instruments.TLV320AIC23 Data Manual[EB/OL]. Texas Instruments Inc,2002,1.www.ti.com.
[5] Texas Instruments.TMS320VC5509 Evaluation Module Technical Reference[EB/OL].Texas Instruments Inc,2002,1.www.ti.com.
[6] Altera.MAX 3000A Programmable Logic Device Family Date Sheets[EB/OL].Altera Corporation,2003,6.lit_req@altera.com.
[7] Hynix.HY57V641620HG Data Sheets[EB/OL].Hynix Semiconductor,2002,1.m.lujuzi.cn.
[8] Silicon Storage Technology.SST39VF1601 Data Sheets[EB/OL].Silicon Storage Technology,Inc,2003,11.www.sst.com.