當前位置:首頁 > 消費電子 > 消費電子
[導(dǎo)讀]通過分析G.729語音編解碼算法和TMS320VC5416的原理,提出了有效優(yōu)化算法的方案,降低了算法的復(fù)雜度,把優(yōu)化的G.729算法在TMS320VC5416的系統(tǒng)板實現(xiàn),完成對輸入語音或數(shù)據(jù)的壓縮、存儲及回放。

 隨著多媒體信息技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,信息量快速增長,使信道資源顯得越來越寶貴。為了在有限的信道資源下傳輸盡可能多的信息,語音壓縮成為必要手段。ITU組織(國際電信聯(lián)盟)在l996年制定了G.729協(xié)議,即共軛結(jié)構(gòu)碼激勵線性預(yù)測編碼算法(CS-ACELP)。其編碼速率為8kb/s,可以滿足網(wǎng)絡(luò)通信的要求,具有良好的語音質(zhì)量,對不同的應(yīng)用環(huán)境有較強的適應(yīng)性,是一種性能較好的語音壓縮國際標準,被廣泛應(yīng)用在個人移動通信、衛(wèi)星通信等各個領(lǐng)域。
1 G.729編解碼算法的原理
    語音信號的波形編碼力圖使重建語音波形保持原始語音信號的波形形狀。這類編碼器通常將語音信號作為一般的波形信號來處理,它具有適應(yīng)能力強、語音質(zhì)量好等優(yōu)點,但所需用的編碼速率高。參數(shù)編碼通過對語音信號特征參數(shù)的提取及編碼來降低編碼速率,力圖使重建語音信號盡可能保持原語音的語意,而重建信號的波形同原語音信號的波形可能會有相當大的差別。二十世紀70年代中期,特別是80年代以來,語音編碼技術(shù)有了突破性的進展,提出了一些非常有效的處理方法,如混合編碼。這種算法克服了原有波形編碼器與聲碼器的弱點,而結(jié)合了它們各自的長處,在4kb/s~16kb/s速率上能夠得到高質(zhì)量合成語音,而在本質(zhì)上也具有波形編碼的優(yōu)點。G.729所描述的CS-ACELP(Conjugate-Structure Al2gebraic-Coder-Excited Linear Prediction)聲碼器采用的CELP聲碼器就屬于這類編碼器。
    CELP編碼基于合成分析(A-B-S)的搜索過程、感知加權(quán)矢量量化(VQ)和線性預(yù)測(LP)技術(shù),采用這種編碼方案使傳輸?shù)谋忍芈蚀蟠蠼档?。CS-ACELP的思想是由共軛結(jié)構(gòu)碼線性預(yù)測(CS-CELP)和代數(shù)碼本激勵線性預(yù)測(ACELP)的思想整合而來的。在編碼端,主要進行有線譜對(LSP)參數(shù)的量化、基音分析、固定碼本搜索和增益量化四個步驟。編碼器首先對輸入信號(8kHz采樣16bit PCM信號)進行預(yù)處理,然后對每幀語音信號進行線性預(yù)測,得到LPC系數(shù),并把LPC參數(shù)轉(zhuǎn)換成LSP參數(shù),最后對LSP參數(shù)進行矢量量化。在接下來的基音分析中,每一幀先搜索到最佳基音時延T的一個候選時延,然后依據(jù)候選時延搜索每一幀的最佳基音時延。最后還要對自適應(yīng)碼本增益和固定碼本增益進行量化。在解碼端,首先由接收到的比特流得到各種參數(shù)標志進行解碼,得到10ms語音幀編碼參數(shù)。解碼器在每一子幀內(nèi),對LSP系數(shù)進行內(nèi)插,并把它們變換成LP濾波器系數(shù)后,依次進行激勵生成、語音合成和后處理工作。
2 算法優(yōu)化和DSP應(yīng)用改進
    G.729語音編解碼系統(tǒng)要求實時性高,需在有限的時間內(nèi)對外部輸入的信號完成指定處理,即信號處理的速度必須大于等于輸入信號更新的速度,因此需要進行算法的優(yōu)化改進。對C語言編寫的代碼進行優(yōu)化,同時使用內(nèi)聯(lián)指令,又在C程序中嵌入?yún)R編語句,盡量提高信號處理的速度。
2.1 算法的優(yōu)化改進
    首先在算法上進行改進,如圖1所示,采用一種結(jié)合WD-LSP(Weighted Delta-LSP)[1]函數(shù)并結(jié)合次最優(yōu)部分碼本快速搜索的CS-ACELP語音編碼算法,同時采用基于聲學心理模型的知覺加權(quán)濾波器,使語音編碼在不降低語音質(zhì)量的情況下降低計算復(fù)雜度。WD-LSP函數(shù)主要用于區(qū)分UV-V(unvoice-voice)/S-V(silence-voice)的邊界。其原理是:如果函數(shù)值大于給定的極限值η,則開環(huán)基音延遲Top重新估計,否則,開環(huán)基音延遲Top用前一幀自適應(yīng)碼本延遲來更新。在第i幀F(xiàn)i的WD-LSP函數(shù)和用于確定開環(huán)基音延遲Top的算法如下:
   
