IP電話中的低速率語音編解碼器的實現(xiàn)方法
出處:電子技術(shù)應(yīng)用 發(fā)布于:2011-06-18 12:02:55
近年來,隨著Internet的日益普及,IP電話的應(yīng)用方興未艾。現(xiàn)在IP電話的實現(xiàn)方式已經(jīng)從PC-PC的軟件方式發(fā)展到普通電話通過IP電話網(wǎng)關(guān)上網(wǎng)。IP電話網(wǎng)關(guān)具有建立和維護網(wǎng)絡(luò)連接,處理數(shù)字化語音的功能。IP電話網(wǎng)關(guān)的一個主要性能指標(biāo)是它的處理密度。而IP電話網(wǎng)關(guān)的處理密度主要取決于它所使用的語音編解碼器處理一幀數(shù)據(jù)的延遲大小。為了提高IP電話網(wǎng)關(guān)的處理密度,本文在實現(xiàn)ITU-T G.729.A語音編解碼器時,采用了目前性能的DSP TMS320C6201。研究了在TMS320C6201上實現(xiàn)G.729.A的編解碼器的編程技巧;歸納出一系列減少編解碼器處理延遲的優(yōu)化方法。采用這些優(yōu)先方法和編程技巧,可以實現(xiàn)單片TMS320C6201能同時處理20路路語音。
1 G.729.A編解碼器的算法
1.1 編碼算法
G.729a是由ITU-T制定、適用于PSTN的第四代低速率語音編解碼標(biāo)準(zhǔn),該標(biāo)準(zhǔn)采用共軛結(jié)構(gòu)一算術(shù)碼本激勵線性預(yù)測(CS-ACELP)算法,其編碼所需要帶寬為8Kbps,可以達到傳統(tǒng)長途電話的音質(zhì),適用于網(wǎng)絡(luò)帶寬較低、選擇使用低比特速率編碼方法的語音通信系統(tǒng)。
在開始編碼之前,先要對輸入的模擬信號進行電話帶濾波,然后以8kHz頻率對其進行采樣,再將其轉(zhuǎn)換為16位線性PCM碼,作為編碼器的輸入。
編碼器處理語音的單位是幀,1幀為10毫秒語音,包括80個聲音樣本(采樣頻率為8kHz)。編碼器對每一幀語音信號進行分析,抽取出其中的CPLD模型的參數(shù),對這些參數(shù)進行編碼和傳送。其編碼過程如圖1所示。

在預(yù)處理階段,輸入信號經(jīng)高通濾波并乘以比例因子,然后對每一幀預(yù)處理之后的信號進行線性預(yù)測分析,計算出線性預(yù)測濾波器系數(shù),其中,線性預(yù)測濾波器系數(shù)定義為:.這些系數(shù)被轉(zhuǎn)化成線譜對(LSP,Line Spectrum Pairs)并用可預(yù)測二階矢量量化法量化成18位。使用合成分析搜索過程選定激勵信號,使得原始信號和重構(gòu)信號之間的誤差在感覺加權(quán)失真測量中。
對每個子幀(5毫秒,包括40個樣本)求出其激勵參數(shù)(固定和自適應(yīng)碼本參數(shù))。本幀的量化和未量化的線性插值系數(shù)。每一幀根據(jù)感覺加權(quán)語音信號估計出開環(huán)基音延遲。對每一子幀進行以下操作:將線性預(yù)測殘差通過加權(quán)合成濾波器的沖擊響應(yīng)h(n),使用目標(biāo)信號x(n)和沖擊響應(yīng)h(n)在開環(huán)基音延迂回通過周圍搜索,并進行閉環(huán)基音分析(得出自適應(yīng)碼本延遲和增益)。個子幀的基音延遲編碼為8位,第二個子幀采用差分方法編碼為5位。通過減去(濾波后的)自適應(yīng)碼本貢獻來更新目標(biāo)信號x(n),新目標(biāo)x'(n)在固定碼本搜索中使用以找到激勵。,得到的激勵信號被用來更新濾波器狀態(tài)。所有這些參數(shù)封裝到80位的壓縮數(shù)據(jù)幀中。
1.2 解碼算法
解碼器算法框圖如圖2所示。

