張 俏,楊 驍,湯 煒
(華僑大學 信息科學與工程學院,福建 廈門 361021)
線性預測法(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轉換運算推導,并給出了算法的實現步驟。
本文針對LPC系數計算LSF系數的Chebyshev多項式求解法進行研究:
P階線性預測濾波器函數為:

{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±jωi,設 Q(z)的 零 點 為 e±jθi,則滿足:0<ω1<θ1<…ωp/1<θp/1<π。為計算方便,去掉與LSF系數無關的實根,得到兩個新的多項式P′(z)和 Q′(z),當 p 為偶數時:


cosωi,cosθi,i=1,2,…,p,是余弦域的表示,ωi和 θi為P(z)和 Q(z)的第 i個零點,其中 ωi和 θi是成對出現的,反應信號的頻譜特性,稱之為“線譜對”,即要求的LSF參數。LSF系數可由切比雪夫多項式估計并在余弦域得到。可把 P′(z)和 Q′(z)寫為:




Chebyshev多項式求解法本質是求解x滿足區間[-1,1],求(x)=0 和(x)=0 的根{xi},對應的 LSF 系數由ωi=arccosxi確定。
在語音解碼過程中,需要把量化和內插后的LSF系數轉換回 LPC系數{ai}i=1,2,…,p,逆向推導,已知內插的 LSP 系數 fi,根據 fi可計算出 P′(z)和 Q′(z)的系數 p′i和 q′i。


其中 f2i-1=cosω2i-1,求出 p′i和 q′i。 根據原來方程式對應關系:


最后得到 LPC 系數可由 A(z)+P(z)+Q(z)/2 得到參數ai。
量化和內插后的LSP系數需要更換成LPC系數ai。已知量化和內插的 LSP 系數 qi,i=0,1,…,p-1,根據前文推導,可以得到下面迭代公式:

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

最后得到LPC系數:

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初始化數據文件格式)。
[1]蘇新寧.數據倉庫和數據挖掘[M].北京:清華大學出版社,2006.
[2]蔣盛益.數據挖掘原理與實踐[M].北京:電子工業出版社,2011.
[3]羅雨滋,趙鵬起.改進的ID3算法在學生綜合技能評估中的應用研究[J].佳木斯:佳木斯大學學報,2013(4):80-82.