g729原始碼分析 3 基音週期搜尋 上

2021-06-05 17:28:06 字數 1262 閱讀 6446

基音週期搜尋,是自適應碼本搜尋的乙個重要依據,

自適應碼本的搜尋就是在基音週期附近進行的.

和g723的基音週期搜尋不同,g729的基音週期搜尋搜尋也更為精細

g729把基音週期的搜尋分成3段,取了每一段中自相關的極值,

三段區間分別為[20,39] [40,79] [80,143]

這三個區間的權值是不一樣的,以0.85遞減

這個選取歸規則可以從itu的文件裡看出來,選出基音週期的值較小.

避免選則了基音週期的倍數

另外,itu的基音週期較短的情況下,基音週期的搜尋會精細的分數級

這裡就涉及到一些公升抽樣的演算法,在一些處理上,itu也採用了一些取巧

的做法,這裡就分數基音週期的情況做一些分析

首先搜尋出整數的基音週期,方法上面已經講述了

//lsc 開環基音搜尋,分成三個區間搜尋,不一定會取最大的,而是盡量取基音週期小的,比例閥值大約為0.85

t_op = pitch_ol(wsp, pit_min, pit_max, l_frame);

然後是在整數基音週期附近,搜尋分數基音週期,解析度為1/3

先來回顧一來如何進行公升抽樣的.

我們先來回顧一些訊號處理裡面的調製與抽樣的一些性質.

在離散的抽樣處理,實際上是用乙個等間隔的單位訊號與被抽樣的訊號進行乘積(這點很容易理解)

即,設 x[n]是原始離散訊號 對它進行每隔3個點一次抽樣,抽樣的訊號可以表示為

y[n]=x[n]*t[n], 其中t[n]=1當n%3==0

再從頻域角度來看y(e^jw) x(e^jw) t(e^jw) 我們知道時域上的乘積對應頻域的卷積(這個奧本海姆的訊號與系統中有詳細推導)

可以證明t(e^jw)在頻域上也是一系列的衝激串組合

y(e^jw)實際是x(e^jw)在頻域上覆制n份.如果抽樣滿足夏農定理,即只要對y[n]進行低通濾波,就可以完全是從y[n]中恢復x[n]

即所謂的公升抽樣.

當然在g729中不用考慮滿不滿足夏農定量,我們要做的就是公升抽樣,而且很顯然,我們需要的濾波器在頻域上就是乙個矩形.

它的傅利葉級就是sinc函式(奧氏的訊號與系統有詳細推導)

於是我們就在g729中看到了相應的公升抽樣**,就是將時域的離散訊號(原始語音抽樣或者相關)與sinc的值(定義在乙個陣列inter_3)

相乘,就完成了公升抽樣,然後進行分數級別的基音週期搜尋.

很晚了,困了

筆者將在下章結合**對分數基音週期再做進一步的說明.

祝各位程式設計愉快!

林紹川2012.4.11於杭州

g729原始碼分析 4 基音週期搜尋 中

上一節對分數基音週期搜尋作了文字說明,筆者畫了幾幅圖,對分數基音週期搜尋裡的公升抽樣進一步說明 圖1 表示乙個帶限的離散時間訊號的傅利葉變換,它必然是以2 pi為週期的函式.圖2 當我們用 t n 1當n 3 0 對語音頻號進行抽樣時,t n 的頻譜圖如圖2所示,圖3 圖1與圖2的卷積,因為t n ...

g729原始碼分析 9 g729 解碼

現在來分析g729的解碼.從g729的測試 看出來,解碼的過程被清晰地分成了兩個部分.第一部分,就解碼出lpc 係數與激勵,合成語音.第二部分,進行感加權,傾斜補償 這些與g723的處理是極其類似的,少了靜音壓縮,這樣就少了一大塊要分析的 了 先來看第一部分,也就是合成語音的部分 decod ld8...

g729原始碼分析 7 增益量化

現在來分析g729的增益量化,這裡包含兩個增益,乙個是自適應碼本的增益gp,乙個是固定碼本的增益gc 由於自適應碼本與固定碼本已經被搜尋出來了,就可以根據這兩級碼本,與反量化的az係數進行卷積,得到解碼的語音頻號 包含未知變數gc與gp 利用這個解碼的語音頻號與目標語音頻號方差最小為準則,在增益碼本...