摘? 要: 介紹語音信號LPC分析中部分相關(guān)系數(shù)的舒爾遞推算法的FPGA實現(xiàn),給出了電路設(shè)計思想及具體電路結(jié)構(gòu),并對其工作過程進(jìn)行了詳細(xì)分析說明,為嵌入式系統(tǒng)設(shè)計提供了一種有效手段。
關(guān)鍵詞: 部分相關(guān)系數(shù)?舒爾遞推算法?FPGA 并行處理技術(shù)
?
隨著語音技術(shù)應(yīng)用的發(fā)展,越來越多的語音信號數(shù)字處理系統(tǒng)需要按照實時方式或在線方式工作,特別在嵌入式系統(tǒng)設(shè)計中,對系統(tǒng)的硬件環(huán)境要求更高。隨著語音處理算法的日益復(fù)雜,用普通處理器對語音信號進(jìn)行實時處理,已顯得力不從心。本文將采用新一代現(xiàn)場可編程門陣列FLEX10K系列的FPGA芯片實現(xiàn)語音信號的LPC分析,并通過舒爾(Schur)遞推算法,提取語音信號處理中的重要參數(shù)——部分相關(guān)系數(shù),即PARCOR系數(shù)。
1? LPC分析及舒爾遞推算法
1.1 LPC分析基本原理
線性預(yù)測分析(LPC)是對一給定的時域離散線性系統(tǒng)用輸出信號的過去值的線性組合來估計即將到來的輸出值。即某一時刻n的語音信號的估計值為:
??????
按均方誤差最小準(zhǔn)則,即LMS算法,可求得預(yù)測器最佳預(yù)測系數(shù)ai應(yīng)滿足下列方程組:
??? ?
????這組方程稱為LPC正則方程,其中R(l)稱為自關(guān)函數(shù),它們是進(jìn)行LPC分析的基礎(chǔ)。
1.2 舒爾遞推算法
??? 將正則方程作適當(dāng)變換,定義一個變量Ql(m)如下:
??? ????
? 其中r(l)=R(l)/R(0)為歸一化自關(guān)函數(shù)。
根據(jù)Ql(m)的性質(zhì)和正交定理[1]可證明部分相關(guān)系數(shù)K(m)與Ql(m)有下列關(guān)系:
?
由于部分相關(guān)系數(shù)K(1)~K(P)與最佳預(yù)測系數(shù)a1(P)~aP(P)間存在簡單對應(yīng)關(guān)系,因而部分相關(guān)系數(shù)K(m)被廣泛應(yīng)用于語音識別、語音合成和低速語音編譯器中。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)總體設(shè)計
由于語音信號具有短時平穩(wěn)性,因此在進(jìn)行處理時需進(jìn)行分幀處理,然后逐幀對語音信號進(jìn)行LPC分析。本系統(tǒng)中,語音信號S(n)的精度為12位,采樣率為20k,幀長為10ms,相應(yīng)于每幀有200個采樣點(diǎn),每幀提取的部分相關(guān)系數(shù)K(m)的階數(shù)取為12。
對取出的每幀語音S(n)還需進(jìn)行加窗處理,即用窗函數(shù)W(n)乘S(n),形成加窗語音信號SW(n)。為減小Gibbs效應(yīng)的影響,本系統(tǒng)采用的窗函數(shù)為哈明窗。
為實現(xiàn)語音信號的LPC分析過程,選擇FLEX10K系列中的EPF10K100器件作為目標(biāo)芯片進(jìn)行設(shè)計,因其具有獨(dú)特的嵌入式陣列塊EAB而特別適合于對數(shù)字信號進(jìn)行處理[2-4]。系統(tǒng)設(shè)計中,采用自頂向下的設(shè)計思想,在頂層采用電路原理圖的設(shè)計方法將系統(tǒng)分為幾個功能模塊,在底層則采用VHDL語言來實現(xiàn)各功能模塊的設(shè)計。為保證系統(tǒng)整體的處理速度,電路設(shè)計采用了流水線作業(yè)方式,以數(shù)據(jù)流驅(qū)動各模塊協(xié)調(diào)工作,同時在一些影響系統(tǒng)整體速度的環(huán)節(jié)采用了并行處理技術(shù),很好地解決了制約系統(tǒng)速度的“瓶頸”。
系統(tǒng)的原理框圖如圖1所示。圖中U3、U10分別為由EAB構(gòu)成的200×12bit和12×12bit的雙口RAM陣列;U9為由EAB構(gòu)成的200×12bit的ROM查找表,內(nèi)置n=0~199的窗函數(shù)值W(n);U2、U4、U6為數(shù)據(jù)緩沖器;U7、U8分別為自關(guān)函數(shù)模塊和舒爾遞推算法模塊;U1為多路轉(zhuǎn)換開關(guān);U5是12位乘法器。
?
?
系統(tǒng)工作原理如下:將一幀語音信號S(n)經(jīng)U1送入U3,同時啟動加窗過程,窗函數(shù)值W(n)通過查找ROM表U9獲得,將取出的Wn和Sn送入乘法器U5相乘,乘積經(jīng)U2和U1又送回U3,得到加窗語音信號SW(n),然后將SW(n)送入自關(guān)函數(shù)模塊U7算出歸一化自關(guān)函數(shù)r(n),再將r(n)送入舒爾遞推模塊求出部分相關(guān)系數(shù)K(m),存入U10。至此,一幀數(shù)據(jù)的LPC分析即告結(jié)束。
2.2 自關(guān)函數(shù)模塊
自關(guān)函數(shù)的計算是影響系統(tǒng)速度的關(guān)鍵環(huán)節(jié),它要進(jìn)行大量的乘積累加操作。為提高系統(tǒng)運(yùn)行速度,將加窗語音信號SW(n)同時存入兩組RAM,采用并行取數(shù)的方式,同時取出參與運(yùn)算的兩個量,進(jìn)行乘法運(yùn)算,運(yùn)算結(jié)果立即送入累加器進(jìn)行累加。而此時乘法器又可進(jìn)行下一對數(shù)據(jù)的乘積運(yùn)算。整個過程中,乘法器和累加器一直在并行工作,從而保證了系統(tǒng)的流水線操作持續(xù)進(jìn)行,最大限度地保證了系統(tǒng)的運(yùn)行速度。
自關(guān)函數(shù)模塊的原理框圖如圖2所示。圖中U1、U2為EAB構(gòu)成的200×12bit的雙口RAM陣列;U8是帶清零功能的數(shù)據(jù)寄存器,U7為加法器,它們二者共同構(gòu)成累加器,為保證中間運(yùn)算結(jié)果的精度,累加器的寬度為32位;U3、U4、U6、U9、U10為數(shù)據(jù)寄存器;U5為12位乘法器,乘積為24位;U11為32位除法器,商取16位。
?
?
該模塊的工作過程是:將前面得到的加窗語音信號SW(n)同時存入U1和U2,然后按要求從中同時取出兩乘數(shù)Sn和Sn+l送入乘法器U5進(jìn)行乘運(yùn)算,將乘積作為一個操作數(shù)同U8中的數(shù)進(jìn)行累加。U8起始值被置為零,以后的值就是各次累加的和,最后一次累加的結(jié)果就是自關(guān)函數(shù)R(l)的值。然后再將它的值送入U10,將它同U9中的R(0)相除即得歸一化的自關(guān)函數(shù)值r(l)。整個過程中,由于采用了并行處理技術(shù),乘法器U5和累加器U7與U8一直處于工作狀態(tài),從而保證了系統(tǒng)的高速運(yùn)行。
2.3 舒爾遞推模塊
舒爾遞推算法一個很重要的特點(diǎn)是在整個遞推過程中全部參與運(yùn)算的量的初值、中間值和最終值皆小于1,因此特別適宜于采用定點(diǎn)運(yùn)算的硬件系統(tǒng)來實現(xiàn)。該模塊的設(shè)計也采用雙RAM結(jié)構(gòu)和同時取數(shù)同時運(yùn)算的并行處理技術(shù),所有運(yùn)算單元的精度都是16位,每處理一次遞推過程,就輸出一個K(m)值。
舒爾遞推模塊的原理框圖如圖3所示。圖中U2、U3為12×16bit的雙口RAM;U4、U6、U7、U8、U9、U11、U13為數(shù)據(jù)寄存器;U5、U10、U12分別為16位的除法器、乘法器和加法器;U1為多路轉(zhuǎn)換開關(guān)。該模塊的工作過程是:當(dāng)歸一化自關(guān)函數(shù)r(l)通過U1送入U2和U3后,立即從中取出Qm和Q0送入除法器U5進(jìn)行除運(yùn)算,除得的結(jié)果送入U8;與此同時又分別從U2和U3中同時取出Ql和Qm-l,將Qm-l與Km在U10相乘后,送入U11,接著與Ql在U12進(jìn)行相加,將結(jié)果經(jīng)U13、U1重新送回U2和U3,接著又進(jìn)行下一輪遞推,該過程一直要進(jìn)行到遞推階數(shù)完成。在每一次遞推過程中,當(dāng)U12在進(jìn)行當(dāng)前數(shù)據(jù)的加運(yùn)算時,U10就可進(jìn)行下一個數(shù)據(jù)的乘運(yùn)算。這樣整個過程就可在連續(xù)的流水線方式不間斷地進(jìn)行。
?
?
2.4 算術(shù)運(yùn)算單元
本系統(tǒng)所用到的算術(shù)運(yùn)算單元有加法器、乘法器和除法器三種。加法器采用標(biāo)準(zhǔn)的全加器來構(gòu)成,而乘法器則采用2的補(bǔ)碼的BOOTH乘法器。下面介紹除法器的設(shè)計思想和工作原理。
由于本系統(tǒng)所使用的除法運(yùn)算都是商小于1的除法,而且除法運(yùn)算又比乘法運(yùn)算少得多,因此對速度的影響也較小。綜合考慮速度和資源占用兩方面因素后,設(shè)計了下面的算法來實現(xiàn)除法器。設(shè)有兩個數(shù)A和B,A是被除數(shù),B是除數(shù),現(xiàn)在求它們的商Q=A/B,Q<1?,F(xiàn)將Q表示成下列形式:
由于上述算法只需進(jìn)行減法運(yùn)算和除2運(yùn)算,所以非常便于用硬件實現(xiàn),據(jù)此算法設(shè)計的除法器原理框圖如圖4所示。圖中U2為并入并出移位寄存器,每右移一位,實現(xiàn)一次除2操作;U5為補(bǔ)碼器,它由反相器和加一電路構(gòu)成,用于對B求補(bǔ)碼;U7為串入并出移位寄存器;U6為比較器,用于對A、B兩輸入數(shù)進(jìn)行比較,若A≥B,則輸出“1”,否則輸出“0”;U3為數(shù)據(jù)寄存器;U1為多路轉(zhuǎn)換器;U4為加法器。該電路按下述原理工作:被除數(shù)A經(jīng)U1送入U3并加到比較器U6的A端,除數(shù)B送入U2后右移一位再加到U6的B端。經(jīng)U6比較后,若輸出“1”,則先將U6的輸出移入移位寄存器U7,再將A與B送入由U4和U5組成的減法器進(jìn)行減法運(yùn)算,所得差值再經(jīng)U1送入U3;若輸出為“0”,則僅將U6的輸出移入U7即可。該步完成后,又將U2右移一位,再重復(fù)上述過程。整個操作一共要進(jìn)行K次,最后U7中的數(shù)即為A/B的商。
?
?
在本系統(tǒng)中,將LPC分析與FPGA技術(shù)結(jié)合,充分利用了FPGA作為一種快速、高效的硬件平臺在數(shù)字信號處理領(lǐng)域所具有的獨(dú)特優(yōu)勢,實現(xiàn)了語音信號特征參數(shù)的快速提取,為語音信號的進(jìn)一步處理打下基礎(chǔ)。本系統(tǒng)采用50MHz的時鐘頻率進(jìn)行工作。為考察其工作性能,對其整體性能指標(biāo)進(jìn)行了評估。由于影響整個系統(tǒng)速度的是乘法累加運(yùn)算,因此它的工作性能也就決定了系統(tǒng)的性能。在求歸一化自關(guān)函數(shù)r(l)過程中,涉及到近200次的乘積累加,采用并行處理技術(shù)和流水線操作方式的FPGA則可以用接近50MHz的數(shù)據(jù)速率進(jìn)行工作,整個系統(tǒng)的性能同其他芯片相比約提高40%~60%,因此用FPGA技術(shù)來處理語音信號具有得天獨(dú)厚的優(yōu)點(diǎn)。
??? 本系統(tǒng)除具有處理速度快的特點(diǎn)外,還具有獨(dú)立靈活的輸入輸出接口及一組檢測和控制信號線,可以方便地同任何一種處理器直接連接。由于FPGA自身所具有的抗干擾能力強(qiáng)、可靠性高的優(yōu)點(diǎn),本系統(tǒng)可廣泛應(yīng)用于自動控制、工業(yè)機(jī)器人、語音合成和語音編譯碼等領(lǐng)域,特別對嵌入式系統(tǒng)的設(shè)計具有重要意義。
?
參考文獻(xiàn)
1 楊行峻,遲惠生.語音信號數(shù)字處理.北京:電子工業(yè)出版社,1995
2 劉寶琴.ALTERA可編程邏輯器件及其應(yīng)用.北京:清華大學(xué)出版社,1995
3 Altera. MAX+PLUSⅡ? Programmable? Logic? Development? System? AHDL,1997
4 FLEX Embedded Programmable Logic Family Data Sheet.ALTERA Corporation,1998