首先,從壓縮比特流中取得各參數(shù)的索引,再從這些索引中得出一幀語音的編碼器參數(shù),包括LSP系數(shù)、2個部分基音延遲、2個固定碼本向量、2套自適應(yīng)和固定碼本延遲,這些參數(shù)被用來生成激勵信號并合成濾波器參數(shù)。LSP系數(shù)經(jīng)插值后,形成每個子幀的LP濾波器。對每個子幀進行以下處理:
·自適應(yīng)和固定碼本向量乘以各自的增益系數(shù)得到激勵信號;
·激勵信號經(jīng)過線性預(yù)測合成濾波器得到重構(gòu)的語音;
·重構(gòu)后的語音信號再經(jīng)過一個后處理階段,包括基于長時和短時合成濾波器的自適應(yīng)濾波器,然后再經(jīng)過高通濾波器并乘以相應(yīng)的比例因子。
2 ITU-T G.729.A編解碼器實現(xiàn)的關(guān)鍵技術(shù)
2.1 ITU-T G.729.A編解碼器實現(xiàn)的硬件平臺
ITU-T G.729.A編解碼器實現(xiàn)平臺是筆者開發(fā)的一種集成式IP電話網(wǎng)關(guān)。這種集成式IP電話網(wǎng)關(guān)的設(shè)計思想是以PC機為基礎(chǔ),集成了市場通用板卡,如LSI/C6200DSP資源卡、Dialogic的語音卡和網(wǎng)關(guān)等,并以這些板卡為硬件平臺,按照相關(guān)協(xié)議,開發(fā)出一套IP網(wǎng)關(guān)軟件。集成式IP電話網(wǎng)關(guān)的硬件基本結(jié)構(gòu)如圖3所示。其中G.729.A編解碼器是由LSI/C6200資源卡上的TMS320C6201 DSP來實現(xiàn)。

