線性預(yù)測及其Matlab實現(xiàn)
3.1加窗和自相關(guān)函數(shù)計算
G.729語音編碼算法大多是用C語言編程實現(xiàn)的,程序顯得格外冗長,有一定的局限性。由于Matlab在數(shù)據(jù)分析、自動控制、數(shù)字信號處理、繪圖等方面具有強大的功能,為了直觀的表述,就運用Matlab來實現(xiàn)線性預(yù)測分析這一部分的算法。
圖1給出了混合窗的示意圖,它由兩部分構(gòu)成,前半部分是1/2個哈明窗;后半部分是1/4余弦函數(shù):
式中:有5 ms(40個樣點)來自下一幀,15 ms(120個樣點)來自上一幀,當(dāng)前幀10 ms(80個樣點)加窗過程如圖1所示。
得到加窗如圖2所示。
3.2LP系數(shù)的求取
求解線性預(yù)測濾波器系數(shù)ai,將使用到最經(jīng)典的Levinson-Durbin算法。該算法的步驟為:
上面各式中括號內(nèi)的上標表示預(yù)測器的除數(shù)。步驟(1)~(4)可對I=1,2,…,P進行遞推求解,其中:E為最小均方預(yù)測誤差;R為自相關(guān)系數(shù);k表示反射系數(shù),取值范圍為[-1,1];aij表示i階預(yù)測器的第j個系數(shù)。通過運算發(fā)現(xiàn),其實在計算過程中,雖然目標是計算一個p階線性預(yù)測器的全部系數(shù),但實際上在遞推過程中僅算出了所有除數(shù)低于p階線性預(yù)測器的全部系數(shù),同時計算出了最小預(yù)測誤差能量(遞推式中反射系數(shù)的取值范圍是保證系統(tǒng)H(z)穩(wěn)定性的充分必要條件,即多項式A(z)的全部根都落在單位圓內(nèi))。
從推導(dǎo)中得知,φn(j,i)的物理意義可以理解為sn的短時自相關(guān)函數(shù)。因此,它反映了語音波形的實際情況,即波形不同,值也不同。然而ai的取值由φn(j,i)決定,并隨φn(j,i)的改變而改變,因此也可以說ai反映了語音波形的實際情況。
其Matlab描述如下:
4結(jié)語
線性預(yù)測在語音處理方面的應(yīng)用很廣泛,而用Matlab來實現(xiàn)可以很直觀地知道分析結(jié)果,為下一步將算法在DSP上的實現(xiàn)奠定基礎(chǔ)。
評論