《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > LPC與LSF系數(shù)轉(zhuǎn)換的FPGA實(shí)現(xiàn)
LPC與LSF系數(shù)轉(zhuǎn)換的FPGA實(shí)現(xiàn)
2014年微型機(jī)與應(yīng)用第13期
張 俏,,楊 驍,湯 煒
華僑大學(xué) 信息科學(xué)與工程學(xué)院,福建 廈門
摘要: 首先根據(jù)切比雪夫多項(xiàng)式求根法對(duì)LPC系數(shù)到LSF系數(shù)轉(zhuǎn)換過程進(jìn)行分析與推導(dǎo),并給出了根據(jù)已知的LSF系數(shù)進(jìn)行逆推求LPC系數(shù)迭代算法。然后,,借助DDS算法原理實(shí)現(xiàn)查找表搜索求根,并在FPGA上實(shí)現(xiàn)了LSF系數(shù)到LPC系數(shù)轉(zhuǎn)換。最后,,給出了結(jié)論和分析。
Abstract:
Key words :

  摘  要: 首先根據(jù)切比雪夫多項(xiàng)式求根法對(duì)LPC系數(shù)到LSF系數(shù)轉(zhuǎn)換過程進(jìn)行分析與推導(dǎo),,并給出了根據(jù)已知的LSF系數(shù)進(jìn)行逆推求LPC系數(shù)迭代算法,。然后,借助DDS算法原理實(shí)現(xiàn)查找表搜索求根,,并在FPGA上實(shí)現(xiàn)了LSF系數(shù)到LPC系數(shù)轉(zhuǎn)換,。最后,,給出了結(jié)論和分析。

  關(guān)鍵詞線性預(yù)測(cè)系數(shù),;線譜頻率,;切比雪夫多項(xiàng)式;FPGA,;DDS

  線性預(yù)測(cè)法(LPC)成功地應(yīng)用于語音信號(hào)處理的各個(gè)方面,,在語音參數(shù)的估計(jì)中也被廣泛地應(yīng)用,如基音周期,、共振峰頻率和譜特征分析等,。線性預(yù)測(cè)的基本思想是:由于語音信號(hào)之間存在相關(guān)性的特點(diǎn),可以用過去若干個(gè)語音采樣值或它們的線性組合近似表示當(dāng)前語音采樣值,。在LPC分析中,,最普遍的方法是使用線譜頻率(LSF)表示LPC參量[1]。LSF是頻域參數(shù),,具有良好的量化特性和內(nèi)插特性,,小系數(shù)的誤差引起濾波器的局部誤差,構(gòu)成的合成濾波器有較好的穩(wěn)定性[2],。10階的LPC系數(shù)的LSF參數(shù)成功地應(yīng)用在低速率語音編碼器中,,如混合激勵(lì)線性預(yù)測(cè)(MELP)聲碼器。近幾年,,在語音信號(hào)處理中,,LSF參數(shù)研究一直是熱點(diǎn),參考文獻(xiàn)[3-4]對(duì)LSF參數(shù)量化方法進(jìn)行分析與仿真,,但由LPC系數(shù)與LSF系數(shù)相互轉(zhuǎn)換的研究少之又少,。

  伴隨語音技術(shù)的不斷發(fā)展,對(duì)語音信號(hào)數(shù)字化處理的實(shí)時(shí)性要求越發(fā)嚴(yán)格,,專用的語音信號(hào)處理芯片能滿足語音信號(hào)實(shí)時(shí)性的要求,,LPC與LSF轉(zhuǎn)換是專用語音處理芯片的關(guān)鍵模塊之一。MELP算法語音編碼過程中,,首先,,把經(jīng)過帶寬擴(kuò)展后的線性預(yù)測(cè)系數(shù)轉(zhuǎn)為L(zhǎng)SF系數(shù);其次,,LSF參數(shù)按最小間隔排序,;最后,對(duì)排序后的LSF進(jìn)行4級(jí)矢量量化,。MELP算法解碼過程中,,由內(nèi)插的LSF參數(shù)計(jì)算合成濾波器的系數(shù),得到合成濾波器,,激勵(lì)信號(hào)經(jīng)過合成濾波器得到合成語音,。由于LSF參數(shù)的特性,,保證了合成濾波器的穩(wěn)定性[5],。LPC與LSF轉(zhuǎn)換算法的FPGA實(shí)現(xiàn)對(duì)語音編碼,、語音合成等領(lǐng)域硬件實(shí)現(xiàn)至關(guān)重要。本文給出了LSF到LPC轉(zhuǎn)換運(yùn)算推導(dǎo),,并給出了算法的實(shí)現(xiàn)步驟,。

  1 轉(zhuǎn)換算法原理

  1.1 由LPC系數(shù)向LSF系數(shù)轉(zhuǎn)換

  本文針對(duì)LPC系數(shù)計(jì)算LSF系數(shù)的Chebyshev多項(xiàng)式求解法進(jìn)行研究:

  P階線性預(yù)測(cè)濾波器函數(shù)為:

  A]6BL_VK2K~D2OX6_$F$YO4.png

  {ai}i=1,2,,…,,p為線性預(yù)測(cè)系數(shù)。預(yù)測(cè)系數(shù)ai在最小均方誤差準(zhǔn)則下,,由Durbin遞推算法求解自相關(guān)方程得到[6],。

  LSF[7]作為L(zhǎng)PC系數(shù)的等價(jià)表現(xiàn)形式,可通過求解p+1階對(duì)稱多項(xiàng)式P(z)和反對(duì)稱多項(xiàng)式Q(z)的共軛復(fù)根獲得,。其中p+1階多項(xiàng)式表示如下:

  P(z)=A(z)+z-(p+1)×A(z-1)(2)

  Q(z)=A(z)+z-(p+1)×A(z-1)(3)

  可以證明,,當(dāng)A(z)的根位于單位圓內(nèi)時(shí),P(z)和  Q(z)的根沿著單位圓相互交替出現(xiàn),。當(dāng)p是偶數(shù)時(shí),,則P(z)有一個(gè)根z=-1,Q(z)有一個(gè)根z=1,;當(dāng)p為奇數(shù)時(shí),,Q(z)有±1兩個(gè)實(shí)根。設(shè)P(z)的零點(diǎn)為e,,設(shè)Q(z)的零點(diǎn)為e,,則滿足:0<?棕1<?茲1<…?棕p/1<?茲p/1<π。為計(jì)算方便,,去掉與LSF系數(shù)無關(guān)的實(shí)根,,得到兩個(gè)新的多項(xiàng)式P′(z)和Q′(z),當(dāng)p為偶數(shù)時(shí):

  4567.jpg

  令Tm(x)=cos(mx),,其中Tm(x)是m階的Chebyshev多項(xiàng)式,。滿足關(guān)系式Tk(x)=2xTk-1(x)-Tk-2(x),初始條件為:T0(x)=1,,T1(x)=x,,則帶入式(6)、(7)得P(x)和Q(x):

  P(x)=TM(x)+p1TM-1(x)+…+pM-1T1(x)+pM(8)

  Q(x)=TM(x)+q1TM-1(x)+…+qM-1T1(x)+qM(9)

  Chebyshev多項(xiàng)式求解法本質(zhì)是求解x滿足區(qū)間[-1,,1],,求P(x)=0和Q(x)=0的根{xi},對(duì)應(yīng)的LSF系數(shù)由?棕i=arccosxi確定,。

  1.2 由LSF系數(shù)向LPC系數(shù)轉(zhuǎn)換

  在語音解碼過程中,,需要把量化和內(nèi)插后的LSF系數(shù)轉(zhuǎn)換回LPC系數(shù){ai}i=1,,2,…,,p,,逆向推導(dǎo),已知內(nèi)插的LSP系數(shù)fi,,根據(jù)fi可計(jì)算出P′(z)和Q′(z)的系數(shù)p′i和q′i,。

  p′i=-2f2i-1p′i+2p′i-2(10)

  q′i=-2f2iq′i-1+2q′i-2(11)

  其中f2i-1=cos?棕2i-1,求出p′i和q′i,。根據(jù)原來方程式對(duì)應(yīng)關(guān)系:

  P(z)=P′(z)×(1+z-1)(12)

  Q(z)=Q′(z)×(1-z-1)(13)

  最后得到LPC系數(shù)可由A(z)+P(z)+Q(z)/2得到參數(shù)ai,。

  2 FPGA實(shí)現(xiàn)架構(gòu)

  2.1 算法實(shí)現(xiàn)步驟

  量化和內(nèi)插后的LSP系數(shù)需要更換成LPC系數(shù)ai。已知量化和內(nèi)插的LSP系數(shù)qi,,i=0,,1,…,,p-1,,根據(jù)前文推導(dǎo),可以得到下面迭代公式:

  for i=1 to p/2

  p′(i)=-2q2i-1p′(i-1)+2p′(i-2)

  for j=i-1 to 1

  p′(j)=p′(j)-2q2i-1p′(j-1)+2p′(i-2)

  end

  end

  公式中的qi=coswi,,余弦是通過查找表方式求得的,,迭代過程中的初始值p′(0)=1,p′(-1)=0,。上面迭代公式給出的是p′(i)的求法,,在求解q′(i)時(shí)將上面的迭代公式中的q2i-1換成q2i即可。

  在求得p′(i)和q′(i)后就可以求得p(i),、q(i),,求解公式如下:

  p1(i)=p′(i)+p′(i-1),i=1,,2,,…,p/2q1(i)=q′(i)-q′(i-1),,i=1,,2,…,,p/2(14)

  最后得到LPC系數(shù):

  ai=0.5p1(i)+0.5q1(i),,       i=1,2,,…,,p/20.5p1(p+1-i)-0.5q1(p+1-i),i=1,2,,…,,p/2(15)

  2.2 余弦信號(hào)發(fā)生器

  FPGA實(shí)現(xiàn)LSP到LPC轉(zhuǎn)換是通過上文介紹的迭代算法來實(shí)現(xiàn)的。因?yàn)閝i=coswi,,迭代過程中qi的值是根據(jù)wi值來求出的,。對(duì)于余弦的計(jì)算有很多方法,CORDIC旋轉(zhuǎn)是一種方法,,查找表也是一種方法,。CORDIC旋轉(zhuǎn)方法通過數(shù)學(xué)函數(shù)逼近的原理,,每次旋轉(zhuǎn)一定的角度來得到余弦值,,但是這種方法得到的精度和迭代的次數(shù)有關(guān);查找表方法是先將余弦值根據(jù)量化位數(shù)計(jì)算出來存在ROM中,,每次計(jì)算是需要將數(shù)據(jù)進(jìn)行量化然后去ROM中查找量化值所對(duì)應(yīng)的余弦值,,這種方法計(jì)算速度快,但是存在一定的量化誤差,,會(huì)消耗一定存儲(chǔ)空間,。考慮到實(shí)時(shí)性語言編解碼,,本文的設(shè)計(jì)方案選擇的是查找表法,,在每一輪計(jì)算中通過wi值查找ROM來得到qi,借助DDS算法原理[8],,用相位累加器輸出的數(shù)據(jù)作為波形存儲(chǔ)器(ROM)的相位取樣地址,,這樣就可以把存儲(chǔ)在波形存儲(chǔ)器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出,完成相位到幅值的轉(zhuǎn)變,。

  憑借MATLAB軟件可以生成ROM中余弦波形的定點(diǎn)數(shù)值,,共分3步完成。

 ?。?)運(yùn)用MATLAB計(jì)算出余弦波形浮點(diǎn)值,,對(duì)其進(jìn)行量化,生成定點(diǎn)數(shù)值,。

 ?。?)產(chǎn)生mif文件(Altera FPGA ROM初始化數(shù)據(jù)文件格式)。

 ?。?)將mif文件導(dǎo)入到“getCos”ROM模塊中,。

  2.3 系統(tǒng)框架與結(jié)果分析

  FPGA實(shí)現(xiàn)LSP到LPC轉(zhuǎn)換時(shí)主要是根據(jù)給定的wi(或者fi)系數(shù)通過反復(fù)迭代而得到LPC系數(shù),圖1為迭代算法的流程圖,。FPGA算法中一般采用計(jì)數(shù)器方式來實(shí)現(xiàn)for循環(huán),,算法中有兩個(gè)計(jì)數(shù)器cnt1和cnt2,它們分別用于決定算法中兩層循環(huán),,cnt1是標(biāo)定系數(shù)個(gè)數(shù),,當(dāng)完成P/2個(gè)系數(shù)迭代時(shí)系統(tǒng)給出計(jì)算結(jié)束標(biāo)志,,cnt2用來確定當(dāng)前系數(shù)的迭代次數(shù)。地址發(fā)送器是用來確定LSP系數(shù)查詢地址,,它是根據(jù)wi和當(dāng)前cnt1值來決定數(shù)據(jù)的地址,。這個(gè)地址所對(duì)應(yīng)的ROM單元中讀出的余弦值就是當(dāng)前迭代coswi值。迭代中設(shè)定初始值p′(0)=1,,p′(-1)=0,。