2.2 ITU-T G.729.A軟件模塊的設(shè)計
G.729.A編解碼器運行的硬件平臺是TMS320C6201DSP,支持SPOX.SPOX是一種功能很強的實時操作系統(tǒng)。在SPOX操作系統(tǒng)的調(diào)度下,可對多路語音進行適時的語音壓縮和解碼。G.729.A編解碼器件主要由調(diào)度及命令解釋模塊、G.729.A數(shù)據(jù)壓縮與解壓縮模塊和接口模塊三部分組成。
(1)調(diào)度及命令解釋模塊
該模塊主要用于解釋HOST發(fā)來的各種命令,如發(fā)送或接收編解碼數(shù)據(jù),查詢編解碼狀態(tài)以及啟動、停止編解碼操作等,該模塊不直接與HOST打交道,而是以SPOX提供的服務(wù)方式,通過接口功能模塊間接地實現(xiàn)與HOST之間數(shù)據(jù)交換。同時在SPOX的支持下,完成對多路語音編解碼的適時調(diào)度。
?。?)G.729.A數(shù)據(jù)壓縮與解壓縮模塊
該模塊是ITU-T G.729.A編解碼器的模塊,在很大程序上影響編解碼的性能。該模塊實現(xiàn)了ITU-T G.729.A全部功能。該部分已單獨形成一個TMS320C6201函數(shù)庫,可與其他任何部分連接。
?。?)接口模塊
該模塊主要實現(xiàn)TMS320C6201與HOST以及與語音卡之間的數(shù)據(jù)交換,該模塊分成兩部分。一部分主要負責(zé)TMS320C6201 DSP與語音卡之間的數(shù)據(jù)傳輸,它負責(zé)不斷地將語音卡采取的語音數(shù)據(jù)通過語音總線(如SCbus),采取等時通信方式送入到LSI/PCI6200資源卡RAM中。另一部分主要負責(zé)TMS320C6201 DSP與HOST之間的數(shù)據(jù)交換。編解碼器與HOST之間的數(shù)據(jù)交換采用中斷方式進行同步。
2.3 ITU-T G.729.A標(biāo)準(zhǔn)在TMS320C6201上實現(xiàn)的關(guān)鍵技術(shù)
如何提高G.729.A語音編碼的執(zhí)行速度是G.729.A編解碼器實現(xiàn)的關(guān)鍵技術(shù)問題之一。為此,歸納出一系列編程技巧和優(yōu)優(yōu)方法,較好地解決了這一難題。
?。?)G.729.A標(biāo)準(zhǔn)中規(guī)定的算法都是基本算法。因此,在實現(xiàn)時,可以用快速算法。
(2)算法中有很多FIR和IIR運算,如:共振峰濾波器、聽覺加權(quán)濾波器、聯(lián)合濾波器等,在設(shè)計這些濾波器時,使用較大數(shù)組來放濾波器的系數(shù)。這樣,每計算輸出,不需系數(shù)更新移位,從而可以減少內(nèi)存操作次數(shù),因此可以通過犧牲存儲器空間來提高代碼的執(zhí)行速度。
?。?)多使用指針,盡量減少變量之間的反復(fù)拷貝操作。
?。?)用查詢靜態(tài)表的方法來代替動態(tài)的計算,從而減少計算延遲。例如,在設(shè)計cos()函數(shù)時,程序在初始化時就生成一個512項的cos()函數(shù)表。當(dāng)需要計算cos()函數(shù)值時,可以采用查表方式來代替動態(tài)計算。
?。?)內(nèi)存單元的合理分配。TMS320C6201 DS的片內(nèi)存儲器有64KB數(shù)據(jù)存儲器。由于TMS320C6201從片內(nèi)存儲器讀入一個字比從片外存儲器讀入一個字快14倍,因此在編程時,盡量將經(jīng)常使用的數(shù)據(jù)分配在片內(nèi)存儲器中。
?。?)G.729.A在TMS320C6201上定點實現(xiàn)時,數(shù)據(jù)也是一個關(guān)鍵問題。在定點信號處理芯片上實現(xiàn)某些浮點算法時,可以采取定點數(shù)來表示浮點數(shù),這樣可以加快運行速度,但可能導(dǎo)致運算不夠。解決的方法是在要求比較高的地方,可以將計算的中間變量用32位表示,甚至用40位表示。
?。?)充分利用TMS320C6201的編譯器和優(yōu)化工具來優(yōu)化C和線性匯編代碼,并合理地選擇優(yōu)化參數(shù)。有關(guān)速度的優(yōu)化參數(shù)是:-o3、-pm、-mt、mi等。并盡量用TMS320C6201的線性匯編或匯編語音來實現(xiàn)G.729.A編解碼器的算法。
?。?)充分利用TMS320C6201的特點來編寫代碼。如流水功能,8個功能單元并行操作功能,32位字讀寫功能以及Intrinsics的使用等;對一些簡單循環(huán)而前后沒有因果關(guān)系,合并這些循環(huán)也有利于做流水線。
3 性能測試
分別用二種測試工具對G.729.A編解碼器的處理延遲作了測試。種測試工具是C6X Simulator,測試條件是假設(shè)所有代碼裝在TMS320C6201片同的程序存儲器中,稱之為Non cache測試模式。另外一種測試方式是采用TI公司的C6X的EVM卡,測試條件是將TMS320C6201片內(nèi)64KB RAM作為Cache使用;因此稱之為cache模式。二種測試模式的測試結(jié)果如表1所示。
表1 G.729.A編解碼的時鐘數(shù)

從表1可看出,TMS320C6201工作在頻率為200MHz時,即每Cycles的周期為0.5毫秒,可以算出G.729.A編碼一幀(30毫秒)的延遲時間是0.43~0.46毫秒。所以單片TMS320C6201可以同時處理大約20路G.729.A編碼。
ITU-T G.729.A語音信號壓縮編解碼技術(shù)集成了眾多低速率語音編解碼的優(yōu)點,極大地提高了低速率編解碼的語音質(zhì)量,但算法較復(fù)雜。而TMS320C6201 DSP是目前快的定點數(shù)字信號處理器,如果在編寫程序時,能充分利用上述關(guān)鍵技術(shù),就可以充分發(fā)揮TMS320C6201的功能,大大減少G.729.A編解碼的處理延遲,并能保持良好的語音品質(zhì)。將該編解碼應(yīng)用在該IP電話網(wǎng)關(guān)中,在很大程度上提高了IP電話網(wǎng)關(guān)處理密度,改善了IP電話網(wǎng)關(guān)的性能。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 掌握 DSP:原理剖析與應(yīng)用實踐2025/5/8 14:03:24
- 模糊邏輯在 DSP 上實時執(zhí)行2023/7/25 17:13:30
- 多速率DSP及其在數(shù)模轉(zhuǎn)換中的應(yīng)用2023/6/12 15:28:52
- 使用 DSP 加速 CORDIC 算法2023/3/29 15:46:30
- 高速DSP系統(tǒng)的信號完整性2022/9/26 16:45:38









