• 沒有找到結果。

脈衝位置搜尋之簡化

第四章 ACELP 碼簿脈衝位置之快速搜尋法

4.1 脈衝位置搜尋之簡化

其中交相關函數d n( )和自相關函數矩陣Φ是在進行搜尋前就要先計 算出來的。我們曾在 3.1 節中討論過最大化(4.1)式之物理意義,為使 碼簿向量與目標訊號越接近越好,即它們之間的夾角越小越好,在此 我們將討論不考慮(4.1)式分母自相關函數矩陣的情況。在 3.1 節的討 論中,我們曾說明最大化(4.1)式即為最大化下式:

2 2 2

2

i i

i

x y cos y

θ

′ (4.2)

其中x′i為目標訊號, 代表碼簿向量。如果我們不考慮分母部分,則 只剩下分子的部分:

yi

2 2 2

i i

xy cos θ (4.3)

其中 y cosi θ 為 在yi x′i 上的投影,如圖 4-1 所示。而 x′i 2為定值,於是 不考慮分母之自相關函數矩陣時,除了考慮目標訊號與碼簿向量之間 的夾角θ 外,還必須考量 yi 大小,即是最大化 y cosi θ,其計算雖不甚 準確,但仍有其代表意義。

yi

x ′i

θ

y cos

i

θ

圖 4-1 不考慮自相關函數矩陣時之碼簿向量搜尋示意圖

)

因此如果搜尋時不考慮(4.1)式之分母部分,則就只需要最大化分子 部分如(4.4)式:

(

39n=0d n c n( ) ( )k 2 (4.4) 而最大化上式即相同於最大化下式:

(4.5)

3 2

0

( )i

i

d m

=

⎛ ⎞

⎜⎝

其中 為每一軌的脈衝位置。為了搜尋過程的方便,在程式設計中,

我們將 的計算分為絕對值大小與正負號兩方面處理:

mi

( ) d n

[ ] [ ]

( ) ( ) ( )

d n = abs d n sign d n (4.6)

當我們最大化(4.5)式時,由於此式中的 皆為絕對值,故平方部 分就不需考慮,因此只需最大化下式即可:

( )i d m

3

0

( i)

i

d m

= (4.7)

由此可見,若不考慮(4.1)式分母自相關函數矩陣Φ的部份時,即是 尋找每一軌跡之 最大值之脈衝位置。不僅可以省掉 的計算 量,也可以省略一些乘法的繁複計算,故可節省的計算量是很可觀的。

( )i

d m Φ

}

不過我們在此要探討上個章節所介紹的方法時,我們還是以完整 的(4.1)式來作搜尋,並與原本之焦點搜尋法作比較。接下來我們就 以G.729 語音編碼器為標準,來實際模擬上一章所介紹的脈衝代換搜 尋法以及脈衝序列重置法。

4.1.2 脈衝代換搜尋法

此方法在3.3 節的介紹中有三個主要步驟。其計算迴圈數之公式 為:

{

( )

C× L+ P+T ×N (4.8)

其中C為初始向量的數目, 為初始向量的搜尋次數, 為一組碼簿 向量中脈衝的數目,T 為一個軌跡(Track)上脈衝的數目, 為脈衝 代換的次數。

L P

N

其中第一個步驟為搜尋初始向量,我們使用簡易的搜尋方式如 3.4 節使用的單一脈衝代入(4.1)式搜尋的方法,求出每一軌中使得 (4.1)式為最大的脈衝位置,因為最大值的脈衝位置有 65% 左右的命 中率如表 3-6,而在脈衝代換搜尋法中只需粗略找出初始向量,所以 我們便將求岀的這4 軌脈衝位置當做初始向量。因為 G.729 中一個子

音框有40 個點,所以需要的計算迴圈數 =40。在模擬中我們只取 1 組初始向量,C=1。

L

第二個步驟是計算脈衝貢獻,其中一組碼簿向量中有4 個脈衝,

故 =4。第三個步驟則為搜尋新的脈衝位置,其中搜尋的次數為一個 軌跡上脈衝的數目,故在最差的狀況下T必須搜尋的是第 4 軌的脈 衝,也就是必須搜尋T=16 次。而我們代換的次數取兩次, =2。故 總計算迴圈數有

P

N

{ }

1 40× + (4 16) 2+ × =80次,計算迴圈數從原本的焦點搜 尋法之1440 次大幅下降到 80 次,有相當可觀的計算量簡化,至於語 音品質的比較將在後面章節介紹。

4.1.3 脈衝序列重置法

在3.4 節討論的這個方法,是將脈衝位置根據單一脈衝得岀的結 果作序列重置的工作,然後預選命中率高達 95% 的每一軌跡前 4 個 脈衝作搜尋。

如 果 以 預 選 前 4 區 加 上 巢 狀 搜 尋 法 , 需 要 的 計 算 量 為 4×4×4×8=512 次迴圈數,其計算量還是有點繁複,於是在脈衝位置重 置的預選前4 區後,還是要加上一種較為簡單方便的搜尋方式,才能 有效的降低其計算量。

相關文件