<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于LPC與LSF系數轉換的FPGA實現

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

摘 要: 首先根據切比雪夫多項式求根法對LPC系數到LSF系數轉換過程進行分析與推導,并給出了根據已知的LSF系數進行逆推求LPC系數迭代算法。然后,借助DDS算法原理實現查找表搜索求根,并在FPGA上實現了LSF系數到LPC系數轉換。最后,給出了結論和分析。

線性預測法(LPC)成功地應用于語音信號處理的各個方面,在語音參數的估計中也被廣泛地應用,如基音周期、共振峰頻率和譜特征分析等。線性預測的基本思想是:由于語音信號之間存在相關性的特點,可以用過去若干個語音采樣值或它們的線性組合近似表示當前語音采樣值。在LPC分析中,最普遍的方法是使用線譜頻率(LSF)表示LPC參量[1]。

LSF是頻域參數,具有良好的量化特性和內插特性,小系數的誤差引起濾波器的局部誤差,構成的合成濾波器有較好的穩定性[2]。10階的LPC系數的LSF參數成功地應用在低速率語音編碼器中,如混合激勵線性預測(MELP)聲碼器。近幾年,在語音信號處理中,LSF參數研究一直是熱點,參考文獻[3-4]對LSF參數量化方法進行分析與仿真,但由LPC系數與LSF系數相互轉換的研究少之又少。

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

最后,對排序后的LSF進行4級矢量量化。MELP算法解碼過程中,由內插的LSF參數計算合成濾波器的系數,得到合成濾波器,激勵信號經過合成濾波器得到合成語音。由于LSF參數的特性,保證了合成濾波器的穩定性[5]。LPC與LSF轉換算法的FPGA實現對語音編碼、語音合成等領域硬件實現至關重要。本文給出了LSF到LPC轉換運算推導,并給出了算法的實現步驟。

1 轉換算法原理

1.1 由LPC系數向LSF系數轉換

本文針對LPC系數計算LSF系數的Chebyshev多項式求解法進行研究:

P階線性預測濾波器函數為:

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

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

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

可以證明,當A(z)的根位于單位圓內時,P(z)和 Q(z)的根沿著單位圓相互交替出現。當p是偶數時,則P(z)有一個根z=-1,Q(z)有一個根z=1;當p為奇數時,Q(z)有±1兩個實根。設P(z)的零點為e,設Q(z)的零點為e,則滿足:0

4567.jpg

令Tm(x)=cos(mx),其中Tm(x)是m階的Chebyshev多項式。滿足關系式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多項式求解法本質是求解x滿足區間[-1,1],求P(x)=0和Q(x)=0的根{xi},對應的LSF系數由?棕i=arccosxi確定。

1.2 由LSF系數向LPC系數轉換

在語音解碼過程中,需要把量化和內插后的LSF系數轉換回LPC系數{ai}i=1,2,…,p,逆向推導,已知內插的LSP系數fi,根據fi可計算出P′(z)和Q′(z)的系數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。根據原來方程式對應關系:

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

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

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

2 FPGA實現架構

2.1 算法實現步驟

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

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)時將上面的迭代公式中的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系數:

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 余弦信號發生器

FPGA實現LSP到LPC轉換是通過上文介紹的迭代算法來實現的。因為qi=coswi,迭代過程中qi的值是根據wi值來求出的。對于余弦的計算有很多方法,CORDIC旋轉是一種方法,查找表也是一種方法。CORDIC旋轉方法通過數學函數逼近的原理,每次旋轉一定的角度來得到余弦值,但是這種方法得到的精度和迭代的次數有關;

查找表方法是先將余弦值根據量化位數計算出來存在ROM中,每次計算是需要將數據進行量化然后去ROM中查找量化值所對應的余弦值,這種方法計算速度快,但是存在一定的量化誤差,會消耗一定存儲空間??紤]到實時性語言編解碼,本文的設計方案選擇的是查找表法,在每一輪計算中通過wi值查找ROM來得到qi,借助DDS算法原理[8],用相位累加器輸出的數據作為波形存儲器(ROM)的相位取樣地址,這樣就可以把存儲在波形存儲器內的波形抽樣值(二進制編碼)經查找表查出,完成相位到幅值的轉變。

憑借MATLAB軟件可以生成ROM中余弦波形的定點數值,共分3步完成。

(1)運用MATLAB計算出余弦波形浮點值,對其進行量化,生成定點數值。

(2)產生mif文件(Altera FPGA ROM初始化數據文件格式)。

(3)將mif文件導入到“getCos”ROM模塊中。

2.3 系統框架與結果分析

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

001.jpg

本文選取線性預測階數p=10,LSF系數到LPC系數算法FPGA實現頂層框圖如圖2所示,系統在start信號的上升沿開始加載wi,并將數據存儲在內部寄存器中,為LPC系數迭代做好準備。圖2模塊LSP2LP_Exloop,根據算法流程圖,在FPGA實現過程中,flage標識位用于指定當前運算是針對P還是Q的求解,因為P對應的是奇數序列,Q對應偶數序列,因為奇序列是相鄰兩項做和如式(12)所示,而偶數序列是相鄰兩項做差如式(13)所示。

