G.729語音編碼算法研究及基于DSP的實現(xiàn)
摘要:對G.729語音編解碼算法的原理進行了簡要分析,并提出了一種基于DSP芯片TMS320VC5510的語音編解碼算法的實現(xiàn)方法。針對算法特征及體系結(jié)構(gòu)的特點,提出了一些有效的優(yōu)化措施。實驗結(jié)果表明,運算復(fù)雜度大大降低,且在語音的編解碼壓縮過程中具有很好的重建效果。
本文引用地址:http://m.butianyuan.cn/article/171421.htm關(guān)鍵詞:TMS320VC5510;語音編解碼;G.729算法;優(yōu)化
1 G.729算法介紹
由于G.729的算法復(fù)雜度較高,ITU提出了G.729的簡化版本G.729A,作為G.729的附錄Annex A。后來為了進一步提高壓縮率,增加了G.729B,即G.729 AnnexB。在G.729B中,主要使用了VAD和CNG技術(shù),使得語音通信中的靜音部分進一步壓縮。
1.1 G.729A
1.1.1 G.729A編碼器
G.729A編碼器的框圖如圖1所示。G.729A編碼器由預(yù)處理、線性預(yù)測分析和量化內(nèi)插、知覺加權(quán)、基音分析、脈沖響應(yīng)的計算、目標信號的計算、自適應(yīng)碼本搜索、同定碼本結(jié)構(gòu)和搜索、增益量化以及參數(shù)編碼等模塊組成。
模擬語音信號經(jīng)過話路帶通濾波和8 kHz采樣之后,量化成16位的PCM信號進入編碼器,然后根據(jù)預(yù)處理后的輸入信號進行線性預(yù)測分析,得到線性預(yù)測系數(shù),即線性預(yù)測編碼LPC(Linear Prediction Code)信息,利用該系數(shù)即可構(gòu)造合成濾波器。激勵信號經(jīng)合成濾波器后生成重構(gòu)信號,與輸入信號相減后得到殘差信號。該殘差信號經(jīng)誤差加權(quán)濾波器處理,根據(jù)聽覺感受改變頻譜,反饋到控制回路,根據(jù)使加權(quán)殘差信號均方差最小的原則確定激勵信號及其增益。誤差加權(quán)濾波器也是根據(jù)預(yù)測分析所得的LPC信息構(gòu)造的。
基音分析模塊通過自相關(guān)分析推得基音周期,據(jù)此信息搜素自適應(yīng)碼本,確定最佳自適應(yīng)碼本矢量,得到語音中具有準周期特性的激勵;然后再搜素固定碼本,根據(jù)最小化加權(quán)均方差(Mcan Square Error,MSE)的準則確定最佳固定碼本矢量,得到語音模型的隨機激勵信號;最后再確定兩個碼本矢量的增益Gc和Gp,采用具有共勻框結(jié)構(gòu)的兩級碼書進行矢量量化。上述過程確定的線性預(yù)測編碼信息、自適應(yīng)碼本矢量、固定碼本矢量和矢量增益構(gòu)成完整的G.729聲碼器編碼器參數(shù)。所有這些參數(shù)均以碼本索引的形式發(fā)往接收端。
1.1.2 G.729A解碼器
G.729A解碼器結(jié)構(gòu)框圖如圖2所示。首先從接收到碼流中提取參數(shù)序號,解碼這些序號得10 ms語音幀對應(yīng)的編碼參數(shù)。這些參數(shù)是線譜對LSP參數(shù)、兩個分數(shù)基音延時、兩個固定碼本矢量與兩組自適應(yīng)和固定碼本增益、每子幀LSP參數(shù)被內(nèi)插并轉(zhuǎn)換為LP(Linear Prediction)濾波器系數(shù),然后以每5 ms子幀為單位合成語音,合成步驟如下:
①自適碼本應(yīng)和固定碼本分別乘以各自的增益加起來構(gòu)成激勵。
②激勵LP合成濾波器重構(gòu)語音。
③重構(gòu)語音信號經(jīng)過后置處理,包括長時后置濾波、短時合成濾波和高通濾波。最后輸出語音信號。
1.2 G.729B
G.729B是對G.729A的進一步優(yōu)化,其最主要的機制是靜音壓縮。靜音壓縮主要涉及兩個機制:VAD(Voice Activity Detection)和CNG(Comfort Noise Generation)。VAD主要是用于編碼器,用來決定當前幀是否靜音;而CNG則主要用于解碼器,產(chǎn)生讓人耳感覺舒服的噪聲。
1.2.1 VAD機制
VAD算法每隔10 ms做一次判決。首先,VAD會從輸入幀中提取參數(shù),這些參數(shù)包括全帶能量、低頻帶能量、過零率和某個頻域參數(shù)。在靜音段,這些參數(shù)的長時平均值隨著背景噪聲的性質(zhì)而發(fā)生改變。每進來一幀,就要計算當前幀的參數(shù)與其長時平均值的差。根據(jù)這些差值參數(shù),VAD可以得到初始的判決結(jié)果,最后對初始結(jié)果進行平滑,得到最終的判決結(jié)果。
1.2.2 CNG機制
舒適噪聲是用偽白噪聲激勵內(nèi)插后的LPC濾波器產(chǎn)生的,就跟解碼器對解碼后的激勵進行濾波產(chǎn)生活動話音一樣。激勵水平和LPC濾波器是從前一個SID信息中獲取的。子幀內(nèi)插LPC濾波器是用SID的LSP參數(shù)作為當前的LSP,然后和前一幀的LSP作內(nèi)插得到的,與活動幀一樣。偽白噪聲ex(n)是由跟活動話音同樣類型的激勵cx1(n)和高斯白噪聲激勵ex2(n)相加而產(chǎn)生的。G.729激勵ex1(n)是由一個小增益的自適應(yīng)激勵和ACELP固定激勵組成的,這改善了活動和非活動話音幀之間的跳變。白噪聲ex2(n)的引入是為了產(chǎn)生一個更接近于白噪聲的信號。在非活動話音期間,因為編碼端和解碼端需要保持同步,所以激勵在兩邊都要產(chǎn)生。
首先,我們定義目標激勵增益Gt為當前幀t合成激勵必須要達到的平均能量的平方根。Gt是用下面的平滑公式計算得到的,其中GSID是解碼后的SID增益。
每幀的80個樣本分成兩個長度為40個樣本的子幀。對于每一個子幀,CNG激勵樣本是用下面的算法合成的:
①從間隔[40,103]中隨機選擇一個基音延遲。
②根據(jù)G.729 ACELP碼結(jié)構(gòu)隨機選擇網(wǎng)格、脈沖符號和位置來構(gòu)建子幀的固定碼本矢量。
③計算單位增益的自適應(yīng)激勵信號,記作ea(n),n=0~39;選擇的子幀固定激勵被記作ef(n),n=0~39。
④與活動幀一樣,偽白噪聲ex(n)是由跟活動話音同樣類型的激勵ex1(n)和高斯白噪聲激勵ex2(n)相加而產(chǎn)生的。G.729激勵ex1(n)是由一個小增益的自適應(yīng)激勵和ACELP固定激勵組成的,這改善了活動和非活動話音幀之間的跳變。高斯白噪聲ex2(n)的引入是為了產(chǎn)生一個更接近于白噪聲的信號。在非活動話音期間,因為編碼端和解碼端需要保持同步,所以激勵在兩邊都要產(chǎn)生。
評論