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