當p_part和q_part兩個模塊完成迭代計算后,會給將各自的finish信號置為高電平,用以通知LSP2LPC_inter模塊合成ai系數。LSP2LPC_inter模塊在接收到p_part和q_part的finish信號后,同時將P和Q系數值載入并且根據式(15)所示計算過程完成P、Q到ai的合成,并將finish信號置為高電平。圖3為FPGA綜合報告,由此可見資源利用情況。

002.jpg

003.jpg

004.jpg

圖4為系統的Quartus II仿真報告,從報告中可以看出系統能準確地合成系數,這也說明了設計的可行性。

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

參考文獻

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

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

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

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

[5] 鮑長春.數字語音編碼原理[M].西安:西安電子科技大學出版社,2007.

[6] 張雪英.數字語音處理及MATLAB仿真[M].北京:電子工業出版社,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設計[M].北京:電子工業出版社,2008.

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1608

    文章

    21358

    瀏覽量

    594369
  • LPC
    LPC
    +關注

    關注

    8

    文章

    135

    瀏覽量

    77387
  • DDS
    DDS
    +關注

    關注

    21

    文章

    616

    瀏覽量

    151843
  • 線譜
    +關注

    關注

    0

    文章

    3

    瀏覽量

    6385
收藏 人收藏

    評論

    相關推薦

    汽車類 2 通道自動雙向多電壓電平轉換LSF0102-Q1數據表

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

    怎么在labview FPGA實現離散傳遞函數的表達?

    我只知道有一個這個控件,叫直接型離散傳遞函數實現,但是我輸入離散傳遞函數的系數之后,他的輸出有問題。我再非FPGA端嘗試使用相同的系數進行仿真,輸出是沒有問題的。我不知道前面的問題出在
    發表于 05-09 11:43

    汽車類 8 通道多電壓電平轉換LSF0108-Q1數據表

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

    適用于漏極開路和推挽應用的4位雙向多電壓電平轉換LSF0204x數據表

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

    通過汽車認證的 LSF0204-Q1 4位自動雙向多電壓電平轉換器數據表

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

    適用于開漏和推挽應用的單通道自動雙向多電壓電平轉換LSF0101數據表

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

    適用于開漏和推挽應用的 8 通道自動雙向多電壓電平轉換LSF0108數據表

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

    適用于開漏和推挽應用的雙通道自動雙向多電壓電平轉換LSF0102數據表

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

    固體導熱系數測量應用案例 #導熱系數

    導熱系數
    南京大展檢測儀器
    發布于 :2024年04月25日 16:47:15

    FPGA實現原理

    FPGA(Field-Programmable Gate Array,現場可編程門陣列)是一種特殊的集成電路,其內部結構由大量的可配置邏輯塊和互連線組成。FPGA可以通過編程來實現各種數字系統功能
    發表于 01-26 10:03

    LSF系列引腳FMEA應用指南

    電子發燒友網站提供《LSF系列引腳FMEA應用指南.pdf》資料免費下載
    發表于 01-03 15:19 ?0次下載
    <b class='flag-5'>LSF</b>系列引腳FMEA應用指南

    ADC噪聲系數的重要性

    并不總是可以降低轉換器中的前端噪聲。   在嘗試了解級聯信號鏈的動態機制時,噪聲系數用起來是十分方便的。當源電阻增加4倍時,噪聲系數將提高6 dB,但是,增加的電阻同時會增加轉換器中
    發表于 12-19 06:18

    基于LPC2292數字自整角機轉換控制的研究

    電子發燒友網站提供《基于LPC2292數字自整角機轉換控制的研究.pdf》資料免費下載
    發表于 10-25 10:52 ?0次下載
    基于<b class='flag-5'>LPC</b>2292數字自整角機<b class='flag-5'>轉換</b>控制的研究

    基于AMD FPGA的PCIE DMA邏輯實現

    AMD FPGA自帶PCIE硬核,實現了PCIE協議,把串行數據轉換為并行的用戶數據
    的頭像 發表于 07-14 15:53 ?1105次閱讀
    基于AMD <b class='flag-5'>FPGA</b>的PCIE DMA邏輯<b class='flag-5'>實現</b>

    基于AMD FPGA的PCIE DMA邏輯實現

    AMD FPGA自帶PCIE硬核,實現了PCIE協議,把串行數據轉換為并行的用戶數據,以UltraScale系列FPGA為例,其支持Gen1.02.03.04.0,1~16 Lanes
    的頭像 發表于 06-09 09:34 ?1069次閱讀
    基于AMD <b class='flag-5'>FPGA</b>的PCIE DMA邏輯<b class='flag-5'>實現</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>