RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于LPC與LSF系數(shù)轉(zhuǎn)換的FPGA實(shí)現(xiàn)

電子工程師 ? 來源:微型機(jī)與應(yīng)用第13期 ? 作者: 張 俏,楊 驍,湯 ? 2021-04-07 11:49 ? 次閱讀

摘 要: 首先根據(jù)切比雪夫多項(xiàng)式求根法對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é)論和分析。

線性預(yù)測法(LPC)成功地應(yīng)用于語音信號處理的各個(gè)方面,在語音參數(shù)的估計(jì)中也被廣泛地應(yīng)用,如基音周期、共振峰頻率和譜特征分析等。線性預(yù)測的基本思想是:由于語音信號之間存在相關(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ù)測(MELP)聲碼器。近幾年,在語音信號處理中,LSF參數(shù)研究一直是熱點(diǎn),參考文獻(xiàn)[3-4]對LSF參數(shù)量化方法進(jìn)行分析與仿真,但由LPC系數(shù)與LSF系數(shù)相互轉(zhuǎn)換的研究少之又少。

伴隨語音技術(shù)的不斷發(fā)展,對語音信號數(shù)字化處理的實(shí)時(shí)性要求越發(fā)嚴(yán)格,專用的語音信號處理芯片能滿足語音信號實(shí)時(shí)性的要求,LPC與LSF轉(zhuǎn)換是專用語音處理芯片的關(guān)鍵模塊之一。MELP算法語音編碼過程中,首先,把經(jīng)過帶寬擴(kuò)展后的線性預(yù)測系數(shù)轉(zhuǎn)為LSF系數(shù);其次,LSF參數(shù)按最小間隔排序;

最后,對排序后的LSF進(jìn)行4級矢量量化。MELP算法解碼過程中,由內(nèi)插的LSF參數(shù)計(jì)算合成濾波器的系數(shù),得到合成濾波器,激勵(lì)信號經(jīng)過合成濾波器得到合成語音。由于LSF參數(shù)的特性,保證了合成濾波器的穩(wěn)定性[5]。LPC與LSF轉(zhuǎn)換算法的FPGA實(shí)現(xiàn)對語音編碼、語音合成等領(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)換

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

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

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

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

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

可以證明,當(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

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},對應(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ù)原來方程式對應(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 余弦信號發(fā)生器

FPGA實(shí)現(xiàn)LSP到LPC轉(zhuǎn)換是通過上文介紹的迭代算法來實(shí)現(xiàn)的。因?yàn)閝i=coswi,迭代過程中qi的值是根據(jù)wi值來求出的。對于余弦的計(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中查找量化值所對應(yīng)的余弦值,這種方法計(jì)算速度快,但是存在一定的量化誤差,會消耗一定存儲空間??紤]到實(shí)時(shí)性語言編解碼,本文的設(shè)計(jì)方案選擇的是查找表法,在每一輪計(jì)算中通過wi值查找ROM來得到qi,借助DDS算法原理[8],用相位累加器輸出的數(shù)據(jù)作為波形存儲器(ROM)的相位取樣地址,這樣就可以把存儲在波形存儲器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出,完成相位到幅值的轉(zhuǎn)變。

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

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

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

(3)將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è)地址所對應(yīng)的ROM單元中讀出的余弦值就是當(dāng)前迭代coswi值。迭代中設(shè)定初始值p′(0)=1,p′(-1)=0。

001.jpg

本文選取線性預(yù)測階數(shù)p=10,LSF系數(shù)到LPC系數(shù)算法FPGA實(shí)現(xiàn)頂層框圖如圖2所示,系統(tǒng)在start信號的上升沿開始加載wi,并將數(shù)據(jù)存儲在內(nèi)部寄存器中,為LPC系數(shù)迭代做好準(zhǔn)備。圖2模塊LSP2LP_Exloop,根據(jù)算法流程圖,在FPGA實(shí)現(xiàn)過程中,flage標(biāo)識位用于指定當(dāng)前運(yùn)算是針對P還是Q的求解,因?yàn)镻對應(yīng)的是奇數(shù)序列,Q對應(yīng)偶數(shù)序列,因?yàn)槠嫘蛄惺窍噜弮身?xiàng)做和如式(12)所示,而偶數(shù)序列是相鄰兩項(xiàng)做差如式(13)所示。