001.jpg

  本文選取線性預(yù)測(cè)階數(shù)p=10,LSF系數(shù)到LPC系數(shù)算法FPGA實(shí)現(xiàn)頂層框圖如圖2所示,,系統(tǒng)在start信號(hào)的上升沿開始加載wi,,并將數(shù)據(jù)存儲(chǔ)在內(nèi)部寄存器中,為L(zhǎng)PC系數(shù)迭代做好準(zhǔn)備,。圖2模塊LSP2LP_Exloop,,根據(jù)算法流程圖,在FPGA實(shí)現(xiàn)過程中,,flage標(biāo)識(shí)位用于指定當(dāng)前運(yùn)算是針對(duì)P還是Q的求解,,因?yàn)镻對(duì)應(yīng)的是奇數(shù)序列,Q對(duì)應(yīng)偶數(shù)序列,,因?yàn)槠嫘蛄惺窍噜弮身?xiàng)做和如式(12)所示,,而偶數(shù)序列是相鄰兩項(xiàng)做差如式(13)所示。當(dāng)p_part和q_part兩個(gè)模塊完成迭代計(jì)算后,,會(huì)給將各自的finish信號(hào)置為高電平,,用以通知LSP2LPC_inter模塊合成ai系數(shù)。LSP2LPC_inter模塊在接收到p_part和q_part的finish信號(hào)后,,同時(shí)將P和Q系數(shù)值載入并且根據(jù)式(15)所示計(jì)算過程完成P,、Q到ai的合成,并將finish信號(hào)置為高電平,。圖3為FPGA綜合報(bào)告,,由此可見資源利用情況。

