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