IP電話(huà)中的低速率語(yǔ)音編解碼器的實(shí)現(xiàn)
摘要:G.729.A在TMS320C6201DSP上的實(shí)現(xiàn)方法及提高G.729.A編碼器的運(yùn)行速度的優(yōu)化方法和編程技巧。并介紹了該編碼器的測(cè)試結(jié)果。
本文引用地址:http://m.butianyuan.cn/article/242328.htm關(guān)鍵詞:ITU-T G.729.A IP電話(huà) 編碼器
最近幾年,IP電話(huà)技術(shù)突飛猛進(jìn),已從當(dāng)初PC到PC的機(jī)連接方式發(fā)展到IP電話(huà)網(wǎng)關(guān)方式,通過(guò)IP電話(huà)網(wǎng)關(guān)可以將PBX與因特網(wǎng)連接起來(lái),從而實(shí)現(xiàn)普通話(huà)機(jī)通過(guò)因特網(wǎng)進(jìn)行通信。因此,IP電話(huà)網(wǎng)關(guān)是近年來(lái)計(jì)算機(jī)和通信領(lǐng)域中研究的一個(gè)熱點(diǎn)。IP電話(huà)網(wǎng)關(guān)的一個(gè)最主要性能指標(biāo)是它的處理密度(即能同時(shí)算是的話(huà)路數(shù))。而IP電話(huà)網(wǎng)關(guān)的處理密度主要取決于它所使用的語(yǔ)音編解碼器處理一幀數(shù)據(jù)的延遲大小。目前,IP電話(huà)所遵循的標(biāo)準(zhǔn)是H.323,而H.323標(biāo)準(zhǔn)首選語(yǔ)音編碼器是ITU-T G.729.A。ITU-T G.729.A是用于語(yǔ)音和其它聲音信號(hào)的壓縮編解碼算法建議,它是G.729的簡(jiǎn)化版本,編碼速率為8Kbps,并且有很高的語(yǔ)音質(zhì)量。但是,該編碼器的算法復(fù)雜,一幀語(yǔ)音的處理延遲較大,在很大程度上影響IP電話(huà)網(wǎng)關(guān)的處理密度。因此,為了提高IP電話(huà)網(wǎng)關(guān)的處理密度,本文在實(shí)現(xiàn)ITU-T G.729.A語(yǔ)音編解碼器時(shí),采用了目前性能最好的DSP,即TMS320C6201;針對(duì)TMS320C6201并行性和流水等特點(diǎn),深入研究了在TMS320C6201上實(shí)現(xiàn)G.729.A的編解碼器的編程技巧;歸納出一系列減少編解碼器處理延遲的優(yōu)化方法。采用這些優(yōu)先方法和編程技巧,可以將ITU-T G.729.A的每幀編碼運(yùn)行時(shí)間減少到0.47毫秒(按TMS320C6201工作在200MHz計(jì)算),從而可以實(shí)現(xiàn)單片TMS320C6201能同時(shí)處理20路路語(yǔ)音。這一指標(biāo)已到達(dá)了國(guó)際上最先進(jìn)的水平;而且,該編解碼器已成功地運(yùn)用在筆者開(kāi)發(fā)的IP電話(huà)網(wǎng)關(guān)中。
1 G.729.A編解碼器的算法
1.1 編碼算法
ITU-T G.729.A標(biāo)準(zhǔn)采用一種稱(chēng)為共軛結(jié)構(gòu)代數(shù)碼本激勵(lì)線性預(yù)測(cè)(Conjugate Structure Algebraic-Code-Excited Linear-Prediction,CS-ACELP)算法來(lái)對(duì)語(yǔ)音信號(hào)進(jìn)行編碼。
在開(kāi)始編碼之前,先要對(duì)輸入的模擬信號(hào)進(jìn)行電話(huà)帶濾波,然后以8kHz頻率對(duì)其進(jìn)行采樣,再將其轉(zhuǎn)換為16位線性PCM碼,作為編碼器的輸入。
編碼器處理語(yǔ)音的單位是幀,1幀為10毫秒語(yǔ)音,包括80個(gè)聲音樣本(采樣頻率為8kHz)。編碼器對(duì)每一幀語(yǔ)音信號(hào)進(jìn)行分析,抽取出其中的CPLD模型的參數(shù)(線性預(yù)測(cè)濾器參數(shù)),自適應(yīng)和固定碼本索引和增益),對(duì)這些參數(shù)進(jìn)行編碼和傳送。其編碼過(guò)程如圖1所示。
在預(yù)處理階段,輸入信號(hào)經(jīng)高通濾波并乘以比例因子,然后對(duì)每一幀預(yù)處理之后的信號(hào)進(jìn)行一次線性預(yù)測(cè)分析,計(jì)算出線性預(yù)測(cè)濾波器系數(shù),其中,線性預(yù)測(cè)濾波器系數(shù)定義為:。這些系數(shù)被轉(zhuǎn)化成線譜對(duì)(LSP,Line Spectrum Pairs)并用可預(yù)測(cè)二階矢量量化法量化成18位。使用合成分析搜索過(guò)程選定激勵(lì)信號(hào),使得原始信號(hào)和重構(gòu)信號(hào)之間的誤差在感覺(jué)加權(quán)失真測(cè)量中最小。
對(duì)每個(gè)子幀(5毫秒,包括40個(gè)樣本)求出其激勵(lì)參數(shù)(固定和自適應(yīng)碼本參數(shù))。本幀的量化和未量化的線性插值系數(shù)。每一幀根據(jù)感覺(jué)加權(quán)語(yǔ)音信號(hào)估計(jì)出開(kāi)環(huán)基音延遲。多面手對(duì)每一子幀進(jìn)行以下操作:將線性預(yù)測(cè)殘差通過(guò)加權(quán)合成濾波器的沖擊響應(yīng)h(n),使用目標(biāo)信號(hào)x(n)和沖擊響應(yīng)h(n)在開(kāi)環(huán)基音延迂回通過(guò)周?chē)阉?,并進(jìn)行閉環(huán)基音分析(得出自適應(yīng)碼本延遲和增益)。第一個(gè)子幀的基音延遲編碼為8位,第二個(gè)子幀采用差分方法編碼為5位。通過(guò)減去(濾波后的)自適應(yīng)碼本貢獻(xiàn)來(lái)更新目標(biāo)信號(hào)x(n),新目標(biāo)x'(n)在固定碼本搜索中使用以找到最優(yōu)激勵(lì)。固定碼本激勵(lì)使用一個(gè)17位的代數(shù)碼本。自適應(yīng)和固定碼本的獻(xiàn)增益被矢量量化為7位(對(duì)固定碼本增益使用移動(dòng)平均預(yù)測(cè)方法)。最后,得到的激勵(lì)信號(hào)被用來(lái)更新濾波器狀態(tài)。所有這些參數(shù)最后封裝到80位的壓縮數(shù)據(jù)幀中。
1.2 解碼算法
解碼算法
解碼器算法框圖如圖2所示。
首先,從壓縮比特流中取得各參數(shù)的索引,再?gòu)倪@些索引中得出一幀語(yǔ)音的編碼器參數(shù),包括LSP系數(shù)、2個(gè)部分基音延遲、2個(gè)固定碼本向量、2套自適應(yīng)和固定碼本延遲,這些參數(shù)被用來(lái)生成激勵(lì)信號(hào)并合成濾波器參數(shù)。LSP系數(shù)經(jīng)插值后,形成每個(gè)子幀的LP濾波器。然后,對(duì)每個(gè)子幀進(jìn)行如下處理:
·自適應(yīng)和固定碼本向量乘以各自的增益系數(shù)得到激勵(lì)信號(hào);
·激勵(lì)信號(hào)經(jīng)過(guò)線性預(yù)測(cè)合成濾波器得到重構(gòu)的語(yǔ)音;
·重構(gòu)后的語(yǔ)音信號(hào)再經(jīng)過(guò)一個(gè)后處理階段,包括基于長(zhǎng)時(shí)和短時(shí)合成濾波器的自適應(yīng)濾波器,然后再經(jīng)過(guò)高通濾波器并乘以相應(yīng)的比例因子。
2 ITU-T G.729.A編解碼器實(shí)現(xiàn)的關(guān)鍵技術(shù)
2.1 ITU-T G.729.A編解碼器實(shí)現(xiàn)的硬件平臺(tái)
ITU-T G.729.A編解碼器實(shí)現(xiàn)平臺(tái)是筆者開(kāi)發(fā)的一種集成式IP電話(huà)網(wǎng)關(guān)。這種集成式IP電話(huà)網(wǎng)關(guān)的設(shè)計(jì)思想是以PC機(jī)為基礎(chǔ),集成了市場(chǎng)通用板卡,如LSI/C6200DSP資源卡、Dialogic的語(yǔ)音卡和網(wǎng)關(guān)等,并以這些板卡為硬件平臺(tái),按照相關(guān)協(xié)議,開(kāi)發(fā)出一套IP網(wǎng)關(guān)軟件。集成式IP電話(huà)網(wǎng)關(guān)的硬件基本結(jié)構(gòu)如圖3所示。其中G.729.A編解碼器是由LSI/C6200資源卡上的TMS320C6201 DSP來(lái)實(shí)現(xiàn)。
TMS320C6201 DSP是美國(guó)TEXAS INSTRUMENT公司生產(chǎn)的目前處理速度最快的定點(diǎn)數(shù)字信號(hào)處理器,TMS320C6201 DSP采用VLIW(Very Long Instruction Word)體系結(jié)構(gòu),其工作頻率最高可達(dá)200MHz,內(nèi)部有1600MIPS[4]。另外,TMS320C6201 DSP分別提供了64KB的內(nèi)部程序RAM和數(shù)據(jù)RAM,片外存儲(chǔ)器可擴(kuò)展到4GB,可連接SDRAM、SBSRAM和Flash Memory。TMS320C6201 DSP還提供了豐富的外圍電路接口,如:Scbus語(yǔ)音總線、MVIP語(yǔ)音總線、HOST接口以及JTAG口等。
2.2 ITU-T G.729.A軟件模塊的設(shè)計(jì)
G.729.A編解碼器運(yùn)行的硬件平臺(tái)是TMS320C6201DSP,支持SPOX。SPOX是一種功能很強(qiáng)的實(shí)時(shí)操作系統(tǒng)。在SPOX操作系統(tǒng)的調(diào)度下,可對(duì)多路語(yǔ)音進(jìn)行適時(shí)的語(yǔ)音壓縮和解碼。G.729.A編解碼器件主要由調(diào)度及命令解釋模塊、G.729.A數(shù)據(jù)壓縮與解壓縮模塊和接口模塊三部分組成。
該模塊主要用于解釋HOST發(fā)來(lái)的各種命令,如發(fā)送或接收編解碼數(shù)據(jù),查詢(xún)編解碼狀態(tài)以及啟動(dòng)、停止編解碼操作等,該模塊不直接與HOST打交道,而是以SPOX提供的服務(wù)方式,通過(guò)接口功能模塊間接地實(shí)現(xiàn)與HOST之間數(shù)據(jù)交換。同時(shí)在SPOX的支持下,完成對(duì)多路語(yǔ)音編解碼的適時(shí)調(diào)度。
(2)G.729.A數(shù)據(jù)壓縮與解壓縮模塊
該模塊是ITU-T G.729.A編解碼器的核心模塊,在很大程序上影響編解碼的性能。該模塊實(shí)現(xiàn)了ITU-T G.729.A全部功能。該部分已單獨(dú)形成一個(gè)TMS320C6201函數(shù)庫(kù),可與其他任何部分連接。
(3)接口模塊
該模塊主要實(shí)現(xiàn)TMS320C6201與HOST以及與語(yǔ)音卡之間的數(shù)據(jù)交換,因此該模塊分成兩部分。一部分主要負(fù)責(zé)TMS320C6201 DSP與語(yǔ)音卡之間的數(shù)據(jù)傳輸,它負(fù)責(zé)不斷地將語(yǔ)音卡采取的語(yǔ)音數(shù)據(jù)通過(guò)語(yǔ)音總線(如SCbus),采取等時(shí)通信方式送入到LSI/PCI6200資源卡RAM中,或者是將編解碼器解碼后的數(shù)據(jù)經(jīng)SCbus總線送給語(yǔ)音卡。另一部分主要負(fù)責(zé)TMS320C6201 DSP與HOST之間的數(shù)據(jù)交換,一方面要將壓縮后的語(yǔ)音信號(hào)由PCI總線送往HOST;另一方面將HOST解包的碼流分類(lèi)后讀入編解碼器。編解碼器與HOST之間的數(shù)據(jù)交換采用中斷方式進(jìn)行同步。
2.3 ITU-T G.729.A標(biāo)準(zhǔn)在TMS320C6201上實(shí)現(xiàn)的關(guān)鍵技術(shù)
處理密度是衡量IP電話(huà)網(wǎng)關(guān)性能好壞的一個(gè)重要指標(biāo)。而一個(gè)IP電話(huà)網(wǎng)你在硬件平臺(tái)確定的情況下,其處理密度主要取決于它所采用的編解碼器的語(yǔ)音編碼處理延遲,即代碼的執(zhí)行速度。如何提高G.729.A語(yǔ)音編碼的執(zhí)行速度是G.729.A編解碼器實(shí)現(xiàn)的關(guān)鍵技術(shù)問(wèn)題之一。這此,歸納出一系列編程技巧和優(yōu)優(yōu)方法,較好地解決了這一難題。
(1)G.729.A標(biāo)準(zhǔn)中規(guī)定的算法都是基本算法。因此,在實(shí)現(xiàn)時(shí),可以用快速算法。例如,相關(guān)系數(shù)的計(jì)算,在G.729.A標(biāo)準(zhǔn)中使用一種最基本的計(jì)算方法,如果采用快速的傅里葉變換技術(shù)或采用分解因子的計(jì)算方法,就可以加快計(jì)算速度。
(2)算法中有很多FIR和IIR運(yùn)算,如:共振峰濾波器、聽(tīng)覺(jué)加權(quán)濾波器、聯(lián)合濾波器等,在設(shè)計(jì)這些濾波器時(shí),使用較大數(shù)組來(lái)放濾波器的系數(shù)。這樣,每計(jì)算一次輸出,不需系數(shù)更新移位,從而可以減少內(nèi)存操作次數(shù),因此可以通過(guò)犧牲存儲(chǔ)器空間來(lái)提高代碼的執(zhí)行速度。如:共振峰濾波器是十階濾波器,常規(guī)的實(shí)現(xiàn)方法是設(shè)置一個(gè)長(zhǎng)度為10元素的一維數(shù)組來(lái)保存最近的10個(gè)共振峰樣本點(diǎn)。濾波器每輸出一個(gè)樣本點(diǎn),該數(shù)組就需更新一次。對(duì)于一個(gè)子幀40個(gè)樣本點(diǎn),就需進(jìn)行40次更新操作。如設(shè)置長(zhǎng)度為70元素的一組數(shù)組,就可以免去更新操作。可以很大程度地操作代碼的運(yùn)行速度。
(3)多使用指針,盡量減少變量之間的反復(fù)拷貝操作。
(4)用查詢(xún)靜態(tài)表的方法來(lái)代替動(dòng)態(tài)的計(jì)算,從而減少計(jì)算延遲。例如,在設(shè)計(jì)cos()函數(shù)時(shí),程序在初始化時(shí)就生成一個(gè)512項(xiàng)的cos()函數(shù)表。當(dāng)需要計(jì)算cos()函數(shù)值時(shí),可以采用查表方式來(lái)代替動(dòng)態(tài)計(jì)算。
(5)內(nèi)存單元的合理分配。TMS320C6201 DS的片內(nèi)存儲(chǔ)器有64KB數(shù)據(jù)存儲(chǔ)器。由于TMS320C6201從片內(nèi)存儲(chǔ)器讀入一個(gè)字比從片外存儲(chǔ)器讀入一個(gè)字快14倍,因此在編程時(shí),盡量將經(jīng)常使用的數(shù)據(jù)分配在片內(nèi)存儲(chǔ)器中。
(7)充分利用TMS320C6201的編譯器和優(yōu)化工具來(lái)優(yōu)化C和線性匯編代碼,并合理地選擇優(yōu)化參數(shù)。有關(guān)速度的優(yōu)化參數(shù)是:-o3、-pm、-mt、mi等。并盡量用TMS320C6201的線性匯編或匯編語(yǔ)音來(lái)實(shí)現(xiàn)G.729.A編解碼器的算法。
(8)充分利用TMS320C6201的特點(diǎn)來(lái)編寫(xiě)代碼。如流水功能,8個(gè)功能單元并行操作功能,32位字讀寫(xiě)功能以及Intrinsics的使用等,例如:對(duì)多重循環(huán),如最內(nèi)層循環(huán)次數(shù)少而較簡(jiǎn)單,可把最內(nèi)層循環(huán)展開(kāi),以便外循環(huán)做流水線;對(duì)一些簡(jiǎn)單循環(huán)而前后沒(méi)有因果關(guān)系,合并這些循環(huán)也有利于做流水線。
3 性能測(cè)試
分別用二種測(cè)試工具對(duì)G.729.A編解碼器的處理延遲作了測(cè)試。第一種測(cè)試工具是C6X Simulator(TMS320C6201的仿真軟件),測(cè)試條件是假設(shè)所有代碼裝在TMS320C6201片同的程序存儲(chǔ)器中;因此,稱(chēng)之為Non cache測(cè)試模式。另外一種測(cè)試方式是采用TI公司的C6X的EVM卡(評(píng)估卡),測(cè)試條件是將TMS320C6201片內(nèi)64KB RAM作為Cache使用;因此稱(chēng)之為cache模式。二種測(cè)試模式的測(cè)試結(jié)果如表1所示。
表1 G.729.A編解碼的時(shí)鐘數(shù)
測(cè)試項(xiàng)目 | C6 仿真器(非緩沖模式) | C6 評(píng)估板(非緩沖模式) |
編碼(每幀) | 86720 cycles | 91650 cycles |
解碼(每幀) | 34120 cycles | 37310 cycles |
從表1可以看出,如果TMS320C6201工作在頻率為200MHz,即每Cycles的周期為0.5毫秒,可以算出G.729.A編碼一幀(30毫秒)的延遲時(shí)間是0.43~0.46毫秒。因此說(shuō),單片TMS320C6201可以同時(shí)處理大約20路G.729.A編碼(當(dāng)前國(guó)際最高水平是22路);而且,編解碼的結(jié)果都嚴(yán)格地通過(guò)了G.729.A提供的測(cè)試矢量的測(cè)試,實(shí)際播放音質(zhì)也很好。
ITU-T G.729.A語(yǔ)音信號(hào)壓縮編解碼技術(shù)集成了眾多低速率語(yǔ)音編解碼的優(yōu)點(diǎn),大大提高了低速率編解碼的語(yǔ)音質(zhì)量,但算法較復(fù)雜。而TMS320C6201 DSP是目前最快的定點(diǎn)數(shù)字信號(hào)處理器,如果在編寫(xiě)程序時(shí),能充分利用上述關(guān)鍵技術(shù),就可以充分發(fā)揮TMS320C6201的功能,大大減少G.729.A編解碼的處理延遲,并能保持良好的語(yǔ)音品質(zhì)。將該編解碼應(yīng)用在該IP電話(huà)網(wǎng)關(guān)中,在很大程度上提高了IP電話(huà)網(wǎng)關(guān)處理密度,改善了IP電話(huà)網(wǎng)關(guān)的性能。因此說(shuō),本文實(shí)現(xiàn)的G.729.A編解碼器有很大的應(yīng)用價(jià)值。
評(píng)論