新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > G.729語音編碼算法研究及基于DSP的實現(xiàn)

G.729語音編碼算法研究及基于DSP的實現(xiàn)

作者: 時間:2012-05-23 來源:網(wǎng)絡(luò) 收藏

摘要:對G.729編解碼的原理進(jìn)行了簡要分析,并提出了一種芯片TMS320VC5510的編解碼方法。針對特征及體系結(jié)構(gòu)的特點,提出了一些有效的優(yōu)化措施。實驗結(jié)果表明,運算復(fù)雜度大大降低,且在的編解碼壓縮過程中具有很好的重建效果。

本文引用地址:http://www.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。后來為了進(jìn)一步提高壓縮率,增加了G.729B,即G.729 AnnexB。在G.729B中,主要使用了VAD和CNG技術(shù),使得語音通信中的靜音部分進(jìn)一步壓縮。

1.1 G.729A

1.1.1 G.729A

G.729A器的框圖如圖1所示。G.729A器由預(yù)處理、線性預(yù)測分析和量化內(nèi)插、知覺加權(quán)、基音分析、脈沖響應(yīng)的計算、目標(biāo)信號的計算、自適應(yīng)碼本搜索、同定碼本結(jié)構(gòu)和搜索、增益量化以及參數(shù)編碼等模塊組成。

a.JPG

模擬語音信號經(jīng)過話路帶通濾波和8 kHz采樣之后,量化成16位的PCM信號進(jìn)入編碼器,然后根據(jù)預(yù)處理后的輸入信號進(jìn)行線性預(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)碼本矢量,得到語音中具有準(zhǔn)周期特性的激勵;然后再搜素固定碼本,根據(jù)最小化加權(quán)均方差(Mcan Square Error,MSE)的準(zhǔn)則確定最佳固定碼本矢量,得到語音模型的隨機(jī)激勵信號;最后再確定兩個碼本矢量的增益Gc和Gp,采用具有共勻框結(jié)構(gòu)的兩級碼書進(jìn)行矢量量化。上述過程確定的線性預(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ù)、兩個分?jǐn)?shù)基音延時、兩個固定碼本矢量與兩組自適應(yīng)和固定碼本增益、每子幀LSP參數(shù)被內(nèi)插并轉(zhuǎn)換為LP(Linear Prediction)濾波器系數(shù),然后以每5 ms子幀為單位合成語音,合成步驟如下:

b.JPG

①自適碼本應(yīng)和固定碼本分別乘以各自的增益加起來構(gòu)成激勵。

②激勵LP合成濾波器重構(gòu)語音。

③重構(gòu)語音信號經(jīng)過后置處理,包括長時后置濾波、短時合成濾波和高通濾波。最后輸出語音信號。

1.2 G.729B

G.729B是對G.729A的進(jìn)一步優(yōu)化,其最主要的機(jī)制是靜音壓縮。靜音壓縮主要涉及兩個機(jī)制:VAD(Voice Activity Detection)和CNG(Comfort Noise Generation)。VAD主要是用于編碼器,用來決定當(dāng)前幀是否靜音;而CNG則主要用于解碼器,產(chǎn)生讓人耳感覺舒服的噪聲。

1.2.1 VAD機(jī)制

VAD算法每隔10 ms做一次判決。首先,VAD會從輸入幀中提取參數(shù),這些參數(shù)包括全帶能量、低頻帶能量、過零率和某個頻域參數(shù)。在靜音段,這些參數(shù)的長時平均值隨著背景噪聲的性質(zhì)而發(fā)生改變。每進(jìn)來一幀,就要計算當(dāng)前幀的參數(shù)與其長時平均值的差。根據(jù)這些差值參數(shù),VAD可以得到初始的判決結(jié)果,最后對初始結(jié)果進(jìn)行平滑,得到最終的判決結(jié)果。

1.2.2 CNG機(jī)制

舒適噪聲是用偽白噪聲激勵內(nèi)插后的LPC濾波器產(chǎn)生的,就跟解碼器對解碼后的激勵進(jìn)行濾波產(chǎn)生活動話音一樣。激勵水平和LPC濾波器是從前一個SID信息中獲取的。子幀內(nèi)插LPC濾波器是用SID的LSP參數(shù)作為當(dāng)前的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)生。

首先,我們定義目標(biāo)激勵增益Gt為當(dāng)前幀t合成激勵必須要達(dá)到的平均能量的平方根。Gt是用下面的平滑公式計算得到的,其中GSID是解碼后的SID增益。

c.JPG

每幀的80個樣本分成兩個長度為40個樣本的子幀。對于每一個子幀,CNG激勵樣本是用下面的算法合成的:

①從間隔[40,103]中隨機(jī)選擇一個基音延遲。

②根據(jù)G.729 ACELP碼結(jié)構(gòu)隨機(jī)選擇網(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)生。


上一頁 1 2 3 4 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