當(dāng)p_part和q_part兩個(gè)模塊完成迭代計(jì)算后,會給將各自的finish信號置為高電平,用以通知LSP2LPC_inter模塊合成ai系數(shù)。LSP2LPC_inter模塊在接收到p_part和q_part的finish信號后,同時(shí)將P和Q系數(shù)值載入并且根據(jù)式(15)所示計(jì)算過程完成P、Q到ai的合成,并將finish信號置為高電平。圖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)式在較高的采樣率下,對線性預(yù)測階數(shù)要求不高,轉(zhuǎn)換性能影響不大。由于在0和π附近變化引起變化很小,可以得到高精度轉(zhuǎn)換參數(shù)值,時(shí)序測定時(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ù)的快速,低存儲矢量量化[J].吉林大學(xué)學(xué)報(bào):工學(xué)版,2012,42(1):223-227.

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

[5] 鮑長春.數(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.

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602964
  • LPC
    LPC
    +關(guān)注

    關(guān)注

    8

    文章

    136

    瀏覽量

    77623
  • DDS
    DDS
    +關(guān)注

    關(guān)注

    21

    文章

    633

    瀏覽量

    152630
  • 線譜
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    6409
收藏 人收藏

    評論

    相關(guān)推薦

    LSF0108的1.8V參考電平異常的原因?怎么解決?

    LSF0108的1.8V使用的是TLV70218,3.3V使用的是1117-3.3 原理如下圖所示 測試1.8V這端始終是2.5V。斷開A端的這個(gè)1.8V,單獨(dú)測試TLV70218的1.8V
    發(fā)表于 12-19 06:37

    請問LSF0108輸入電壓是多少?輸出電壓是多少?

    我使用LSF0108用于將FPGA產(chǎn)生 的3.3VPWM轉(zhuǎn)換為5V,使用的電路如下圖所示: 現(xiàn)在我直接給PWM_out_1A即LSF0108的三腳一個(gè)持續(xù)的3.3V高電平,在B1處
    發(fā)表于 12-17 07:34

    請問LSF0102可否多個(gè)串聯(lián)使用?

    如題。例如將兩個(gè)LSF0102的B-port相連,進(jìn)而實(shí)現(xiàn)從一個(gè)A-port到另一個(gè)A-port的無限制電平轉(zhuǎn)換
    發(fā)表于 12-11 08:00

    LSF0102輸入輸出低電平異常的原因?

    請問這個(gè)LSF0102的電平轉(zhuǎn)換器,當(dāng)輸入端接0.7V低電壓時(shí)輸出側(cè)是怎樣的輸出值呢? 為什么我測到的輸出側(cè)0.7V,而不是GND的電平呢? 下圖中,我們在B2端口拉0.7V,從A2端口測到的電壓也是0.7V;在B2加1V,在A2口測到的也是1V。為何不是GND 低電平
    發(fā)表于 12-11 07:26

    電平轉(zhuǎn)換芯片LSF0108一直為高電平是怎么回事?

    用了兩款TI的轉(zhuǎn)換芯片,一款是TXS0108E轉(zhuǎn)換芯片,工作正常。另一片是LSF0108轉(zhuǎn)換2.5v到3.3v,現(xiàn)在測試LSF0108時(shí),
    發(fā)表于 12-11 06:10

    請問LSF0108是否可以應(yīng)用在LOCAL BUS的場景?

    需要將FPGA輸出的1.2V localbus信號轉(zhuǎn)換成3.3V,LSF0108是否可以應(yīng)用,或者還有沒有其他的方案?
    發(fā)表于 12-03 08:37

    使用LSF系列進(jìn)行電壓電平轉(zhuǎn)換

    電子發(fā)燒友網(wǎng)站提供《使用LSF系列進(jìn)行電壓電平轉(zhuǎn)換.pdf》資料免費(fèi)下載
    發(fā)表于 10-08 10:24 ?0次下載
    使用<b class='flag-5'>LSF</b>系列進(jìn)行電壓電平<b class='flag-5'>轉(zhuǎn)換</b>

    汽車類 2 通道自動雙向多電壓電平轉(zhuǎn)換LSF0102-Q1數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《汽車類 2 通道自動雙向多電壓電平轉(zhuǎn)換LSF0102-Q1數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-09 16:38 ?2次下載
    汽車類 2 通道自動雙向多電壓電平<b class='flag-5'>轉(zhuǎn)換</b>器<b class='flag-5'>LSF</b>0102-Q1數(shù)據(jù)表

    汽車類 8 通道多電壓電平轉(zhuǎn)換LSF0108-Q1數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《汽車類 8 通道多電壓電平轉(zhuǎn)換LSF0108-Q1數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-08 09:31 ?0次下載
    汽車類 8 通道多電壓電平<b class='flag-5'>轉(zhuǎn)換</b>器<b class='flag-5'>LSF</b>0108-Q1數(shù)據(jù)表

    適用于漏極開路和推挽應(yīng)用的4位雙向多電壓電平轉(zhuǎn)換LSF0204x數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于漏極開路和推挽應(yīng)用的4位雙向多電壓電平轉(zhuǎn)換LSF0204x數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-08 09:30 ?0次下載
    適用于漏極開路和推挽應(yīng)用的4位雙向多電壓電平<b class='flag-5'>轉(zhuǎn)換</b>器<b class='flag-5'>LSF</b>0204x數(shù)據(jù)表

    通過汽車認(rèn)證的 LSF0204-Q1 4位自動雙向多電壓電平轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《通過汽車認(rèn)證的 LSF0204-Q1 4位自動雙向多電壓電平轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-07 10:11 ?0次下載
    通過汽車認(rèn)證的 <b class='flag-5'>LSF</b>0204-Q1 4位自動雙向多電壓電平<b class='flag-5'>轉(zhuǎn)換</b>器數(shù)據(jù)表

    適用于開漏和推挽應(yīng)用的單通道自動雙向多電壓電平轉(zhuǎn)換LSF0101數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于開漏和推挽應(yīng)用的單通道自動雙向多電壓電平轉(zhuǎn)換LSF0101數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-07 09:40 ?0次下載
    適用于開漏和推挽應(yīng)用的單通道自動雙向多電壓電平<b class='flag-5'>轉(zhuǎn)換</b>器<b class='flag-5'>LSF</b>0101數(shù)據(jù)表

    適用于開漏和推挽應(yīng)用的 8 通道自動雙向多電壓電平轉(zhuǎn)換LSF0108數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于開漏和推挽應(yīng)用的 8 通道自動雙向多電壓電平轉(zhuǎn)換LSF0108數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-06 11:31 ?0次下載
    適用于開漏和推挽應(yīng)用的 8 通道自動雙向多電壓電平<b class='flag-5'>轉(zhuǎn)換</b>器<b class='flag-5'>LSF</b>0108數(shù)據(jù)表

    適用于開漏和推挽應(yīng)用的雙通道自動雙向多電壓電平轉(zhuǎn)換LSF0102數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于開漏和推挽應(yīng)用的雙通道自動雙向多電壓電平轉(zhuǎn)換LSF0102數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 04-29 10:56 ?0次下載
    適用于開漏和推挽應(yīng)用的雙通道自動雙向多電壓電平<b class='flag-5'>轉(zhuǎn)換</b>器<b class='flag-5'>LSF</b>0102數(shù)據(jù)表

    LSF系列引腳FMEA應(yīng)用指南

    電子發(fā)燒友網(wǎng)站提供《LSF系列引腳FMEA應(yīng)用指南.pdf》資料免費(fèi)下載
    發(fā)表于 01-03 15:19 ?0次下載
    <b class='flag-5'>LSF</b>系列引腳FMEA應(yīng)用指南
    RM新时代网站-首页