摘 要:介紹一種基于FPGA的嵌入式語音識別系統(tǒng)設(shè)計與實現(xiàn),系統(tǒng)采用線性預(yù)測倒譜系數(shù)(LPCC)算法和動態(tài)時間規(guī)整(DTW)算法,該系統(tǒng)的核心部件采用目前流行的Virtex-Ⅱ Pro系列FPGA芯片,使用的工具為業(yè)界領(lǐng)先的嵌入式設(shè)計套件Xilinx ISE Design Suite 10.1,并且運用現(xiàn)代電子系統(tǒng)軟硬件協(xié)同設(shè)計、協(xié)同驗證和協(xié)同工作的方法完成設(shè)計。通過實驗表明,對于小詞匯量、特定人識別系統(tǒng),具有很好的識別效果,識別準(zhǔn)確率達到95.2%以上。該系統(tǒng)的識別性能可以滿足基本的嵌入式設(shè)備需要,具有廣闊的應(yīng)用價值。
關(guān)鍵詞:FPGA;語音識別;LPCC;DTW
中圖分類號:TP274文獻標(biāo)識碼:A
文章編號:1004-373X(2010)05-121-04
Design and Implementation of Embedded Speech Recognition System
MA Yue,YANG Lei,WANG Wei
(College of Communication and Information Technology,Tianjin Polytechnic University,Tianjin,300160,China)
Abstract:The design and implementation of FPGA-based embedded speech recognition system are introduced,the system uses Linear Prediction Cepstral Coefficients (LPCC) algorithm and Dynamic Time Warping (DTW) algorithm,the key components of the system use current popular Virtex-II Pro Series FPGA chip,and use the industry-leading embedded design kit Xilinx ISE Design Suite 10.1,apply modern electronic systems′ hardware and software co-design and co-verification to complete the design.Experiments show that for a small vocabulary and a specific recognition system,it has very good recognition results,recognition accuracy rate is above 95.2%.Recognition performance of this system can meet the basic needs of embedded devices,it has broad application value.
Keywords:FPGA;speech recognition;LPCC;DTW
0 引 言
語音識別技術(shù)從20世紀(jì)50年代開始到現(xiàn)在已經(jīng)歷半個多世紀(jì)的蓬勃發(fā)展,在這期間獲得了巨大的進步。語音識別技術(shù)逐漸成為了人機交互的重要方式,成為了具有革命性和戰(zhàn)略性的重要新興產(chǎn)業(yè),語音識別技術(shù)市場領(lǐng)域也成為國內(nèi)外科學(xué)界和產(chǎn)業(yè)界的關(guān)注焦點和競爭熱點。
隨著3G手機、GPS導(dǎo)航設(shè)備等移動通信終端和MP3、電子詞典等便攜式消費電子產(chǎn)品的日益普及,語音識別技術(shù)在嵌入式設(shè)備中的應(yīng)用也越來越廣泛。因此基于嵌入式平臺的語音識別技術(shù)將是語音技術(shù)發(fā)展與應(yīng)用的重要方向。
1 系統(tǒng)整體設(shè)計
本系統(tǒng)由信號采集模塊、信號處理模塊、命令輸出模塊三部分組成,如圖1所示。
圖1 系統(tǒng)整體連接
系統(tǒng)的信號采集模塊由麥克風(fēng)、系統(tǒng)開發(fā)板提供的音頻編解碼芯片LM4550組成,其主要功能是將語音信號采集到信號處理模塊內(nèi),并通過語音識別算法提取出相應(yīng)的語音特征數(shù)據(jù)。如果在系統(tǒng)訓(xùn)練階段,則將特征數(shù)據(jù)存入FLASH中;如果在識別階段,則進行模式匹配,將識別結(jié)果通過RS 232串口傳輸?shù)絇C機上,并用超級終端顯示識別結(jié)果。
2 系統(tǒng)硬件設(shè)計
本系統(tǒng)采用XUP Virtex-Ⅱ Pro開發(fā)板實現(xiàn)整個語音信號的信號采集、語音訓(xùn)練和語音識別過程。開發(fā)板上的核心芯片是美國Xilinx公司生產(chǎn)的Virtex-Ⅱ Pro系列的FPGA(XC2VP30FFG896C),該芯片內(nèi)嵌了PowerPC405處理器內(nèi)核和Microblaze處理器內(nèi)核,還包括了先進的主動互聯(lián)(Active Interconnect)技術(shù);PowerPC405處理器是與CoreConnect總線結(jié)構(gòu)相兼容的,包括Xilinx IP軟核在內(nèi)的任何CoreConnect兼容核都可以通過這個高性能的總線結(jié)構(gòu)與處理器模塊集成。
CoreConnect結(jié)構(gòu)提供了處理器局部總線(PLB)、片內(nèi)外設(shè)總線(OPB)和器件控制寄存器(DCR)總線三類,利用這三類總線來互連處理器模塊、Xilinx IP軟核、第三方IP核和定制的邏輯[1]。
本系統(tǒng)采用頻率為400 MHz的PowerPC405處理器。開發(fā)工具采用業(yè)界領(lǐng)先的Xilinx ISE(FPGA開發(fā)工具)和EDK(FPGA嵌入式系統(tǒng)開發(fā)工具),如圖2所示。
圖2 FPGA內(nèi)部硬件配置圖
根據(jù)系統(tǒng)需要,將PowerPC405 core、定時、中斷、DDR SDRAM等高性能外設(shè)連接到高帶寬、低滯后的PLB總線,將UART、GPIO、AC97、FLASH等較慢的外設(shè)連接到OPB總線,可以減少PLB總線的流量,提高整個系統(tǒng)的性能。
3 系統(tǒng)軟件設(shè)計與實現(xiàn)
3.1 系統(tǒng)調(diào)度
本系統(tǒng)采用開發(fā)板上的音頻編解碼芯片LM4550 AC97 Audio CODEC音頻模塊對語音信號進行采集,通過定時中斷來控制系統(tǒng)運行。
主程序使能音頻模塊,從音頻模塊的緩沖區(qū)內(nèi)讀取語音數(shù)據(jù)到DDR SDRAM存儲器中。當(dāng)音頻模塊緩沖區(qū)全部為空時,主程序?qū)DR內(nèi)的數(shù)據(jù)進行預(yù)處理、端點檢測、線性預(yù)測倒譜系數(shù)(LPCC)的提取。如果在訓(xùn)練階段,此時的LPCC系數(shù)被當(dāng)作模板存入到FLASH中。如果在識別階段,LPCC系數(shù)則會被調(diào)入DDR存儲器中與測試模板進行模式匹配,并給出識別結(jié)果。模式匹配算法采用動態(tài)時間規(guī)整(DTW)算法[2]。
3.2 語音識別算法設(shè)計
語音信號從說話人發(fā)出到接收裝置的轉(zhuǎn)換處理過程中,會受到放大器和模/數(shù)轉(zhuǎn)換器等器件的物理特性以及環(huán)境、溫度等多種因素的影響,造成數(shù)字化語音信號的特點如下:
背景噪音大 背景噪音會嚴(yán)重影響數(shù)字化語音信號的特征參數(shù)的提取,從而降低了模式匹配的準(zhǔn)確度,使系統(tǒng)對語音信號的識別性能下降;
時變性強 語音信號的時變性常常使同一語音信號具有不同的特征,從而影響模式匹配的精確度。
本系統(tǒng)是基于FPGA進行語音識別的,因此必須針對上述特點進行算法的改進,從而提高語音識別的精確度。
3.3 算法原理
語音識別的基本原理如圖3所示[3]。
圖3 語音識別算法原理圖
3.3.1 分幀、預(yù)加重處理
預(yù)加重的目的是提升信號的高頻部分,使信號的頻譜變得寬坦,以便于進行頻譜分析或聲道分析。語音信號具有短時平穩(wěn)的特點,因此可以對語音信號進行分幀處理,從而減小因語音信號時變性強帶來的負面效果。
預(yù)加重算法:
sign(n)=s(n)-α×s(n-1)
(1)
式中:α取0.9;s(n)為數(shù)字化的語音信號;sign(n)為加重后的語音信號。
分幀算法:
sw(n)=∑∞-∞s(m)w(n-m)
(2)
式中:s(n)為原始信號;sw(n)為分幀后信號。
分幀采用的窗函數(shù)(其中N為幀長,即一幀的采樣點數(shù)):
w(n)=0.54-0.64cos[(2πn)/(N-1)],
N=0,1,…,N-1
0,N為其他值
(3)
3.3.2 端點檢測算法
端點檢測的作用是找出一段語音信號中語音命令的起點和終點的位置。本系統(tǒng)采用短時平均幅度方法進行端點檢測,精確地檢測到語音的起點和終點,從而保證了系統(tǒng)的高識別率。
短時平均幅度的計算如式(3)所示:
E=∑N-1n=0|s(n)|
(4)
3.3.3 特征提取算法
語音信號是一種典型的時變信號,如果把觀察時間縮短到幾十毫秒,則可以得到一系列近似穩(wěn)定的信號。人的發(fā)音器官可以用若干段前后連接的聲管進行模擬,這就是所謂的聲管模型。
全極點線性預(yù)測模型(LPC)可以對聲管模型進行很好的描述,每段聲管對應(yīng)一個LPC模型的極點。一般情況下,極點的個數(shù)在12~16個之間就可以足夠清晰地描述語音信號的特征了。
語音信號經(jīng)過預(yù)處理,它的每個樣值均可由過去若干個樣值的線性組合來逼近,同時可以采用使實際語音抽樣與線性預(yù)測抽樣之間均方差最小的方式,解出一組預(yù)測系數(shù)a。這就是LPC所提取出信號的初始特征[4]。
在語音識別系統(tǒng)中,很少直接使用LPC系數(shù),而是由LPC系數(shù)推導(dǎo)出另一種參數(shù):線性預(yù)測倒譜系數(shù)(LPCC)。倒譜實際上是一種同態(tài)信號處理方法,標(biāo)準(zhǔn)的倒譜系數(shù)計算流程需要進行FFT變換,對數(shù)操作和相位校正等步驟,預(yù)算比較復(fù)雜。在實際計算中,他不是由原始信號s(n)得到的,而是由LPC系數(shù)ai得到的。
LPC系數(shù)算出后,就可以直接進行倒譜系數(shù)C(k)的計算,其迭代算法如下:
(1) 初始化
C(0)=log G2
(5)
(2) 迭代計算
C(m)=am+∑m-1k=1kmam-kC(k), 1≤m≤p
∑m-1k=1kmam-kC(k),m>p
(6)
綜合考慮識別誤差和識別速度的影響,在計算LPC時,LPC系數(shù)的階數(shù)Q值取為8,而LPCC系數(shù)的階數(shù)P值取為16。
3.3.4 模式匹配
系統(tǒng)模式匹配部分采用動態(tài)時間規(guī)整(DTW)算法。
參考模板表示為:
R={R1,R2,Rm,…,RM}
測試模板表示為:
T={T1,T2,…,Tn,…,TN}
其中,Rm和Tn分別為第m幀參考語音和第n幀測試語音的特征參數(shù),參考模板與測試模板一般采用相同類型的特征參數(shù)(LPCC),二者都是L=16維的矢量。
如圖4所示,將測試模板的各幀T1,T2,…,Tn,…,TN。用直角坐標(biāo)系的橫軸表示,參考模板的各幀R1,R2,…,Rm,…,RM用縱軸表示。
圖4 DTW算法搜索路徑
網(wǎng)絡(luò)中的每一個交叉點(n,m)表示測試模板中某一幀與參考模板中某一幀的交匯點。用DTW算法尋找一條通過此網(wǎng)絡(luò)某些交叉點的最優(yōu)路徑,通過計算最優(yōu)化的局部距離得到整體的最小累積距離。采用歐幾里德公式計算局部距離,見式(7),d(n,m)表示Tn和Rm這兩幀特征矢量之間的距離。
d(n,m)=∑Ll=1[Tn(l)-Rm(l)]2
(7)
數(shù)據(jù)點(Tn,Rm)的累積距離用D(n,m)表示:
D(n,m)=min{D[(n,m)],D[(n,m-1)],
D[(n,m-2)]}
(8)
4 系統(tǒng)性能
語音識別算法全部采用C軟件實現(xiàn),使用Xilinx公司提供的Xilinx ISE Design Suite 10.1的嵌入式開發(fā)套件EDK進行軟硬件協(xié)同工作。利用該軟件完成IP核的調(diào)用、編譯、仿真、綜合、驗證、實現(xiàn)和C程序代碼的產(chǎn)生、編輯、編譯、鏈接、加載、調(diào)試。
對本系統(tǒng)進行測試,選取了10個不同的人分別對系統(tǒng)進行訓(xùn)練,訓(xùn)練后分別對系統(tǒng)進行50個語音命令測試,每個命令2~4個字。測試過程中記錄了每個人的平均識別準(zhǔn)確率以及系統(tǒng)從采集語音到超級終端顯示出識別結(jié)果的平均時間,結(jié)果如表1所示。
表1 系統(tǒng)性能測試
測試人系統(tǒng)運行平均時間 /s準(zhǔn)確率 /%
11.898
21.696
31.598
41.992
52.094
61.896
71.998
81.792
91.896
101.992
平均1.7995.2
由表1可知,對于單個人識別成功率為95.2%,系統(tǒng)平均運行時間為1.79 s,基本可以滿足嵌入式設(shè)備對語音識別的性能要求。
5 結(jié) 語
介紹了基于FPGA的語音識別嵌入式系統(tǒng)研究與實現(xiàn),系統(tǒng)通過開發(fā)板上的音頻編解碼芯片LM4550 AC97 Audio CODEC音頻模塊對語音信號進行采集,采用LPCC算法進行特征提取,DTW算法進行模式匹配。通過實驗表明,系統(tǒng)識別效率基本可以滿足嵌入式系統(tǒng)的性能要求,因此本系統(tǒng)為FPGA在嵌入式語音識別系統(tǒng)的應(yīng)用提供了實踐基礎(chǔ)。
本系統(tǒng)采用的是Xilinx大學(xué)計劃XUP Virtex-Ⅱ Pro開發(fā)板,開發(fā)板上的資源沒有被充分利用,造成了資源的浪費與成本的提高;同時系統(tǒng)在特定人、孤立詞識別領(lǐng)域中有較好的識別效果,但在非特定人、連續(xù)詞領(lǐng)域中識別效果會明顯下降。針對以上問題,從兩方面進行了改進:第一,定制專用的PCB板,從而使成本降低,資源得到充分利用;第二,優(yōu)化語音識別算法,使其能適用于更廣泛的領(lǐng)域,提高識別效率,從而更好地適用于嵌入式系統(tǒng)。
參考文獻
[1]田耘,胡彬,徐文波,等.Xilinx ISE Design Suite 10.x FPGA開發(fā)指南——DSP、嵌入式與高速傳輸[M].北京:人民郵電出版社,2008.
[2]趙麗娜,侯義斌,黃樟欽,等.基于FPGA的嵌入式語音識別控制系統(tǒng)[J].小型微型計算機系統(tǒng),2007(8):1 527-1 531.
[3]王炳錫,屈丹,彭煊.實用語言識別基礎(chǔ)[M].北京:國防工業(yè)出版社,2006.
[4]鮑長春.數(shù)字語音編碼原理[M].西安:西安電子科技大學(xué)出版社,2007.
[5]Thomas F Quatieri.離散時間語音信號處理——原理與應(yīng)用[M].趙勝輝,劉家康,譯.北京:電子工業(yè)出版社,2004.
[6]田耘,胡彬,徐文波,等.Xilinx ISE Design Suite 10.x FPGA開發(fā)指南——邏輯設(shè)計篇[M].北京:人民郵電出版社,2008.
[7]孟憲元,錢偉康.FPGA嵌入式系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2007.
[8]Uwe Meyer-Baese.Digital Signal Processing with Field Programmable Gate Arrays [M].Springer,2002.
[9]Xilinx.PowerPC 405 Processor Block Reference Guide,Embedded Development Kit[Z].2005.
[10]Morgan N,Bourlard H.Continous Speech Recognition An Introduction to the Hybrid HMM/Connectionist Approach[J].IEEE Signal Processing Magazine,1995:25-42.