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