其中LSPi(k)是在第i幀中的k階LSP系數(shù);wk是加權(quán)系數(shù),它用于增強UV-V/S-V邊界的WD-LSP函數(shù)。為了獲取wk,一個包含23 014個UV-V邊界和9 519個S-V邊界的大型數(shù)據(jù)庫用于估計delta-LSP在UV-V/S-V邊界的平方根值(RMS)。因此,WD-LSP用于檢測VU-V/S-V邊界非常敏感。η是一個設(shè)為0.01的極限值。整個計算可節(jié)省21%的計算量,經(jīng)過這種算法前后語音信號如圖2所示。

 

 

 

2.2 進行C語言優(yōu)化
    基于G.729標準的聲碼器最終在定點TMS320C5416上實時實現(xiàn)。在定點TMS320C5416內(nèi),浮點數(shù)是通過將小數(shù)點固定在特定位置來表示的,這是定點TMS320C5416的局限之一。為了區(qū)分小數(shù)的不同值域,使用了Q-格式。不同的Q-格式在于小數(shù)點的位置不同,因此整數(shù)域也不同。當兩個數(shù)相乘時,會產(chǎn)生一個特殊的符號位。如:兩個Q4數(shù)相乘, 需要附加一個左移的操作以去除這個多余的符號位,乘積應(yīng)該是一個Q9格式的。如果DSP中的FRST位被置位,這個去除多余符號位的移位操作能夠自動完成。對于16位數(shù)的乘法運算,應(yīng)該得到32 位的乘積。但是,由于只需要16位的積,該32位乘積中只有高16位被存儲下來,積的低16位被丟棄。為了達到高準確性,在連續(xù)的乘法運算過程中(如卷積),應(yīng)該一直保持32位的計算結(jié)果,只對最終的計算結(jié)果進行丟棄低16位的截短操作。為了達到更高的準確性,在這一操作過程中會使用到一種雙重精度格式, 這種格式僅僅出現(xiàn)在使用單精度不夠,而又不必要使用32位精度的時候。兩個32位數(shù)相乘,只需要32位的乘積,而不是64位,不過注意到TMS320C5416是16位的,所以在雙重精度格式中,32位整數(shù)分為高位字和低位字。高、低位字中都含有符號位,以進行快乘運算。其格式如下:
    L_32=hi_word<<16+lo_word<<1
    Hi_word=L_32>>16
    Lo_word=L_32-hi_word>>1
    當累加器中的數(shù)值超過一定范圍時將會產(chǎn)生溢出。在G.729算法標準中, 累加器的值被限定在80000000~7FFFFFFF之內(nèi)——即最小負數(shù)和最大正數(shù)。不過在TMS320C5416中,如果將PMST寄存器中的OVM置位,則溢出會得到自動處理。
2.3 內(nèi)聯(lián)指令的應(yīng)用和C程序中嵌入?yún)R編語句
    由于語音編碼的特點,編解碼函數(shù)都是由一些基本的加減乘除簡單函數(shù)組織而成,這些函數(shù)定義在BASIC OP.C和OPER_32B.C兩個文件中,如果能夠?qū)@些簡單函數(shù)進行內(nèi)聯(lián)指令(intrinsic)的優(yōu)化,就能達到事半功倍的效果。內(nèi)聯(lián)指令是匯編指令的直接映射,具有很高的效率。例如:
    #define muh_ r(varl,var2)           _mpylir(varl,var2)
    #define L_ add(L_var1,L_var2)       _sadd(L_var1,L_var2)
    #define L_ muh(var1,var2)           _smpy(var1,var2)
    在C程序中嵌入?yún)R編語句的方法比較簡單,只需在匯編語句的左右加上一個引號,然后用小括弧將匯編語句括住,并在括弧前加上ASM標識符,例如ASM(“匯編語句”)。采用這種方法一方面可以在C程序中實現(xiàn)用C語言無法實現(xiàn)的一些硬件控制功能,如修改中斷控制寄存器、中斷使能或屏蔽、讀取狀態(tài)寄存器和中斷標志寄存器等;另一方面,也可以用這種方法在C程序中的關(guān)鍵部分用匯編語句代替C語言以優(yōu)化程序。而采用這種方法的缺點是比較容易破壞C環(huán)境,因為C編譯器在編譯嵌入了匯編語句的C程序時并不檢查或分析所嵌入的匯編語句。采用這種方法需要注意以下幾點:
    (1)不要破壞C環(huán)境,因為C編譯器并不檢查和分析嵌入的匯編語句。
    (2)匯編語句不要改變C程序中變量的值,不要在匯編語句中加入?yún)R編器而改變匯編環(huán)境。
    在簡化算法的基礎(chǔ)上,使用CCS提供的C優(yōu)化器進行C語言優(yōu)化,同時還使用內(nèi)聯(lián)函數(shù)和匯編優(yōu)化。
