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