002.jpg

003.jpg

004.jpg

  圖4為系統(tǒng)的Quartus II仿真報(bào)告,,從報(bào)告中可以看出系統(tǒng)能準(zhǔn)確地合成系數(shù),,這也說明了設(shè)計(jì)的可行性。

  根據(jù)切比雪夫多項(xiàng)式求根法由LPC系數(shù)到LSF系數(shù)轉(zhuǎn)換過程進(jìn)行分析與推導(dǎo),,根據(jù)已知的LSF系數(shù)進(jìn)行逆推理求LPC系數(shù),,并給出了LSF到LPC系數(shù)轉(zhuǎn)換的實(shí)現(xiàn)步驟。借助DDS算法原理,,實(shí)現(xiàn)查找表搜索求根,,利用FPGA實(shí)現(xiàn)LSF系數(shù)到LPC系數(shù)轉(zhuǎn)換。與其他多項(xiàng)式相比較,Chebyshev多項(xiàng)式在較高的采樣率下,,對(duì)線性預(yù)測(cè)階數(shù)要求不高,,轉(zhuǎn)換性能影響不大。由于在0和π附近變化引起變化很小,,可以得到高精度轉(zhuǎn)換參數(shù)值,,時(shí)序測(cè)定時(shí)系統(tǒng)時(shí)鐘可以達(dá)到66 MHz。最后系統(tǒng)能準(zhǔn)確地合成LPC系數(shù),,說明了設(shè)計(jì)的可行性,,并為今后的設(shè)計(jì)提供了一定的參考價(jià)值。

  參考文獻(xiàn)

  [1] 方騰龍,,趙曉群,,韓笑蕾,等.語音清濁音差分LSF參數(shù)矢量量化方法[J].電聲技術(shù),,2010,,34(11):61-64.

  [2] 袁曉勇,唐建紅,,曲志昱.基于Chebyshev法實(shí)現(xiàn)LPC與LSF相互轉(zhuǎn)換[J].信息技術(shù),2009,,5(79):229-231.

  [3] 梁彥霞,,楊家瑋,李燁,,等.線譜頻率參數(shù)的快速,,低存儲(chǔ)矢量量化[J].吉林大學(xué)學(xué)報(bào):工學(xué)版,2012,,42(1):223-227.

  [4] 向波,,唐昆,崔慧娟,,等.基于DCT變換的LSF參數(shù)降維算法[J].通信技術(shù),,2008,41(8):204-206.

  [5] 鮑長(zhǎng)春.數(shù)字語音編碼原理[M].西安:西安電子科技大學(xué)出版社,,2007.

  [6] 張雪英.數(shù)字語音處理及MATLAB仿真[M].北京:電子工業(yè)出版社,,2010.

  [7] SOONG F, JUANG B. Line spectrum pair (LSP) and speech data compression[J]. Acoustics,, Speech,, and Signal Processing, IEEE International Conference on ICASSP′84. IEEE,, 1984(9):37-40.

  [8] 田耘,,徐文波,張延偉,等.無線通信FPGA設(shè)計(jì)[M].北京:電子工業(yè)出版社,,2008.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。