新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > G.729語音編碼算法研究及基于DSP的實現

        G.729語音編碼算法研究及基于DSP的實現

        作者: 時間:2012-05-23 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/171421.htm

        關鍵詞:TMS320VC5510;語音編解碼;G.729算法;優化

        1 G.729算法介紹

        由于G.729的算法復雜度較高,ITU提出了G.729的簡化版本G.729A,作為G.729的附錄Annex A。后來為了進一步提高壓縮率,增加了G.729B,即G.729 AnnexB。在G.729B中,主要使用了VAD和CNG技術,使得語音通信中的靜音部分進一步壓縮。

        1.1 G.729A

        1.1.1 G.729A

        G.729A器的框圖如圖1所示。G.729A器由預處理、線性預測分析和量化內插、知覺加權、基音分析、脈沖響應的計算、目標信號的計算、自適應碼本搜索、同定碼本結構和搜索、增益量化以及參數編碼等模塊組成。

        a.JPG

        模擬語音信號經過話路帶通濾波和8 kHz采樣之后,量化成16位的PCM信號進入編碼器,然后根據預處理后的輸入信號進行線性預測分析,得到線性預測系數,即線性預測編碼LPC(Linear Prediction Code)信息,利用該系數即可構造合成濾波器。激勵信號經合成濾波器后生成重構信號,與輸入信號相減后得到殘差信號。該殘差信號經誤差加權濾波器處理,根據聽覺感受改變頻譜,反饋到控制回路,根據使加權殘差信號均方差最小的原則確定激勵信號及其增益。誤差加權濾波器也是根據預測分析所得的LPC信息構造的。

        基音分析模塊通過自相關分析推得基音周期,據此信息搜素自適應碼本,確定最佳自適應碼本矢量,得到語音中具有準周期特性的激勵;然后再搜素固定碼本,根據最小化加權均方差(Mcan Square Error,MSE)的準則確定最佳固定碼本矢量,得到語音模型的隨機激勵信號;最后再確定兩個碼本矢量的增益Gc和Gp,采用具有共勻框結構的兩級碼書進行矢量量化。上述過程確定的線性預測編碼信息、自適應碼本矢量、固定碼本矢量和矢量增益構成完整的G.729聲碼器編碼器參數。所有這些參數均以碼本索引的形式發往接收端。

        1.1.2 G.729A解碼器

        G.729A解碼器結構框圖如圖2所示。首先從接收到碼流中提取參數序號,解碼這些序號得10 ms語音幀對應的編碼參數。這些參數是線譜對LSP參數、兩個分數基音延時、兩個固定碼本矢量與兩組自適應和固定碼本增益、每子幀LSP參數被內插并轉換為LP(Linear Prediction)濾波器系數,然后以每5 ms子幀為單位合成語音,合成步驟如下:

        b.JPG

        ①自適碼本應和固定碼本分別乘以各自的增益加起來構成激勵。

        ②激勵LP合成濾波器重構語音。

        ③重構語音信號經過后置處理,包括長時后置濾波、短時合成濾波和高通濾波。最后輸出語音信號。

        1.2 G.729B

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

        1.2.1 VAD機制

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

        1.2.2 CNG機制

        舒適噪聲是用偽白噪聲激勵內插后的LPC濾波器產生的,就跟解碼器對解碼后的激勵進行濾波產生活動話音一樣。激勵水平和LPC濾波器是從前一個SID信息中獲取的。子幀內插LPC濾波器是用SID的LSP參數作為當前的LSP,然后和前一幀的LSP作內插得到的,與活動幀一樣。偽白噪聲ex(n)是由跟活動話音同樣類型的激勵cx1(n)和高斯白噪聲激勵ex2(n)相加而產生的。G.729激勵ex1(n)是由一個小增益的自適應激勵和ACELP固定激勵組成的,這改善了活動和非活動話音幀之間的跳變。白噪聲ex2(n)的引入是為了產生一個更接近于白噪聲的信號。在非活動話音期間,因為編碼端和解碼端需要保持同步,所以激勵在兩邊都要產生。

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

        c.JPG

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

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

        ②根據G.729 ACELP碼結構隨機選擇網格、脈沖符號和位置來構建子幀的固定碼本矢量。

        ③計算單位增益的自適應激勵信號,記作ea(n),n=0~39;選擇的子幀固定激勵被記作ef(n),n=0~39。

        ④與活動幀一樣,偽白噪聲ex(n)是由跟活動話音同樣類型的激勵ex1(n)和高斯白噪聲激勵ex2(n)相加而產生的。G.729激勵ex1(n)是由一個小增益的自適應激勵和ACELP固定激勵組成的,這改善了活動和非活動話音幀之間的跳變。高斯白噪聲ex2(n)的引入是為了產生一個更接近于白噪聲的信號。在非活動話音期間,因為編碼端和解碼端需要保持同步,所以激勵在兩邊都要產生。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 津南区| 深泽县| 吉安县| 诸城市| 邻水| 丰宁| 乐清市| 台前县| 咸阳市| 松滋市| 昌都县| 西畴县| 黄冈市| 聂荣县| 云南省| 民县| 宁波市| 高雄县| 定边县| 夹江县| 尚志市| 高台县| 云霄县| 承德市| 南阳市| 城市| 泰宁县| 嘉黎县| 沁水县| 华容县| 双江| 沛县| 眉山市| 乌鲁木齐县| 蓝山县| 曲靖市| 佛山市| 禹州市| 孝昌县| 江西省| 绩溪县|