3 G.729在TMS320C5416上的實現(xiàn)
3.1 TMS320C5416的體系結(jié)構(gòu)和應(yīng)用
    TMS320C5416(以下簡稱C5416)是TI公司最近推出的一款高性價比的通用l6位定點DSP芯片,它的內(nèi)核CPU基本組成與TMS320C54X系列一樣。C5416的單指令周期為6.25 RS,每秒執(zhí)行的指令數(shù)為160×106,指令系統(tǒng)豐富并具有很多多功能指令,使用了6級指令流水線結(jié)構(gòu),這些都很適合實現(xiàn)低時延的G.729聲碼器。采用一個40bit ALU、128K×16bit片內(nèi)RAM(包括64KB的片內(nèi)DARAM和64KB的片內(nèi)SARAM)、3個獨立的l6bit數(shù)據(jù)內(nèi)存總線、1個程序內(nèi)存總線、3個MCBSP、6信道DMA控制器、1個8/l6位并行增強主機端口接口及2個l6bit計時器。
    在TMS320C5416中通過PCM3002進行語音信號的A/D和D/A轉(zhuǎn)換,PCM3002使用兩個串行通道,一個用于控制內(nèi)部寄存器,另外一個用于數(shù)據(jù)傳輸。在系統(tǒng)板TMS320C5416中默認的語音信號的抽樣率是48kHz,通過修改PCM3002的內(nèi)部控制寄存器,設(shè)定PCM3002信號的抽樣率。為了滿足G.729編碼的要求,PCM3002信號的抽樣率為8 000Hz。為了充分利用DSP進行信號處理,通過使用MCBSP和DMA把抽樣的數(shù)據(jù)送入DMA的緩沖區(qū)中,當緩沖區(qū)滿時產(chǎn)生一次中斷,DSP把DMA的緩沖區(qū)中的數(shù)據(jù)讀入DSP中進行處理,然后把處理過的數(shù)據(jù)送入DMA發(fā)送緩沖區(qū)。
3.2 G.729在TMS320C5416的實現(xiàn)
    G.729的處理過程中采用塊處理技術(shù)如圖3所示。按照G.729標準,每塊(幀)由80個樣本組成,最初80個樣本被存起來,處理過程中有兩個操作是同時進行的。在處理塊L中數(shù)據(jù)的同時,存儲L+1塊的數(shù)據(jù)。

 


    在G.729軟件仿真時發(fā)現(xiàn)運算量較大的部分是LSP系數(shù)的矢量量化與激勵碼本(自適應(yīng)碼本和固定碼本)的搜索,這兩個部分的運算量大約占全部編解碼運算量的60%以上。所以在優(yōu)化過程中,著重對固定碼本Acelp_Code_A()、分數(shù)基音分析pitch_fr3()、開環(huán)基音分析pitch_ol_fast()、增益量化Qua_gain()等占據(jù)絕大多數(shù)運算量的函數(shù)進行了優(yōu)化;僅僅簡化算法不能滿足實時要求,還使用了CCS提供的C優(yōu)化器進行C語言優(yōu)化,同時還可以使用內(nèi)聯(lián)函數(shù)和匯編語句。經(jīng)過以上處理后,輸出的信號滿足通信要求。通過分析優(yōu)化前后這些主要模塊的速度對照表(如表1所示),可以看出各個主要模塊的優(yōu)化效果是比較明顯的。一幀語音信號經(jīng)過處理前后幅頻圖(如圖4所示),可以看出語音信號經(jīng)過處理后保持良好的語音質(zhì)量。

 

 


    系統(tǒng)運行主要分為四個過程:語音存儲,數(shù)據(jù)編碼壓縮,數(shù)據(jù)解壓縮,語音回放。將輸入的語音數(shù)據(jù)首先進行抗疊濾波,然后進行模數(shù)轉(zhuǎn)換,經(jīng)DSP采集并存入RAM存儲器中,即是語音存儲過程;接著運行編碼程序,將前面存儲的信息進行壓縮并存儲,這是編碼過程;然后進行解碼,并將數(shù)據(jù)存回原來的位置;最后DSP執(zhí)行輸出指令,將解碼后的數(shù)據(jù)送到數(shù)模轉(zhuǎn)換器中,實現(xiàn)模擬輸出。
    用C5416最終實時實現(xiàn)了G.729聲碼器,用該聲碼器分別實時播放純語音文件、語音加背景音樂文件。對重建語音質(zhì)量的主觀測試結(jié)果表明,恢復(fù)語音保留了很好的說話人特征,合成語音的清晰度和自然度均較好。該聲碼器性能測試數(shù)據(jù)如下:編解碼一幀平均時鐘周期數(shù)為1 010 350,CPU時鐘頻率為160MHz,所以編解碼一幀需要7.31ms時間;程序RAM容量為9.381KB;數(shù)據(jù)和常數(shù)RAM容量為7.146KB。以上數(shù)據(jù)表明,G.729編解碼器在C5416上實時實現(xiàn)的技術(shù),可以很好地應(yīng)用在電話會議、多媒體通信以及采用寬帶語音編碼的通信系統(tǒng)中。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