中 原 大 學 電 機 工 程 學 系
碩士學位論文
CELP 編碼器之固定碼簿搜尋方法之研究
Study on Fixed-Codebook Search Method for CELP Coding
指導教授:王佳盈
研 究 生:曾睿弘
中 華 民 國 九 十 四 年 六 月
編 碼 器 之 固 定 碼 簿 搜 尋 方 法 之 研 究
曾 睿 弘
中 華 民 國 九 十 四 年 六
CELP
大 學 電 機 工 程 學 系
碩 士 學 位 論 文
摘要
隨著時代通訊的蓬勃發展,特別是網路和行動電話的普及,語音 壓縮技術必將得到更為廣泛的應用,語音壓縮技術的應用領域也不斷 擴大。目前在網路上常見的語音壓縮標準包括國際電信協會訂定的 G.729 和 G.723.1 語音編碼器,這兩者的編碼複雜度都很高。在這篇 論文中,我們將針對 G.729 的編碼方法做深入的探討,並提出一些簡 化計算量的方法。
在 G.729 的語音編碼計算過程中,固定碼簿的搜尋佔了很大的比 例,約有 21%之多,因此,我們希望在維持適度語音品質的前提下,
將這部分的計算量加以簡化。我們針對脈衝位置之搜尋方式加以改 善,使用預選-脈衝代換的搜尋方式,來替代 G.729 原本的焦點搜尋 法,使其搜尋迴圈數明顯降低,並將其簡化的計算複雜度及語音品質 與 G.729 做一系列的比較。根據模擬結果顯示,在語音品質幾乎維持 相同的狀況下,我們提出的預選-脈衝代換搜尋法,其計算量大約只 有焦點搜尋法的 8%左右,大幅降低了語音編碼器繁複的計算。
關鍵詞:G.729、語音編碼器、固定碼簿、焦點搜尋法。
Abstract
G.729 is an ITU-T speech coding standard which is popularly used in internet speech applications in recent years. However, the complexity of the speech coding is quite high. In this thesis, we try to reduce the coding complexity while maintaining the adequate speech quality.
In the encoding process of G.729, the complexity of fixed-codebook search occupies about 21% of whole encoding complexity. We focus on this part and propose a search method called pre-selected-pulses replacement method to replace the focused search method in G.729 to reduce the complexity for searching the pulse positions. The complexity of the proposed method is only about 8% of the focused search method.
After some simulations, we found the reproduced speech still maintain at almost the same quality.
Keyword : G.729、Speech coder、fixed-codebook、focused search
誌謝
首先感謝指導教授王佳盈老師在課業及研究上細心的指導,另外 在生活上的關懷以及在心靈上給予的啟發,讓我成長改變了很多,更 懂得以正確的心態面對眼前的困難,突破瓶頸而順利完成研究所的學 業及本論文,這些觀念將使我一生受益無窮,特以致上萬分的感謝。
感謝我摯愛的家人,在我求學旅程中,雖然經歷了不順遂,卻仍 全力的支持,給我最大的照顧與幫助,讓我可以無後顧之憂的專心於 課業,進而完成碩士學位。感謝我的女友曉明,這些年貼心的陪伴,
無論在我開心或失意的時候,都能隨時聆聽我的聲音,分享我的心 情,讓我的精神生活上有最好的寄託。
感謝研究室的學長姐美華、柏全、文偉、世璋、楙開及建孟,給 予許多指導與鼓勵。感謝同學威延,在我來到這個新環境時,給予許 多建議與協助,並與我一起討論課業,讓我可以盡快步上軌道。感謝 學弟榕哲與宗和,陪我聊天說笑,紓解課業上的壓力。
感謝所有關心我與我所關心的朋友們。感謝兩年來生命裡任何 一個令人懷念的時刻,讓我有永遠難忘的研究生生活。
目錄
摘要...Ⅰ Abstract...Ⅱ
誌謝...Ⅲ 目錄...Ⅳ 表目錄...Ⅶ 圖目錄...Ⅷ
第一章 緒論... 1
1.1 語音壓縮背景介紹...1
1.2 語音壓縮標準與應用...3
1.3 研究動機與目的...4
1.4 論文章節概要...5
第二章 G.729 語音編碼器...7
2.1 CELP 架構...8
2.2 G.729 架構簡介...11
2.3 語音訊號前置處理...13
2.4 線性預估分析與量化...14
2.4.1 漢明視窗與自相關係數計算...14
2.4.2 Levinson-Durbin 演算法...16
2.4.3 LSP 係數之轉換與量化...16
2.5 聽覺加權濾波器...18
2.6 基週分析...19
2.7 適應碼簿搜尋...20
2.7.1 目標訊號之計算...20
2.7.2 閉迴路搜尋...22
2.7.3 適應碼簿增益之計算...25
2.8 固定碼簿架構與搜尋...26
2.8.1 固定碼簿之架構...26
2.8.2 固定碼簿之搜尋方法...27
2.9 增益之量化...29
第三章 ACELP 碼簿之搜尋法...32
3.1 ACELP 碼簿搜尋概論...32
3.2 ACELP 碼簿基本搜尋法...38
3.2.1 焦點搜尋法...38
3.2.2 最深樹狀搜尋法...39
3.3 脈衝代換搜尋法...41
3.4 脈衝序列重置法...43
第四章 ACELP 碼簿脈衝位置之快速搜尋法...46
4.1 脈衝位置搜尋之簡化...46
4.1.1 不考慮自相關函數矩陣...46
4.1.2 脈衝代換搜尋法...49
4.1.3 脈衝序列重置法...50
4.2 預選-脈衝代換搜尋法...51
4.3 模擬結果與分析比較...54
第五章 結論與未來展望...60
References...62
作者簡介...65
表目錄
表 1-1 國際電信協會(ITU-T)制定一系列的語音壓縮標準...5
表 2-1 G.729 之位元分配表...13
表 2-2 G.729 固定碼簿之架構...26
表 3-1 G.729 之 ACELP 碼簿...33
表 3-2 G.723.1 之 ACELP 碼簿...33
表 3-3 分成 5 軌之 G.729A 碼簿...40
表 3-4 最深樹狀搜尋法之指定子集合...40
表 3-5 G.729 脈衝序列重置後之碼簿...45
表 3-6 脈衝序列重置之脈衝命中機率統計...45
表 4-1 各種脈衝搜尋法之計算迴圈數比較...57
表 4-2 各種脈衝搜尋法之語音品質比較...57
圖目錄
圖 2-1 CELP 分析模式之方塊圖...10
圖 2-2 CELP 合成模式之方塊圖...10
圖 2-3 G.729 編碼器架構圖...12
圖 2-4 G.729 解碼器架構圖...12
圖 2-5 LP 分析視窗取點示意圖...15
圖 2-6 聽覺加權濾波器的頻率響應...18
圖 2-7 適應碼簿目標訊號之求法...21
圖 2-8 適應碼簿目標訊號之等效求法...22
圖 2-9 G.729 適應碼簿目標訊號求法之等效模型...22
圖 2-10 固定碼簿目標訊號之求法...27
圖 2-11 一般碼簿誤差...31
圖 2-12 共軛碼簿誤差...31
圖 3-1 碼簿向量搜尋示意圖...35
圖 3-2 G.729 語音編碼器編碼端之計算量分布圖...37
圖 3-3 G.723.1 低率 5.3kbps 編碼器之編碼端計算量分布圖...37
圖 3-4 脈衝代換搜尋法流程圖...43
圖 4-1 不考慮自相關函數矩陣時之碼簿向量搜尋示意圖...47
圖 4-2 預選-脈衝代換搜尋法流程圖...54
圖 4-3 各種脈衝搜尋法編碼器之語音品質比較...58
圖 4-4 焦點搜尋法與預選-脈衝代換搜尋法之 SNR 比較...58
圖 4-5 焦點搜尋法與預選-脈衝代換搜尋法之 segSNR 比較...58
圖 4-6 預選-脈衝搜尋法編碼端計算量分布圖...59
第一章 緒論
語言為人類溝通的主要方式,在文字發明以前語言就是人類社會 中彼此聯繫,作為人與人之間訊息交流的媒體。近年來,由於科技日 新月異,電腦軟硬體技術之快速發展,多媒體通訊產品不斷推陳出 新,朝著數位化的方向發展,使得語音壓縮技術的需求愈趨明顯,越 來越多人投入語音技術的研究,包括語音編碼、語音合成和語音辨認 系統等,使得各種語音相關技術皆有長足的進步,語音壓縮技術也就 成為現代通訊技術的重要課題。
1.1 語音壓縮背景介紹
一般而言,人類可以發聲的範圍通常稱為語音。當我們想要說話 時,氣流由胸腔擠向喉部形成激發源,震動聲帶產生音波,音波再經 過口腔與鼻腔所構成的聲道產生共振而發岀聲音。語音壓縮得以實 現,正是因為聲帶週期性振動造成的長程相關性與音波在聲道共振造 成的短程相關性,可充分運用於消除語音中所含的多餘訊息。除了利 用相關性移除語音中多餘的訊息外,也考慮人耳對頻率分辨與響度察 覺的非線性聽覺感受,這是因為人耳是音質好壞的決定者。因此,語 音信號中含有與聽覺感知無關的資訊就可以刪除。
語音編碼器是數位語音傳輸和儲存系統的基礎技術。語音編碼的 目的,是為了進行資料壓縮。壓縮後的語音用於傳輸,可以節省傳輸 時所需的頻寬;壓縮後的語音用於儲存,可以節省記憶體中所佔的儲 存空間。因此,多年來一直有人致力於在保持重建語音品質的前提 下,提高壓縮效率的研究。
語音編碼的輸入語音是電話品質的語音,電話語音頻寬約為 200
~3500Hz 之間。在取得輸入語音之後,需要進行信號取樣,取樣率 的下限為此聲音最高頻率的兩倍,因此電話語音的取樣率為 8kHz。
取樣後的數位語音信號作量化處理,量化所用的位元數目決定其解析 度,目前常採用的量化解析度為 16 個位元。經過這一系列處理之後 的數位訊號再輸入語音編碼器中編碼。理想的語音編碼器,是希望位 元率降低,或是語音品質更好。
語音壓縮編碼技術最主要可以歸納為波形編碼、參數編碼與混合 編碼三類。第一類波形編碼是直接對個別的語音取樣值加以處理,使 其重建語音的波形能保持原始信號的波形,優點為系統架構簡單,解 碼後的合成音質佳,但所需的位元率偏高,介於 16kbps~64kbps 之 間,如 PCM 和 ADPCM 等。第二類參數編碼則利用簡化數學模型來 描述人類語音的發聲結構,並將語音訊號以音框為單位擷取少量的特
徵參數再編碼,優點為位元率可以大幅下降為 2.4kbps~4.8kbps 之 間,但系統結構變得較複雜且合成音質差,如 LPC 等。第三類混合 編碼則為較先進的語音壓縮技術,採用以合成作分析的編碼架構,綜 合了波形編碼的高音質與參數編碼的高壓縮率特色,如碼簿激發之線 性預估(CELP)[1] 和規律脈衝激發線性預估(RPLPC)等。
評量一種語音編碼器優劣的主要指標,包括語音品質(Quality)、
編碼速率(Bit Rate)、計算複雜度(Complexity)、編碼延遲(Coding Delay)等。評量一種語音編碼品質的方法包括主觀評量和客觀評量兩 種。主觀評量的方法為平均意見分數(Mean Opinion Score,MOS);
客 觀 評 量 的 方 法 為 使 用 訊 號 雜 訊 比 (SNR) 和 片 段 訊 號 雜 訊 比 (SegSNR)。
1.2 語音壓縮標準與應用
一般而言,語音壓縮有兩項主要的應用,一是用於空間領域的通 訊,由於廣播及電話服務的傳輸頻寬有限,將語音訊號壓縮可同時傳 送更多筆的語音資料;二是用於時間領域的保存,在既有的記憶體中 增長語音資料的儲存時間,由此衍生的產品有數位答錄機及語音信 箱。隨著通訊技術的蓬勃發展,使得行動通訊和網路電話越來越普
及,語音壓縮技術必將得到更廣泛的應用。
國際電信協會(ITU-T)訂定了一些語音壓縮標準如表 1-1。早期 的編碼技術以 PCM 為主,制定了位元率為 64kbps 的 G.711 標準[2]。
而語音編碼技術以低位元率為趨勢,遂又制定了使用 ADPCM 編碼技 術的 G.721 [3] 、G.726 [4] 標準。近年來由於網路電話技術的快速發 展,ITU-T 乃制定 G.723.1 [5] 及 G.729 [6] 標準。G.723.1 是一個雙位 元率的語音壓縮標準,分別為 6.3kbps 和 5.3kbps 的位元率,所使用 的編碼技術分別為 MP-MLQ 及 ACELP,可因應影像傳輸需求的不同 而選擇不同的位元率,目前被廣泛應用於視訊會議及網路電話產品 上。G.729 是以 8kbps 位元率,使用 CS-ACELP 架構的語音壓縮標準,
其延遲時間較 G.723.1 為短,因此 G.729 語音編碼器被接受採納的應 用越來越廣泛,如 VoIP 網路閘道、IP 電話、電話會議和視訊會議等。
1.3 研究動機與目的
在目前網際網路電話的通訊技術中,常使用 G.723.1 和 G.729 的 語音壓縮標準,但是不論 G.723.1 或 G.729 語音編碼器,它們的計算 複雜度都不低,為了方便一般處理器能夠負擔兩者的計算複雜度,因 此本論文提出改善方法並針對 G.729 語音編碼器以降低它的計算量。
表 1-1 國際電信協會(ITU-T)制定一系列的語音壓縮標準 標準編號 編碼方法 位元率(kbps)
G.711 PCM 64 G.721 ADPCM 32 G.722 SB-ADPCM 64/56/48 G.723 CELP 5.3/6.3 G.726 ADPCM 40/32/24/16 G.727 Embedded-ADPCM 40/32/24/16 G.728 LD-CELP 16
G.729 CS-ACELP 8
1.4 論文章節概要
本論文共分五個主要章節,各章節之概要說明如下:
第一章 緒論:介紹語音壓縮技術現況、語音壓縮標準與應用,以及 本論文主要研究方向之概述。
第二章 G.729 語音編碼器:介紹以 CELP 為架構之編碼器特徵,並 詳細說明 G.729 語音編碼器之架構。
第三章 ACELP 碼簿之搜尋法:說明 ACELP 碼簿搜尋之方法,並介 紹 ITU-T 制定之搜尋方式以及國內外學者之相關研究。
第四章 ACELP 碼簿脈衝位置之快速搜尋法:我們提出一種簡化的 ACELP 碼簿之脈衝搜尋方法,並以模擬方式比較各種搜尋 方法之計算量與語音品質。
第五章 結論與未來展望:此篇論文之總結與未來可能之相關研究。
第二章 G.729 語音編碼器
G.729 語音編碼器是由國際電信協會(ITU-T)所制定的 8kbps 低 位元率語音壓縮標準,以提供數位多媒體網路系統使用。此壓縮標準 採用 CS-ACELP(Conjugate-Structure Algebraic Code-Excited Linear- Prediction)的語音編碼架構,是以音框(Frame)或子音框(Subframe) 為單位來進行語音分析及壓縮編碼,音框長度為10ms(80 點),每一 個音框又可分為兩個子音框,一個子音框為5ms(40 點)。G.729 在固 定碼簿(Fixed-Codebook)激發訊號採用代數碼簿激發之線性預估編 碼(ACELP)架構,此架構不需額外記憶體空間,可節省系統成本,
且在搜尋適應碼簿(Adaptive-Codebook)和固定碼簿的時間低於傳統 CELP 的語音編碼,其中固定碼簿是以焦點搜尋法(Focused Search) 為搜尋方法。為了增加實用性,ITU-T 亦提出同樣為 8kbps 但計算複 雜度較低的 G.729A 精簡版本[7] ,其在固定碼簿的搜尋則採用最深 樹狀搜尋法(Depth-First Tree Search);為了提供多位元率的選擇性,
ITU-T 另外提出較高位元率 11.8kbps 的 G.729E [8] 及較低位元率 6.4kbps 的 G.729D 修正版本[9]。
G.729 語音編碼器是屬於 CELP 編碼技術的一種,它擁有波形編 碼及參數編碼的優點,以一個 10 階線性預測濾波器來表示語音訊號
的短程相關性(Short-Term),並以最小化誤差之以合成作分析編碼架 構來找出語音訊號長程相關性(Long-Term)的激發訊號。
本章將先介紹傳統的CELP 編碼技術,再對 G.729 語音編碼器做 詳細的系統架構說明。
2.1 CELP 架構
G.729 語音編碼器使用了 CELP 的架構,CELP 的編解碼架構如 圖 2-1 和 圖 2-2 所 示 。 CELP 是 典 型 的 「 以 合 成 做 分 析 」
(Analysis-By-Synthesis,ABS)的語音編碼器,其激發源是由隨機亂 數所組成的碼簿結構,利用每個碼字個別合成一段語音,然後在所有 合成語音中找尋與原來訊號最相近的合成語音,並將其相對應的碼字 索引記錄下來作為特徵參數。CELP 的特點是激發訊號是由碼簿產 生,因此可以得到相當低的位元率,一般是在8kbps 以下。美國國防 部在1990 年提出 4.8kbps 位元率設計規格的 FS-1016 的 CELP 編碼器 標準。CELP 架構主要可分為三大部分:第一部分是屬於短程相關性 濾波器,用來代表口腔特性,模擬聲道的共振;第二部分屬於長程相 關性濾波器,可描述聲帶的週期性振動;第三部分則是隨機碼簿激發 訊號(Excitation)的部分。
(a) 線性預估濾波器
取樣後的訊號先以一個音框的長度存在一個暫存區(Buffer)內。
我們對此音框的訊號作線性預估分析,得出線性預估係數,用以建立 線性預估合成濾波器。
1
1 1
( ) 1 P i i
i
A z a z−
=
=
−
∑
(2.1) (b) 週期合成濾波器將一個音框分割成若干個子音框,對每個子音框進行週期估算,
在數學上它是等於計算長程預估參數,用此參數可以建立一個週期合 成濾波器。D是估算出來的週期。
( )
1 1
( ) 1 I i D i
i I
P z b z− +
= −
=
−
∑
(2.2) (c) 隨機碼簿週期合成濾波器的輸入訊號,讓它隨機產生,我們以亂數產生器 來產生一序列的亂數,放在一個暫存器中。每次從暫存器中取出一段 亂數,用來產生週期合成濾波器的輸入訊號,經過週期合成濾波器 後,就可以得出激發訊號。這個暫存器中存放的亂數是固定的,因此
我們把它看作是一個固定碼簿。
圖 2-1 CELP 分析模式之方塊圖
圖 2-2 CELP 合成模式之方塊圖
2.2 G.729 架構簡介
G.729 語音編碼器的編碼端方塊圖如圖 2-3 所示,輸入訊號先通 過一個前置處理(Pre-Processing)的高通濾波器,而這個濾波之後的訊 號便讓每個方塊作分析。線性預估分析(LP Analysis)在每 10ms 的音 框都要進行分析以得岀線性預估係數,這些係數要轉換成線頻譜對 (Line Spectral Pair,LSP)係數,才作編碼與傳送。激發訊號是使用以 合成作分析的搜尋方法得到,它是讓合成語音與原來訊號之間的誤差 值經過加權(Perceptual Weighting)濾波器,得到最小的誤差值,記錄 其碼字索引而成為激發訊號的參數,這些包括適應碼簿(Adaptive Codebook)與固定碼簿(Fixed Codebook)的參數必須在每 5ms 的子音 框都作分析得出。
在編碼端分析岀的參數包括線性預估係數(LPC),基週參數 (Pitch Delay)及基週增益(Pitch Gain),代數碼簿激發訊號的位置 (Fixed Codebook Index)及增益(Fixed Codebook Gain)。其位元分配如 表2-1 所示。
G.729 語音編碼器的解碼端方塊圖如圖 2-4 所示,適應碼簿與固 定碼簿的向量分別乘上它們的增益值,相加得到激發訊號。將激發訊 號輸入合成濾波器來重建語音,短程合成濾波器是採用 10 階線性預
估濾波器,而週期性激發訊號則是由適應碼簿得出的長程合成濾波器 來重建語音訊號。
GC
GP
圖2-3 G.729 編碼器架構圖
GC
GP
圖2-4 G.729 解碼器架構圖
表2-1 G.729 之位元分配表
Parameter Codeword Subframe 1 Subframe 2 Total per frame
Line spectrum pairs L0,L1,L2,L3 18
Adaptive-codebook delay P1,P2 8 5 13
Pitch-delay parity P0 1 1
Fixed-codebook index C1,C2 13 13 26
Fixed-codebook sign S1,S2 4 4 8
Codebook gains (stage 1) GA1,GA2 3 3 6 Codebook gains (stage 2) GB1,GB2 4 4 8
Total 80
2.3 語音訊號前置處理
輸入G.729 的語音訊號為 16 bits PCM 之訊號,在進入編碼器之 前必須先經過一個前置處理的濾波器,它有兩個主要目的:
(a) 訊號振幅縮減:將輸入訊號除以二,在作定點運算時,使得溢位 的機率降低。
(b) 高通濾波器:使用一個截止頻率為 140 Hz 的二階濾波器,濾掉 不需要的低頻成分。
因此一個前置處理的高通濾波器可以設計為:
1 2
1 1 2
0.46363718 0.92724705 0.46363718
( ) 1 1.9059465 0.9114024
h
z z
H z
z z
− −
− −
− +
= − +
(2.3)2.4 線性預估分析與量化
G.729 的短程相關性分析與合成濾波器是使用一個 10 階線性預 估器,這個線性預估濾波器被定義為下式:
10 1
1 1
( ) 1 i i
i
A z a z−
=
=
+
∑
(2.4)其中 ,i=1,2,…,10,是線性預估係數,線性預估是對每一個音框都 作分析。
ai
2.4.1 漢明視窗與自相關係數計算
首先使用一個30ms(240 點)的漢明視窗(Hamming Window)將訊 號取出,取出的訊號如圖2-5 所示,包含過去音框的 120 點,現在音 框的80 點以及未來音框的 40 點。其中漢明視窗的函數式為:
0.54 0.46cos 2 0,...,199
399 2 ( 200)
cos 200,...,239
159
( )
n n
lp n
n
w n
π π
⎛ ⎞
− ⎜⎝ ⎟⎠ =
⎛ − ⎞ =
⎜ ⎟
⎝ ⎠
= ⎨ ⎧⎪
⎪⎩
(2.5)漢明視窗取出的語音訊號為:
s n′( )=w n s nlp( ) ( ) =n 0,..., 239 (2.6)
再利用下式求出自相關係數r k( ):
(2.7)
239
( ) ( ) ( ) 0,...,10
n k
r k s n s n k k
=
′ ′
=
∑
− =自相關係數必須作以下的調整:
(0) 1.0001 (0) (2.8)
( ) lag( ) ( )
r r
r k w k r k k
′ =
′ = = 1,...,10
其中 f 0 = 60 Hz, f s = 8000 Hz 時:
2
2 0
( ) exp 1 1,...,10
2
lag
s
w k f k k
f
⎡ ⎛ π ⎞ ⎤
⎢ ⎥
= − ⎜ ⎟ =
⎢ ⎝ ⎠ ⎥
⎣ ⎦ (2.9)
圖 2-5 LP 分析視窗取點示意圖
2.4.2 Levinson-Durbin 演算法
調整後的自相關係數會符合下式:
1
( ) ( ) 1,...,10
i i
a r i k r k k
10
=
′ − = − ′ =
∑
(2.10)之後使用Levinson-Durbin 演算法求出線性預估的係數:
[ ]
[ ]
[ ] [ ]
[ ]
[ ] [ ] [ ]
[ ]
( )
[ ]0
1 0
1 1 1
0
1 1
2 1
(0) 1 10
1
( ) /
1 1
1
i
i
i i
i j
j i
i i
i i i
j j i i j
i i
i
E r
for i to a
k a r i j E
a k
for j to i
a a k a
end
E k E
end
−
− − −
=
− −
−
−
= ′ = =
⎡ ⎤
= − ⎢ ′ − ⎥
⎣ ⎦
=
= − = +
= −
∑
最後可以得到線性預估係數aj, j=0,1,…,10, =1.0。 a0
2.4.3 LSP 係數之轉換與量化
當線性預估係數求出後,要先把這 10 個係數轉換成 LSP(Line Spectral Pair)係數以方便量化與低位元率的傳送資料。而 LSP 係數必
須轉換成LSF(Line Spectral Frequency),轉換公式為:
(2.11) cos ( )1 1,...,10
i i
w = − q =i
其中 為 LSP,而 為 LSF。一個四階的 MA 預估器用來預估 LSF 的係數,預測出與計算出的差值使用兩個階段的向量量化(Two-Stage Vector Quantizer)。量化過程分成兩個階段,先找出初量化 ,再將 剩下的誤差值做細量化,分別找出 及 。第一階段之向量量化先 使用一個用7 個位元來表示的 128 個 10 維向量碼簿 L1;第二階段之 向量量化則是使用兩個分別各為 5 個位元來表示的 32 個 5 維向量碼 簿L2 及 L3。量化後的數值如下所示:
qi wi
1 L 2
L L3
{
5L1 ( 1) L2 ( 2) 1,...,5 L1 ( 1) L3 ( 3) 6,...,10
ˆ
i ii i
L L i
i L L i
l
−+ = + =
=
(2.12)其中L1、L2、L3是碼簿的索引。
利用上一音框被解碼岀的10 個 LSP(qi(previous))及現在音框被解碼出的 LSP( ),然後以線性內插方式完成第一個子音框的LSP 係數,
第二個子音框則是使用現在音框所解碼出的LSP(
(current
qi )
(current)
qi ),其公式如 下:
( ) ( ) ( )
( ) ( )
1
2
1: 1,...,10
2 : 1,...,10
previous current
i i i
current
i i
subframe q q q i
subframe q q i
= 0.5 + 0.5 =
= = (2.13)
2.5 聽覺加權濾波器
因為人耳聽覺是在頻域中操作,所以我們在做合成語音與原來訊 號比對的過程中,使用了一個以頻域為考量的的聽覺加權(Perceptual Weighting),這個加權的演算可以寫成一個聽覺加權濾波器如下:
10
1 10
1
( ) 1
( ) 1
( / ) 1
i i i
i i
i i
A z a z W z A z
a z γ γ γ
−
=
−
=
+
= = 0 < <
+
∑
∑
(2.14)其中γ 的適當調整會使得加權濾波器更符合人耳聽覺上的感受。聽覺 加權濾波器的頻率響應如圖2-6 所示。
圖2-6 聽覺加權濾波器的頻率響應
當γ =1 時,(2.14)式的分子與分母一致,等於是沒有加權;若是 γ <1,
會呈現一個與原訊號頻譜反向的頻率響應,γ 越小就越明顯。它的加 權作用就是在能量大的頻率給予較低的加權值,因為能量大的頻率成 分,可以容忍較大的誤差,聽覺上比較感覺不出來。
2.6 基週分析
為了降低適應碼簿搜尋的複雜度,因此在基週的搜尋上,每個音 框先用開迴路基週分析(Open-Loop Pitch Search),將搜尋範圍先限制 在一個概略的基週延遲 ,再以此為中心來搜尋更精確的閉迴路基 週(Closed-Loop Pitch Search)。
Top
開迴路基週估算使用加權後的語音訊號 進行運算。人語音之基 週一般介於 20 至 143 之間,開迴路基週分成三段範圍(80~143、40
~79、20~39)去分析,並根據(2.16)式,在每一段範圍中分別找出 一個較大的值。
( ) sw n
79
0
( ) ( ) ( )
n
R k sw n sw n
=
=
∑
−k (2.15)( ) ( )2 1,..., 3
( )
i i
n i
R t R t i
sw n t
′ = =
∑
− (2.16)1
1
2
2
2
3
3
3
( ) ( )
( ) ( )
( ) ( )
( ) ( )
( ) ( )
op
op
op
op
op
op
op
op
T t
R T R t
if R t R T
其中三個範圍分別為
1 80,...,143 2 40,..., 79 3 20,..., 39 i
i i
= :
= :
= :
再利用下列條件從三個較大值中判斷一個最佳基週延遲:
R T R t
T t
end
if R t R T
R T R t
T t
end =
′ = ′
′ ≥ 0.85 ′
′ ′
= =
′ ≥ 0.85 ′
′ ′
= =
2
2.7 適應碼簿搜尋
2.7.1 目標訊號之計算
加權合成濾波器(Weighted Synthesis Filter)之脈衝響應(Impulse Response) 在適應碼簿及固定碼簿的搜尋中都必須使用到。其中加 權合成濾波器為:
( ) h n
ˆ 1 ˆ
( ) ( ) / ( ) ( / ) / ( ) ( / )
H z = W z A z = A z γ ⎡⎣A z A z γ ⎤⎦ (2.17)
為了適應碼簿的搜尋,在每一個子音框都必須求岀目標訊號(Target Signal),而目標訊號之求法即是將加權語音訊號 減去加權合成 濾波器之零輸入響應,如圖2-7 所示。
( ) sw n
另外一種G.729 語音編碼器所採用的目標訊號之等效求法,是將圖 2-7 的加權合成濾波器移到相減之後,如圖 2-8,若再將1/ ( )A zˆ 移到相減 之後,即為將線性預測後之剩餘訊號 灌過合成濾波器之脈衝響應
,求法如圖 2-9 所示。其中剩餘訊號 如下式:
( ) r n
w( )
h n r n( )
10
1
( ) ( ) ˆi ( ) 0,..., 39
i
r n s n a s n i n
=
= +
∑
− = (2.18)( ) ( ) / ( )ˆ H z = W z A z
圖 2-7 適應碼簿目標訊號之求法
1/ ( )A zˆ
圖 2-8 適應碼簿目標訊號之等效求法
1/ ( )A zˆ ˆ( )
A z
ˆ( ) A z 1/ ( )A zˆ
圖2-9 G.729 適應碼簿目標訊號求法之等效模型
2.7.2 閉迴路搜尋
閉迴路搜尋需要每一個子音框做一次。在適應性碼簿搜尋中,兩 個子音框中的搜尋方法一樣,但其搜尋範圍不同,其搜尋範圍皆以開 迴路搜尋中所找出的Top為依循而調整。
在第一個子音框中,分數基週延遲(Pitch delay) 在搜尋範圍為T1
1 2 19 , 84
3 3
⎡ ⎤
⎢⎣ ⎦⎥之中的解析度(Resolution)是 1/3,若在
[
85,143]
的搜尋範圍中,解析度則為整數。其搜尋範圍的最大值與最小值定義如下:
min
min min
max min max
max min max
3
20 20
6 143
143 6 t T
opif t then t
t t
if t then
t
t t
end
= −
< = = +
>
= = −
在第二個子音框中,分數基週延遲 的解析度全為 1/3,但其範圍只 在
T2
1
int( ) 52
T − 3和int( ) 42 2
T + 3之間。其搜尋範圍的最大值與最小值定義從 第一個子音框求得的 得岀: 1
min 1
min min
max min max
max min max
( 5
20 20
143 143 t int T if t then t
t t
if t then
t
t t
end
= ) −
< = = + 9
>
=
= − 9
T
開迴路基週搜尋的目的是要使原來語音訊號與合成訊號之間有最小 的均方加權誤差(Mean-square weighted error),也就是使下式最大:
39
0 39
0
( ) ( ) ( )
( ) ( )
k n
k k
n
x n y n R k
y n y n
=
=
= ∑
∑
(2.19)其 中 x n( ) 為 目 標 訊 號 , 為 過 去 激 發 訊 號 與 的 摺 積 (Convolution),即合成語音訊號如(2.20)式:
k( )
y n h n( )
( ) 1 1 ( ) ( ) 39,..., 0
k k
y n = y − ( − ) + −n u k h n =n (2.20)
搜尋範圍為 ,最大之 所對應之 即為週期。(2.19)式 所求岀的 為整數的週期,而小數部分的週期則需要利用(2.19)式之 通過漢明 函數(Hamming Windowed Sinc Function)做內插而 得:
min,..., max
k =t t R k( ) k
k
( )
R k Sinc
3 3
12 12
0 0
( )t ( ) ( 3 ) ( 1 ) (3 3 ) 0,1, 2
i i
R k R k i b t i R k i b t i t
= =
=
∑
− + +∑
+ + − + = (2.21)其中t=0,1,2 分別對應到小數部分的 0,1/3,2/3。
當週期被確定後,適應碼簿的向量 就可以利用過去的激發訊號做 內插而計算得出:
( ) v n
9 9
30 30
0 0
( ) ( ) ( 3 ) ( 1 ) (3 3 ) 0,1,2
i i
v n u n k i b t i u n k i b t i t
= =
=
∑
− + + +∑
− + + − + = (2.22)1 P
2 P
+
在位元數方面, 需要使用 8 個位元來編碼,而 需要 5 個位元來編 碼。碼簿週期索引 可編碼成:
T1 T2
{
3( ( 1) 19) 1 1 [19,...,85], [ 1,0,1]( ( 1) 85) 197 1 [86,...,143], 0
1
int Tint T frac if Tif T fracfracP
− + − = = −− + = =
=
(2.23)週期索引 可編碼成:
2 3( ( 2) min) 2
P = int T − t + frac (2.24)
2.7.3 適應碼簿增益之計算
適應碼簿的增益gp可由(2.25)式求得:
39 0 39
0
( ) ( ) ( ) ( ) 0
n
p p
n
x n y n
g bounded by g
y n y n
=
=
= ∑ ≤ ≤
∑ 1.2
(2.25)其中x n( )為目標訊號,而y n( )為v n( )和h n( )的摺積:
0
( ) n ( ) ( ) 0,..., 39
i
y n v i h n i n
=
=
∑
− = (2.26)2.8 固定碼簿架構與搜尋
2.8.1 固定碼簿之架構
固定碼簿是使用代數碼簿架構,在固定碼簿的搜尋是為了找出隨 機激發訊號,在每一個子音框都需要。在這個碼簿中,每個碼簿向量 都包含四根非零的脈衝 、 、 、 ,每根脈衝之振幅不是 1 就是-1,
分別以
i0 i1 i2 i3
s0、 、s1 s2、s3表示,其出現的相對位置為 、 、 、 , 其中 、 、 可能出現的位置有8 個,而 可能出現的位置有 16 個。
因此 、 、 之位置各需要 3 個位元來表示,而 的位置則需要 4 個位元來表示,加上
m0 m1 m2 m3
i0 i1 i2 i3
m0 m1 m2 m3
s0、 、s1 s2、s3各需要 1 個位元來表示,所以 每個子音框共需要 17 個位元來表示。G.729 的固定碼簿如表 2-2 所 示。
表2-2 G.729 固定碼簿之架構
Pulse Sign Positions
i0 s0: ± 1 m0: 0,5,10,15,20,25,30,35 i1 s1: ± 1 m1: 1,6,11,16,21,26,31,36 i2 s2: ± 1 m2: 2,7,12,17,22,27,32,37 i3 s3: ± 1 m3: 3,8,13,18,23,28,33,38 4,9,14,19,24,29,34,39
3
固定碼簿的碼簿向量是由一個 40 維的零向量,再放入四個搜尋到的 脈衝,並分別乘上它們的振幅大小而得,其式如下:
0 0 1 1 2 2 3
( ) ( ) ( ) ( ) ( )
c n = s
δ
n−m + sδ
n−m + sδ
n−m + sδ
n−m (2.27)2.8.2 固定碼簿之搜尋方法
固 定 碼 簿 的 目 標 訊 號 是 用 適 應 碼 簿 的 目 標 訊 號 減 掉 零 輸 入 (Zero-Input)通過短程參數濾波器及長程參數濾波器的合成信號而 得,如圖2-10 所示。
1/A zw( )
1/ ( )P z
圖2-10 固定碼簿目標訊號之求法
在開始固定碼簿搜尋之前還需要先算出Φ和d n( )。Φ為脈衝響應 之自相關函數(Autocorrelation Function)矩陣,其對稱矩陣元素為:
( ) h n
39
( , ) ( ) ( ) 0,..., 39 ,..., 39
n j
i j h n i h n j i j i
φ
=
=
∑
− − = = (2.28)( )
d n 為固定碼簿之目標訊號與脈衝響應的交相關函數(Correlation Function):
39
( ) ( ) ( ) 0,..., 39
i n
d n x i h i n n
=
=
∑
′ − = (2.29)如果 為第 個固定碼簿向量,則固定碼簿的搜尋即是使下式為最 大:
ck k
(
39)
22 0
( ) ( )
kk n
t
k k k
d n c n C
E c c
=
=Φ
∑
(2.30)固定碼簿激發訊號之搜尋佔了整個G.729 語音編碼器極大的計算量,
因此有許多的研究致力於此部分的計算量簡化[10-12]。最標準完整的 搜尋法為巢狀迴圈搜尋法(Nested-Loop Search),此方法雖然可獲得 最佳的固定碼簿向量,但是卻需要相當大的計算量。因此G.729 使用 了焦點搜尋法(Focused Search),卻仍然佔了整個編碼器很大的計算 量,所以一種精簡的版本 G.729A 使用了最深樹狀搜尋法(Depth-First Tree Search),有效的降低了計算量。然而我們仍然希望能夠在維持 重建語音品質的前提下,對固定碼簿激發訊號之搜尋進行計算量的簡 化以增加其效率。
2 2 2 2 2
t t t t t t
p c p c p c
E = x x+ g y y+ g z z− g x y− g x z− g g y z
因此我們在第三章和第四章會針對固定碼簿的激發訊號搜尋方法,做 一系列的比較分析,並且提出一種更為簡化的搜尋方式,降低了此部 分的計算複雜度。
2.9 增益之量化
適應碼簿增益(Gain of Adaptive Codebook)和固定碼簿增益(Gain of Fixed Codebook)是一起量化的,向量量化是用兩階段共軛架構 (Conjugate Structure)的碼簿,共軛架構碼簿的主要優點是有較好的抗 干擾能力[13]。適應碼簿增益和固定碼簿增益共以 7 個位元向量量 化,其增益碼簿的搜尋是在原來語音和重建語音之間找出最小的均方 加權誤差:
(2.31)
其中gp為適應碼簿增益, 是固定碼簿增益;gc x是適應碼簿的目標訊 號, 是(2.26)式的濾波適應碼簿向量,而 是固定碼簿向量和脈衝 響應的摺積:
y z
0
( ) n ( ) ( ) 0,..., 39
i
z n c i h n i n
=
=
∑
− = (2.32)gc
固定碼簿增益gc可以表示如下:
gc = γ ′ (2.33)
其中g′c是由過去固定碼簿能量所估測出的增益,γ 是相對應的因子。
而適應碼簿增益gp和因子γ 是用兩階共軛架構碼簿來做向量量化 的。第一階使用3 位元的二維碼簿 GA,第二階則是用 4 位元的二維 碼簿GB 來作量化。每個碼簿的第一個組成元素為量化的適應碼簿增 益gˆp,第二個組成元素為量化的固定碼簿增益因子γ。其中gˆp以下式 表示:
1 1
ˆp GA GB ( )
g = (GA) + GB (2.34)
而量化的固定碼簿增益則表示為:
2 2
ˆ
ˆc c c GA ( ) GB ( ))
g = g′
γ
= (g′ GA + GB (2.35)另外共軛架構是為了避免因向量誤差而產生極大的錯誤,如圖 2-11 所示。而在共軛結構中,如果有一子向量發生誤差,其產生的輸出向 量錯誤會較小,如圖2-12 所示。
圖2-11 一般碼簿誤差
圖2-12 共軛碼簿誤差
第三章 ACELP 碼簿之搜尋法
在 CELP 架構之中隨機碼簿的部分,目前已有很多方法來尋找此 隨機訊號。在 G.729、G.723.1 低率 5.3kbps,以及 GSM-EFR(Enhanced Full Rate)[14,15] 編碼器中都是使用 ACELP(Algebraic Code Excited LPC) 的碼簿方式;在 GSM-HR(Half Rate)[16] 編碼器中用的是 VSELP (Vector-Sum Excited LPC);在 G.723.1 高率 6.3kbps 編碼器中 用的是 MP-MLQ(Multi-Pulse Maximum Likelihood Quantization);另 外 在 MPEG4 編 碼 器 之 參 數 編 碼 [17] 中 用 的 則 是 VXC(Vector Excitation Coding)。
其中我們針對目前在網路多媒體上有高使用率的 G.729 語音編碼 器為主要研究。
3.1 ACELP 碼簿搜尋概論
G.729 語音編碼器固定碼簿使用的架構和 G.723.1 在低率使用的 隨機碼簿架構,都是使用 ACELP 方式,它們的 ACELP 碼簿結構分 別如表 3-1 和表 3-2 所示。
在 ACELP 編碼中,必須找出幾根脈衝組合來表示激發訊號,其中包
括了脈衝的位置和脈衝的振幅。而搜尋的方式即為使得隨機碼簿激發 訊號向量和剩餘訊號向量最為接近,即是取均方誤差最小的值,也就 是使下式最大化:
(
39)
22
0
( )
k( )
k n
t
k k k
d n c n C
E c c
=
=Φ
∑
(3.1)表 3-1 G.729 之 ACELP 碼簿
Pulse Sign Positions
i 0 s0: ± 1 m : 0,5,10,15,20,25,30,35 0 i1 s : 1 ± 1 m : 1,6,11,16,21,26,31,36 1 i 2 s2: ± 1 m : 2,7,12,17,22,27,32,37 2 i 3 s3: ± 1 m : 3,8,13,18,23,28,33,38 3 4,9,14,19,24,29,34,39
表 3-2 G.723.1 之 ACELP 碼簿
Pulse Sign Positions
i 0 s0: ± 1 m : 0,8,16,24,32,40,48,56 0 i1 s : 1 ± 1 m : 2,10,18,26,34,42,50,58 1 i 2 s2: ± 1 m : 4,12,20,28,36,44,52,(60) 2 i 3 s3: ± 1 m : 6,14,22,30,38,46,54,(62) 3
3
其中c nk( )為第 個固定碼簿向量,是以 4 根脈衝組合所表示: k
0 1 2
( ) ( ) ( ) ( ) ( )
ck n =
δ
n−m +δ
n− m +δ
n−m +δ
n−m (3.2)Φ為脈衝響應h n( )之自相關函數矩陣,其對稱矩陣元素為:
39
( , ) ( ) ( ) 0, ..., 39 , ..., 39
n j
i j h n i h n j i j i
φ
=
=
∑
− − = = (3.3)( )
d n 為固定碼簿之目標訊號與脈衝響應的交相關函數:
39
( ) ( ) ( ) 0,..., 39
i n
d n x i h i n n
=
=
∑
′ − = (3.4)若將自相關函數矩陣 與交相關函數 代入(3.1)式,則(3.1)會如 (3.5)式:
Φ d n( )
(
390 0)
239
0 0 0
( ) ( ) ( )
( ) ( ) ( ) ( )
i
i n k
n n
k k
n i j
c n h i n x i
c i h n i c j h n j
= =
= = =
⎡ − ⎤ ′
⎣ ⎦
⋅ −
∑ ∑
∑ ∑ ∑
−i
(3.5)
令 i 0 k( ) ( )
n= c n h i− = n y
∑
,(3.5)可變為下式:(
390)
239 0
i i i
n n
n
y x y y
=
=
∑
′∑
(3.6)又可成為內積形式:
2 2 2 2
2
i, i i i
i i
y x
2
x y cos
y y
′ ′ θ
= (3.7)
於是求得(3.1)最大值即為最大化(3.7)式,其中(3.1)分母部分的自相 關函數矩陣之目的為正規化處理,使得(3.7)式分子與分母的 yi 2可以 約掉,(3.7)式只剩 xi′2cos2θ ,其中目標訊號絕對值平方 x′i 2為定值,
因此最大化(3.1)式的物理意義為使得目標訊號x′i與碼簿向量 之夾 角
yi
θ 越小越好,即為使cos2θ最大化,如圖 3-1 所示。
y
ix′
iθ
圖 3-1 碼簿向量搜尋示意圖
對一組碼簿向量而言,(3.1)式分子交相關函數部分為:
3
0
( )
i i
i
C s d m
=
=
∑
(3.8))
其中 是第i個脈衝的位置, 則是第i個脈衝的振幅大小。而(3.1) 式分母部分為:
mi si
3 2 3
0 0 1
( i, i) 2 i j ( i, j
i i j i
E
φ
m m s s m m= = = +
=
∑
+∑ ∑ φ
Φ
(3.9)
不論在 G.729 或在 G.723.1 語音編碼器中,固定碼簿的搜尋都要 使用極大的計算量,增加了編碼器的計算複雜度,因此有必要對這個 部分進行計算量的簡化以加速整個編碼器的編碼效率。圖 3-2 和圖 3-3 分別為 G.729 和 G.723.1 低率部分之編碼端的計算量分布圖,可看出 在固定碼簿搜尋佔了很大的計算量,其中在 G.729 的部分就約佔了 21%之多。在這 21%的計算量之中,脈衝位置搜尋就佔了 75%,其餘 的 25%則是在進入搜尋迴圈前就需要計算岀,主要為交相關函數 和自相關函數矩陣 。因此在國內外許多研究上都以此作為降低編碼 器計算複雜度的重要課題。我們參考許多相關研究資料,在本章中將 先說明關於 ITU-T 所制定各種語音編碼器的固定碼簿搜尋方法,並介 紹國內外的部分研究方法,在下一章中將再融合這些方法之其中原 理,加以改良研究,在盡量維持重建語音品質的前提下,能有顯著的 計算量簡化。
( ) d n
圖 3-2 G.729 語音編碼器編碼端之計算量分布圖
圖 3-3 G.723.1 低率 5.3kbps 編碼器之編碼端計算量分布圖
3.2 ACELP 碼簿基本搜尋法
在 搜 尋 ACELP 碼 簿 脈 衝 位 置 的 部 分 , 巢 狀 迴 圈 搜 尋 法 (Nested-Loop Search)是最完整標準的搜尋方式,它可以將所有的可 能性都搜尋過一次,從中選出能夠合成最好語音的一組碼簿向量,可 以說是最佳向量。以 G.729 語音編碼器來說,每個子音框共需要 8×8×8×16=8192 個搜尋迴圈;以 G.723.1 低率 5.3kbps 編碼器來說,
則需要 8×8×7×7×2=6272 個搜尋迴圈。因此巢狀迴圈搜尋法雖然可以 得到最佳的一組碼簿向量,但是所需要的計算量卻相當大,因此 ITU-T 制定了以下的搜尋標準。
3.2.1 焦點搜尋法
焦點搜尋法(Focused Search)是 G.729 語音編碼器固定碼簿使用 的脈衝搜尋方法[6],是根據巢狀迴圈搜尋法而來的。它需要先找出
一個臨界值,當前三個迴圈的之d m( i)絕對值相加(
2
0
( i)
i
C d m
=
=
∑
)超過這個臨界值時,才會進入最後一個迴圈搜尋。臨界值的算法為:
3 3 3( 3
thr = av + K max − av3) (3.10)
其中max3為前三軌之最大 d m( i) 相加,av3則為前三軌中每一軌之平均
( i)
d m 相加,K3的值介於 0 到 1 之間,在 G.729 編碼器中K3的值為 0.4。
如果前三根脈衝之 d m( i) 的和小於 3,那麼這組脈衝可能不是適當之 組合,於是就不需要進入第四個迴圈中尋找第四根脈衝,以節省計算 量。焦點搜尋法還有一個機制節省計算量,就是限制進入最後一個軌 跡(Track) 搜尋的次數,在 G.729 中一個音框最多可以進入 的次 數為 180 次,而其中第一個子音框較第二個子音框重要,所以第一個 子音框最多可進入 105 次,若不足 105 次,則剩餘的次數加上 75 次,
就是第二個子音框最多可進入 的次數。平均一個子音框最多可進入 90 次,所以在 G.729 編碼器中每個子音框最多可有 90×16=1440 個搜 尋迴圈。
thr
m3 m3
m3
3.2.2 最深樹狀搜尋法
ITU-T 制定的另一個較 G.729 為簡單的語音編碼標準為 G.729A [7],它的固定碼簿是以最深樹狀搜尋法(Depth-First Tree Search)為搜 尋方式,比焦點搜尋法可以節省更多的計算量。以 G.729A 編碼器來 說,首先將碼簿分成五軌T T T T T0, ,1 2, 3, 4,如表 3-3 所示。
搜尋方式如表 3-4 所示,將搜尋分成兩個子集合進行,搜尋機制如下 所述:
在第一指定(First Assignment)中,首先在 中找出兩個最大T2 d m( i) , 這兩個對應的脈衝位置再與 之 8 根脈衝位置一一做組合,代入(3.1) 式求岀最大值,因此第一階段就有 2×8=16 種組合。當( , )搜尋出 最佳位置後,接著第二階段則是要找出( , ),所以第二階段共有 8×8=64 種組合,因此兩階段共有 16+64=80 種組合。之後再使用 替 代 重複上述的步驟,所以第一指定所需的計算組合總共有 80×2=160 種。
T3
i2 i3
i0 i1
T4
T3
表 3-3 分成 5 軌之 G.729A 碼簿
Track Positions T0 m : 0,5,10,15,20,25,30,35 0
T 1 m : 1,6,11,16,21,26,31,36 1
T2 m : 2,7,12,17,22,27,32,37 2 T3 m : 3,8,13,18,23,28,33,38 3 T4 m : 4,9,14,19,24,29,34,39 4
表 3-4 最深樹狀搜尋法之指定子集合 First assignment
i 2 T2 Subset 1
i 3 T3 or T4 i 0 T0 Subset 2
i1 T 1
First assignment i 3 T3 or T4 Subset 1
i 0 T0 i1 T 1 Subset 2
i 2 T2
在第二指定(Second Assignment)中,步驟與第一指定相同,同樣有 160 種組合,因此 G.729A 編碼器之最深樹狀搜尋法總共需要 320 個 脈衝搜尋迴圈。
3.3 脈衝代換搜尋法
本節所介紹的是國外學者做過的研究[10],對於 ACELP 碼簿中 脈衝位置搜尋之簡化有很大的幫助,此篇研究是利用一種脈衝代換程 序(Pulse Replacement Procedure)的概念所完成。因為使用巢狀搜尋法 去找出最佳碼簿向量(Optimal Codevector),會耗費許多計算量,因此 包括焦點搜尋法或最深樹狀搜尋法,都是找出次佳碼簿向量的搜尋 法,而盡可能的維持重建後的語音品質。所以在脈衝代換搜尋法中,
使用的觀念即是先找出一組初始向量(Initial Vector),此初始向量可 能是用很粗略的搜尋過程得到,因此也是一組非最佳向量。然後將其 中一根脈衝用其他可能位置代換後,若能得到更好的語音品質,則這 組新的碼簿向量就更接近最佳向量,經過幾次的代換後,就可以更加 逼近最佳向量。由於每次代換過程只替換一根脈衝,因此計算量會被 壓低許多,其搜尋詳細流程如圖 3-4,詳細敘述如下:
(a) 找出初始向量:可用簡單的搜尋方法得出,也可找出多組初始 向量,在搜尋過程結束前再選定最好的一組代換結果。
(b) 計算脈衝貢獻:初始向量找到後,必須計算每根脈衝的貢獻度 (Pulse Contribution)。假設現在有一個碼簿向量由 4 根脈衝
0, 1, 2, 3
p p p p 組 合 而 成 , 則 每 次 保 留 3 根 脈 衝 , 例 如 保 留
0, 1, 2
p p p ,將剩下的脈衝位置 p3以 0 代入,計算(3.1)式,一組 初始向量共須計算 4 次,其中得出(3.1)式的最大值,其以 0 代 換的脈衝即為貢獻度最小者,也就是最不重要的一根脈衝,因 此予以代換。
(c) 搜尋新的脈衝位置:當找出貢獻度最小的一根脈衝後,我們將 這根脈衝其他可能的位置一一分別與保留的三根脈衝組合,代 入 (3.1)式計算,得出最大值的即為更加接近最佳向量之新的 脈衝位置。若找出的脈衝位置與代換前脈衝位置不同,則重複 (b)與(c)步驟;若找出的脈衝位置與代換前相同,則此組向量 即為最後結果,就結束搜尋。
脈衝代換搜尋法的計算迴圈數如下式:
{
( )C× L+ P+T ×N
}
(3.11)其中C為初始向量的數目, 為初始向量的搜尋次數, 為一組碼簿 向量中脈衝的數目,T 為一個軌跡(Track)上脈衝的數目, 為脈衝 代換的次數。
L P
N
圖 3-4 脈衝代換搜尋法流程圖
3.4 脈衝序列重置法
此脈衝序列重置(Reorder Pulse Sequence)概念也是來自國外學