劉文姝,季愛明,王子歐
(蘇州大學,江蘇 蘇州215021)
近年來,語音識別在通信與電子系統(tǒng)、自動控制等領域中有著廣泛的應用。其中一個重要的發(fā)展方向是硬件實現(xiàn)語音識別算法的研究。這個方向主要是小型化、便攜式語音產(chǎn)品的應用,在這類設備上,通常是小詞匯量的孤立詞識別,例如:手機﹑PDA以及車載應用等裝置上。國外在硬件實現(xiàn)方面的研究較早,而國內(nèi)起步較晚,因此對基于FPGA的語音識別前端算法研究具有重要的意義[1]。
近兩年國際上提出了分布式語音識別DSR(Distributed Speech Recognition)。移動終端只需進行語音采集、特征提取,有關信息則通過無線數(shù)據(jù)信道送往網(wǎng)絡中的遠程服務器,由服務器中的識別單元完成語音識別功能[2]。就目前的研究情況來看,通常用相關的方法實現(xiàn)LPCC系數(shù)的提取。而在LPC系數(shù)提取部分的除法器,采用的結(jié)構(gòu)不盡相同,有采用搜索算法[3],也有采用減并移位法[4];在LPCC系數(shù)提取時,可以直接計算,也可以經(jīng)過一定的變換[5]。為了將面積和性能得到最好的折中,并且考慮實際的應用場合,在以上兩個除法器的設計上,進行一定的研究,提出了適合的方案。
本系統(tǒng)是對于語音識別的前端算法研究,要解決的問題是語音采集、特征提取,而語音的識別,則是由遠端服務器來完成。一般的特征參數(shù)提取流程圖包括預加重、加窗、自相關、求 LPC系數(shù)和求其倒譜(LPCC)系數(shù)。下面將按照各個模塊分別研究。
對語音信號進行分幀,使得每一幀有N=256個采樣,幀移為64。對每一幀信號進行預加重和加窗。
預加重采用:
窗函數(shù)采用漢明(Hamming)窗,漢明窗函數(shù)要先計算好放于ROM中,直接與語音信號相乘得到加窗的語音信號。對每一幀經(jīng)過預處理的語音信號進行自相關分析。采用公式:
式中P是LPC的階數(shù),取P=10。所采用結(jié)構(gòu)如圖1。
在計算自相關系數(shù)的部分,如果在累加部分采用移位寄存器來計算保存11個LPC系數(shù),會產(chǎn)生不必要的移位功耗[6]。考慮到FPGA豐富的存儲器資源,采用RAM進行累加部分的計算,從而使功耗得到降低,如圖1所示。寄存器的輸出形成了連接到加法器的數(shù)據(jù)通路,而加法器的輸出存儲在指定位置的寄存器中,主狀態(tài)機提供操作地址,并控制讀﹑寫次序以避免在同一位置同時進行讀寫操作。采用此結(jié)構(gòu),可以避免不必要的移位功耗,而性能上與采用移位寄存器無差別,故優(yōu)于后者。
采用自相關法來計算LPC系數(shù)。解LPC系數(shù)的矩陣方程為:
式中P是LPC的階數(shù),取10階。采用Levinson-Durbin[7]方法來解。在該方法的計算中,可以看到求偏相關系數(shù)(Parcor)k時,由于存在式(5)中的關系:
故在該模塊中,除法器的設計是一個關鍵性的問題。
常用的除法器設計算法多采用多次迭代的方法,如恢復余數(shù)方法和減并移位方法等。這類方法雖然比軟件除法要快很多,但多次迭代延時還是很大。而且迭代次數(shù)與數(shù)據(jù)相關,使除法器延時不定。在語音處理這類數(shù)據(jù)量大﹑對運算要求高的領域,迫切需要一種能夠采用流水線方法實現(xiàn)的高性能除法器。有的方案文獻當中提到采用剪除搜索方法[8]。但是,采用這種方法仍需要相對較長的時間,并且仍不能消除延時不穩(wěn)定的問題。所以采用一種新的除法器架構(gòu)——流水線查找表法[9]。
流水線除法器可采用被除數(shù)和除數(shù)的倒數(shù)相乘實現(xiàn)。除數(shù)的倒數(shù)利用泰勒級數(shù)展開算法展開,取前幾項通過查表法得到倒數(shù)結(jié)果。這就是本除法器設計的基本思想。以泰勒級數(shù)為基礎,根據(jù)公式誤差對除法面積的影響,采用一個2級流水的單精度除法器。該除法器利用查表法和2個乘法器實現(xiàn),在面積上要大于搜索算法,但是在時鐘周期上,只是2個乘法器或者是一個乘法器和一個LUT的延時,顯然比搜索算法的N(數(shù)據(jù)的位數(shù))個時鐘周期短得多。該除法器有2點好處:一是2個乘法和查表可以并行執(zhí)行,除法器延時較短;二是乘法數(shù)據(jù)位數(shù)較少,乘法器面積較小,而由其決定的LUT面積也不大[8]。兩種除法器算法性能比較如表1。
表1 兩種除法器算法性能比較表格
圖1 計算自相關系數(shù)結(jié)構(gòu)圖
其中為了達到資源共享,除法器當中的乘法器和計算結(jié)構(gòu)的乘法器復用,如圖2所示。
語音信號處理當中,由LPC系數(shù)計算LPCC系數(shù)的公式如下[7]:
P是LPC的階數(shù),Q是LPCC的階數(shù)。
按照上面的分析,如果依計算公式計算,缺點是資源占用過多,需要時鐘周期過長。所以采用節(jié)省資源的方法計算中間系數(shù),對公式進行一定的變形,算法進行一定的改進,資源得到充分利用,并且能夠縮短時鐘周期,節(jié)省乘法器資源57%[5]。計算LPCC系數(shù)結(jié)構(gòu)圖,如圖3所示。
實現(xiàn)節(jié)省資源的方法:
圖3 計算LPCC系數(shù)結(jié)構(gòu)圖
其中P是LPC的階數(shù),Q是LPCC的階數(shù),取P=Q=10。
然而,在這個結(jié)構(gòu)當中,可以看到最終的計算結(jié)果是ξ,而并不是真正的LPCC系數(shù)。為此仍需要一個除法器。這里的除法運算所涉及到的除數(shù)僅為一組有限的常數(shù),采用一個通用的除法器就顯得沒有必要了。為此使用文獻[10]中提到的專用常數(shù)除法器,它的主要運算部分由規(guī)則的處理單元陣列所構(gòu)成,大大節(jié)省面積,易于實現(xiàn)并易于擴展。
為了驗證算法的可行性,本文用VerilogHDL語言對整個語音參數(shù)的提取進行建模。依照圖2進行了LPC系數(shù)的提取。為了觀察方便,本文采用32 bit常數(shù)作為自相關系數(shù)輸入,輸出LPC系數(shù)是16 bit輸出。從仿真結(jié)果可以看到,在99 ns時刻,icorrlt_over信號有效,開始計算LPC系數(shù);在8 155 ns時刻,計算得到第一個LPCC系數(shù),在8 395 ns時刻,計算完畢得到一組LPC系數(shù)(10階)。仿真波形表明,此電路的輸出結(jié)果在整數(shù)位寬相同的情況下,與Matlab的仿真結(jié)果一致。
圖2 計算LPC系數(shù)結(jié)構(gòu)圖
依照圖3進行了LPCC系數(shù)的提取。為了觀察方便,本文采用16 bit常數(shù)作為LPC系數(shù)輸入,輸出LPCC系數(shù)是16 bit輸出。從仿真結(jié)果可以看到,在99 ns時刻,ilpc_over信號有效,開始計算 LPCC系數(shù);在 8 155 ns時刻,計算得到第一個LPCC系數(shù),在8375 ns時刻,計算完畢得到一組LPC系數(shù)(10階)。仿真波形表明,此電路的輸出結(jié)果在整數(shù)位寬相同的情況下,與Matlab的仿真結(jié)果一致。
本文提出了一種前端處理系統(tǒng)的新結(jié)構(gòu)。通過當中除法器的改進設計,在LPC計算部分采用了LUT查找表除法器。經(jīng)過仿真,并與搜索算法比較,結(jié)果表明能夠在較短的時鐘周期內(nèi)計算出LPC系數(shù),較之前的方法,節(jié)省了大量的運算時間。在LPCC計算部分采用了常數(shù)除法器,經(jīng)過仿真,結(jié)果表明與通用的除法器相比,節(jié)省了面積,性能良好。
[1]李韜,賀前華,王前.語音識別算法的VLSI實現(xiàn)研究 [J].微電子學,2004(6).
[2]梁釗.分布式語音識別系統(tǒng)及其相關技術(shù)[J].計算機工程與應用,2002(12).
[3]WU Gin Der,ZHU Zhen Wei.Chip design of LPC-cepstrum for speech recognition[A].6th IEEE/ACIS International Conference on Computer and Information Science(ICIS 2007).
[4]MICHAEL D C.VerilogHDL高級數(shù)字設計[M].北京:電子工業(yè)出版社,2005:538-550.
[5]FELICI M,BORGATTI M,F(xiàn)ERRARI A,et al.A Low-Power VLSI feature extractor for speech recognition[J].IEEE,1998.
[6]WANG Jhing Fa,WANG Jia Ching,CHEN Han Chiang,et al.Chip design of portable speech memopad suitable for persons with visual disabilities[J].IEEE transactions on speech and audio processing,2002,10(8).
[7]趙力.語音信號處理[M].機械工業(yè)出版社,2007:59-62.
[8]WANG Jhing Fa,LIU Liang Ying,CHENG Chung Heng,et al.An ASIC design for linear predictive coding of speech signas[J].0-8186-2845-6/92,1992,IEEE.
[9]朱建銀,沈海斌.高性能單精度除法器的實現(xiàn)[J].微電子學與計算機,2007,24(5).
[10]丁保延,章倩苓.常數(shù)除法器的設計及其BIST實現(xiàn)[J].半導體學報,2000,21(5).