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