基于TMS320C6201的G.723.1多通道語音編解碼的實現(xiàn)
當前,Voice overIP(VoIP)技術正在不斷普及,通過Internet的語音通信量也日漸增加。目前VoIP中使用的低碼率語音壓縮標準主要有G.723.1和G.729兩種。隨著VoIP技術的不斷發(fā)展,要求產品的集成度與性能進一步提高,利用新一代高性能DSP芯片,實現(xiàn)單片DSP處理多路語音信號,是今后的發(fā)展趨勢。本文根據C6201芯片的特點,作了大量針對G.723.1標準本身的優(yōu)化,降低了運算量,滿足了多路信號的實時實現(xiàn)。
本文引用地址:http://www.butianyuan.cn/article/83480.htm1 G.723.1標準介紹
?。牵罚玻常睒藴适牵桑裕战M織于1996年推出的一種低碼率編碼算法。主要用于對語音及其他多媒體聲音信號的壓縮,如可視電話系統(tǒng)、數字傳輸系統(tǒng)和高質語音壓縮系統(tǒng)等。
G.723.1標準可在6.3kbps和5.3kbps兩種碼率下工作。其中,高碼率算法具有較高的重建語音質量,而低碼率算法的計算復雜度則較低。與一般的低碼率語音編碼算法一樣,G.723.1標準采用線性預測的合成分析法(Analysis-by-Synthesis)。對激勵信號進行量化時,高碼率算法采用多脈沖最大似然量化(MP-MLQ),而低碼率算法則采用算術碼本激勵線性預測(ACELP)。目前,G.723.1已經能在多種DSP芯片上實現(xiàn),如美國TI公司的TMS320C5x、TMS320C54x和朗訊科技公司的DSP16xx等。
G.723.1編碼器能對以8kHz采樣的話帶語音信號進行壓縮,其結構框圖見圖1(a)。從圖中可以看出,編碼器是基于線性預測合成分析法原理,其目的是最小化感知加權誤差信號。為了降低碼率,G.723.1采用了較長的幀尺寸,每幀240個樣值,即30毫秒幀長。每幀輸入信號首先通過一階高通濾波器濾除直流分量,然后將之分成四個60個樣值的子幀,每個子幀獨立進行LPC分析。為了提高LPC系數的連續(xù)性,采用了長度為180個樣值的重疊窗,即同時包含前后兩個子幀,這使算法引入60個樣值的超前時延,因此算法的總時延為37.5毫秒。LPC系數用線性譜頻率(LSF)表示,LSF參數采用預測分裂矢量量化,只對第四子幀進行。為了提高量化感知質量,高通濾波后的語音信號需通過共振峰感知加權濾波器和諧振峰噪聲整形濾波器以生成初始目標信號。前者參數由各子幀的未量化LPC系數構成,后者通過對每兩子幀進行開環(huán)基音周期估計得到,其中基音周期的范圍為18到142個樣值。LPC合成濾波器、共振峰感知加權濾波器和諧振峰噪聲整形濾波器用于系統(tǒng)零輸入響應計算和最佳激勵估計。G.723.1編碼器還包括一個五階基音預測器,其參數根據開環(huán)基音估計值和脈沖響應進行閉環(huán)基音搜尋得到。在進行最佳激勵估計時,需從初始目標信號中減去系統(tǒng)零輸入響應和基音預測器貢獻以得到最終目標信號,然后針對高低碼率分別采用MP-MLQ和ACELP方法進行量化。其中LSF參數、基音值和激勵參數需傳送給解碼器。
解碼器首先根據得到的LSF參數重建LPC合成濾波器,然后根據基音值和激勵參數得到自適應碼本激勵信號和固定碼本激勵信號。為了提高重建語音的主觀質量,解碼器還包括一個后濾波器,后濾波器由共振峰和基音后濾波器組成。激勵信號依次通過基音后濾波器、合成濾波器和共振峰后濾波器合成重建語音,其結構框圖見圖1(b)。
2 TMS320C6201芯片結構簡介
?。裕停樱常玻埃茫叮玻埃笔且环N32位的定點DSP,工作頻率最高達200MHz。它有兩組運算單元,每組4個,共8個。除M單元只能作乘法外,其他單元都可以靈活使用,如D單元可以做Load、Store和加減操作,S單元可以進行移位和加減。C6201有32個通用寄存器,分為A、B兩側。兩側的寄存器有交叉通路,同一指令可以同時訪問雙側的寄存器。C6201采用了超長指令字結構,一次最多可以同時執(zhí)行8條指令(每個單元一條)。它有11級流水,所有的指令都是精簡指令。C6201允許使用緩存(Cache)模式,可以運行大型程序而不降低速度。圖2是C6201的結構。
3 標準的實現(xiàn)
用C6201實現(xiàn)G.723.1標準的最大優(yōu)勢在于它極強的并行處理能力,用一塊DSP可以實現(xiàn)多路語音的壓縮,大大簡化了硬件的設計。C6201是TI公司推出的第一種支持C編譯器的DSP芯片。通常,C編譯器能完成整個工作的70%,而30%的進一步優(yōu)化必須通過手寫匯編來實現(xiàn),所以對整個程序的優(yōu)化分為C語言級和匯編語言級兩部分。
3.1 C語言級的優(yōu)化
?。常保?循環(huán)展開(loop-unrolling)
使用具有并行能力的DSP開發(fā)軟件時,一個重要的思想就是充分利用DSP的字長和數目眾多的運算單元,盡量把循環(huán)體展開。通過增加每次循環(huán)中執(zhí)行的指令數來減少總的循環(huán)次數,可使得在同樣的時鐘周期內能運行更多的指令,提高了循環(huán)的效率。
評論