羅功銀 周 正 馮偉東 國網(wǎng)湖北省電力公司信息通信公司
基于DM642的高速語音編碼器設(shè)計(jì)與實(shí)現(xiàn)
羅功銀 周 正 馮偉東 國網(wǎng)湖北省電力公司信息通信公司
變速率語音編碼;AMR-NB;算法優(yōu)化
語音通信是人類通信最基本、最重要的方式之一。由于移動(dòng)信息網(wǎng)絡(luò)技術(shù)的不斷進(jìn)步,語音通信工程也逐漸發(fā)展壯大起來,同時(shí),二者之間的聯(lián)系也更加緊密。在語音通信的數(shù)字化發(fā)展過程中,語音編碼這個(gè)關(guān)鍵技術(shù)也有了長足的進(jìn)步。特別是當(dāng)移動(dòng)通信經(jīng)歷了三次革新后,相應(yīng)的語音編碼運(yùn)算方式也要變得更為先進(jìn),表現(xiàn)為碼率保持在較低的水準(zhǔn),從而提高系統(tǒng)存儲水平,以及要顯著提升合成音的質(zhì)量,從而確保通話活動(dòng)的順利進(jìn)行。與此同時(shí),在移動(dòng)通信市場領(lǐng)域內(nèi)表現(xiàn)出極其激烈的競爭,研究熱點(diǎn)也很快轉(zhuǎn)移到了對變速率語音編碼的研究方面。伴隨著日臻成熟的科學(xué)技術(shù),其應(yīng)用范圍也變得越來越大[1]。以3GPP與以碼激勵(lì)線性預(yù)測(Code Excited Linear Prediction,CELP)算 法 為 基 礎(chǔ), 在AMRNB(Adaptive Multi Rate-Narrow Band)語音編碼規(guī)范被制定出來,它被廣泛應(yīng)用于第三代移動(dòng)通信系統(tǒng)中。 300Hz~3400Hz是AMR-NB算法使用的信號頻段, 8kHz是其抽樣頻率,并擁有4.75~12.2 kb/s的八種速率及一種1.8kb/s的背景噪聲編解碼方式。依據(jù)無線信道和傳輸狀況,它能夠自適應(yīng)地挑選一種編碼方式實(shí)行傳輸[2]。
對于AMR編碼的研究,現(xiàn)在普遍都是在確定基準(zhǔn)版本之上,來改善3GPP發(fā)布的以AMR-NB準(zhǔn)則為前提的ANSI-C代碼。實(shí)際上,定點(diǎn)C代碼是能夠自主運(yùn)行的,然而它會產(chǎn)生大量的不必要損耗,因?yàn)樗惴ū旧砭哂袠O強(qiáng)的復(fù)雜性,因此所研發(fā)的產(chǎn)品不是需要耗費(fèi)大量的計(jì)算資源,就是難以及時(shí)運(yùn)用到實(shí)際領(lǐng)域中,所以難以作用于計(jì)算資源受限的移動(dòng)終端。因此,根據(jù)平臺的差異,代碼也應(yīng)進(jìn)行相應(yīng)地靈活調(diào)整。
1.1 語音編碼發(fā)展現(xiàn)狀和發(fā)展趨勢
在對語音數(shù)字進(jìn)行處理的過程中,通常會用到語音壓縮編碼,其存在的意義是實(shí)現(xiàn)以最小比特達(dá)到最高合成音質(zhì)的效果。該技術(shù)在速率方面由變化代替了固定形態(tài),而比特率也在逐漸縮小。根據(jù)編碼的手段來劃分,語音編碼有波形、參數(shù)以及混合三種編碼形式。
圖1 AMR-NB語音編碼結(jié)構(gòu)圖
波形編碼會把頻率以及時(shí)間區(qū)域里所發(fā)出的信號即時(shí)轉(zhuǎn)化成數(shù)字信號,它作用于語音波形之上,盡量確保輸入波形不發(fā)生改變,也就是說反饋的語音信號和輸入波形保持高度的一致性,從而達(dá)到高音質(zhì)目標(biāo)。這種編碼的優(yōu)勢在于音質(zhì)高、抗噪能力強(qiáng)、符合預(yù)測編碼的要求等。而它的不足之處在于其要求較高的碼率環(huán)境,一旦速率無法保證,音質(zhì)也難以達(dá)到較高的水準(zhǔn),一般會下降到16kbit/s~64kbit/s的范圍里[3]。
參數(shù)編碼(即聲碼器編碼)是通過頻域等轉(zhuǎn)化區(qū)域來獲得能夠反映信源信號特點(diǎn)的參數(shù),并對其加以編譯處理,再傳遞出去;接著把所獲數(shù)字化的信號內(nèi)容由譯碼端編譯為相應(yīng)的特征參數(shù),以此來再構(gòu)造語音信號。如果實(shí)踐環(huán)境中沒有太高的嗓聲,那么合成音效也會和音源保持較高的一致性。其特點(diǎn)是碼率低,但語音質(zhì)量不高。以線性預(yù)測 (速率為2.4kbit/ s的LPC-10E)為基礎(chǔ)的聲碼器是參數(shù)編碼器中最有影響力的,不過,因?yàn)樗^差的語音質(zhì)量,現(xiàn)在已完全被新的編碼器取代。參數(shù)編碼能夠達(dá)到語音方面的低速率編碼要求,碼率下限能夠小于2.4kbit/s。而它的不足之處在于音質(zhì)不好,失真度高[4]。
混合編碼整合了以上兩種編碼方式,它先以語音來創(chuàng)造模型,并將相關(guān)參數(shù)加以編譯,降低波形編碼環(huán)境里的目標(biāo)量及其運(yùn)動(dòng)區(qū)間;還能通過編碼使與原始型號語音波形相接近的合成語音得以實(shí)現(xiàn),進(jìn)而使發(fā)言人的所有自然特性得以保留,使合成語音效果得以增強(qiáng)。高品質(zhì)的合成語音在4kbit/s~6kbit/s速率上可以較容易的獲得[5]。
語音編碼器早先是以標(biāo)準(zhǔn)PCM波形為基礎(chǔ)的,而今已開始運(yùn)用聲碼器進(jìn)行參數(shù)編碼工作了,其速率也由64kbit/s下降到了4kbit/s,并用自適應(yīng)的多重碼率取代了以往單調(diào)而唯一的碼率,而這些年中,寬帶語音編碼技術(shù)也產(chǎn)生了巨大的飛躍。根據(jù)語音編碼的時(shí)代變遷情況,其由下列三階段構(gòu)成。
第一個(gè)階段,波形編碼被語音處理所取代并開始涉及到參數(shù)編碼探索領(lǐng)域,從此打下語音模型的基礎(chǔ)。由于科學(xué)、有效的共振峰聲碼器面世,線性預(yù)測編碼(LPC:Linear Predictive Coding)也開始在語音分析合成領(lǐng)域發(fā)揮出巨大作用,在此基礎(chǔ)上產(chǎn)生了協(xié)方差、格型以及自相關(guān)這類效率高、實(shí)效性強(qiáng)的算法。此后又誕生了運(yùn)用瞬時(shí)頻率原理而研制出的相位聲碼器,根據(jù)倒譜特性而構(gòu)造成的同態(tài)聲碼器,并將聲碼器標(biāo)準(zhǔn)定在了2.4kbit/s。
第二個(gè)階段,語音編碼發(fā)展的快速時(shí)期,閉環(huán)分析算法的研究最為突出。 1985年,M.R.Schroeder以及B.S.Atal首次以閉環(huán)分析思路創(chuàng)造碼本激勵(lì)線性預(yù)測的運(yùn)算方式。以此算法為前提,產(chǎn)生了聯(lián)邦標(biāo)準(zhǔn)4.8kbit與FS-1016、G.728、G.729以及G.729A這些標(biāo)準(zhǔn),同時(shí)還將低時(shí)延碼以及共軛結(jié)構(gòu)代數(shù)碼這類具有激勵(lì)性質(zhì)的線性預(yù)測手段用于實(shí)踐。而且還產(chǎn)生了能夠滿足Internet雙速率(5.3/6.3kbit/ s)的標(biāo)準(zhǔn)G.723,并被廣泛運(yùn)用于多媒體領(lǐng)域[6]。 VoIP技術(shù)所遵循的標(biāo)準(zhǔn)一般是G.729、G.729A以及G.723。
第三階段以移動(dòng)通信在三次革新后所采取的編碼手段為對象,研究并設(shè)計(jì)相應(yīng)的寬帶標(biāo)準(zhǔn)。在此過程中,變速率技術(shù)有了較大的進(jìn)步,各式各樣的國標(biāo)與區(qū)域標(biāo)準(zhǔn)層出不窮。相應(yīng)的編碼包括:QCELP、EVRC、AMR、AMR-WB、SMV以及VMR-WB等等。以3G準(zhǔn)則為前提,我國挑選了AMR編碼來設(shè)計(jì)了時(shí)分同步碼分多址(TD-SCDMA);而美國所創(chuàng)造的CDMA2000標(biāo)準(zhǔn)一度選擇QCELP、VMR-WB以及EVRC來進(jìn)行編碼活動(dòng);而歐洲所創(chuàng)立的寬帶碼分多址(WCDMA)也選擇了AMR以及AMR-WB技術(shù),此外還有SMV這個(gè)預(yù)備技術(shù)[7]。
語音編碼算法一般都是以電話頻帶所產(chǎn)生的語音信號為對象,通常帶寬在300~3400Hz區(qū)間中。這樣就不會降低語音的主觀質(zhì)量[1],因?yàn)楹芏嗳哂喽葋碜杂谡Z音信號本身,如數(shù)據(jù)冗余、頻譜冗余、時(shí)域冗余等。為了實(shí)現(xiàn)語音質(zhì)量的改善,在通信系統(tǒng)總?cè)萘坎蛔冞@一前提下,變速率語音編碼為我們的第一選擇。 ETSI/3GPP于1999年制定了基于碼激勵(lì)線性預(yù)測(CELP)算法的語音壓縮編碼標(biāo)準(zhǔn)AMR-NB,應(yīng)用于第三代移動(dòng)通信W-CDMA系統(tǒng)中。
1.2 AMR-NB語音編碼原理
語音信號被AMR編碼器進(jìn)行八種不同速率的編解碼, 8kHz采樣是編碼器的輸入頻率,線性PCM編碼采用16bit進(jìn)行量化,20ms是一個(gè)語音幀的編碼操作間隔,這樣采樣點(diǎn)就是160個(gè)。 ACELP模型的參數(shù)被發(fā)送端編碼器進(jìn)行提取并傳輸,而解碼器在進(jìn)行接收時(shí),為了建立對應(yīng)的激勵(lì)信號,就會按照有關(guān)參數(shù)重建語音。
AMR編碼器的架構(gòu)圖如上圖1所示,其主要模塊的原理分析如下:
(1)在將要對語音信號進(jìn)行編碼時(shí),需開展預(yù)處理工作,也就是壓縮信號并進(jìn)行高通濾波器篩選。這類濾波器會阻截80Hz的頻率,從而化解低頻干擾,而通過壓縮之后,信號就能夠有效避免運(yùn)算溢出的問題。
(2)使基音分析得以簡化是開環(huán)基音分析的目標(biāo),并把開環(huán)基音估計(jì)值的較近區(qū)域作為閉環(huán)基音分析的范圍。以加權(quán)語音數(shù)據(jù)為基礎(chǔ)的是開環(huán)基音估計(jì),也就是說這個(gè)信號是通過預(yù)處理和加權(quán)濾波后形成的真正輸入信號。
(3)采用AMR語音編碼對脈沖響應(yīng)進(jìn)行計(jì)算,實(shí)際上指的是感知加權(quán)結(jié)合在一起的合成濾波器所產(chǎn)生的脈沖響應(yīng),這不僅參考了合成濾波器,還考慮了感知加權(quán)濾波器,能夠用來進(jìn)行自適應(yīng),也可以用來搜索固定碼本。
(4)對于自適應(yīng)碼本的查詢活動(dòng)需要以子幀為平臺,基音延時(shí)和濾波器增益就是其參數(shù),并包含了閉環(huán)檢索和矢量計(jì)算等工作。相關(guān)的搜索流程可適用于所有的語音模式,僅在對適用區(qū)間、分?jǐn)?shù)基音分辨率和內(nèi)插所要用到的FIR濾波器的選擇上有所差異。
(5)以交織的單脈沖序列設(shè)計(jì)為基礎(chǔ)的是固定碼本結(jié)構(gòu)。包含在碼本中的非零脈沖幅度可以為正也可以為負(fù),它在-1和1之間存在。對應(yīng)子幀和脈沖有40個(gè)位置可以被分為n組(n由語音方式種類決定)。將加權(quán)輸入語音以及解碼語音兩者之間所存在的均方誤差降到最低是搜索固定碼本執(zhí)行的原則。對閉環(huán)基音進(jìn)行搜索主要是通過將自適應(yīng)碼本進(jìn)行縮減來更新目標(biāo)信號的。
圖2 語音處理的硬件系統(tǒng)框圖
DSP芯片是一種專用的處理器,其主要功能在于當(dāng)模擬信號轉(zhuǎn)換為數(shù)字信號的時(shí)候?qū)ζ浼右约皶r(shí)的高速處理,在結(jié)構(gòu)設(shè)計(jì)上具有一定的特殊性,不同于微處理器,比較適合處理實(shí)時(shí)信號。DSP芯片能夠用來實(shí)現(xiàn)語音編解碼,按照語音編碼所具有的復(fù)雜程度,還有具體的應(yīng)用場合,對DSP進(jìn)行選擇,并按照DSP所呈現(xiàn)出的結(jié)構(gòu)特點(diǎn),對編碼加以優(yōu)化處理,這樣可以促使語音編碼的有效運(yùn)行,擴(kuò)大應(yīng)用場合的范圍。
表1 對10幀語音數(shù)據(jù)進(jìn)行編碼時(shí)調(diào)用的基本算子次數(shù)
2.1 硬件系統(tǒng)平臺
本文所采用的硬件系統(tǒng)平臺是直接采用TMS320DM642v1.2開發(fā)板。 TI(美國德州儀器)公司推行的新一代以C64內(nèi)核的32位高性能的定點(diǎn)數(shù)字媒體應(yīng)用處理器為基礎(chǔ)的TMS320DM642(Digital Media Processor),600MHz是它的CPU內(nèi)核頻率,能夠達(dá)到5760MIPS(百萬條指令/秒)的數(shù)字處理峰值。在對兩極緩存加以應(yīng)用的時(shí)候, DM642的外圍設(shè)置不僅強(qiáng)大,而且富于變化性。一級程序當(dāng)中的緩存L1P屬于一種直接的映射緩存,為128Kbit;此外,另一級程序中的數(shù)據(jù)緩存L1D屬于一個(gè)設(shè)置緩存,具有雙路結(jié)合性,也為128Kbit。如果L2存儲器的容量為256KB,那么就可以將其設(shè)置為一個(gè)映射存儲器,可以是高速緩存的,也可以把兩者結(jié)合起來。除此之外,基于外圍設(shè)置我們可以看出,它一般包括以下配件:用于配置的視頻端口3個(gè)、10/100Mb/s的以太網(wǎng)控制器(EMAC)1個(gè)、數(shù)據(jù)管理輸入輸出(MDIO) 1個(gè)、內(nèi)插VCXO控制接口1個(gè)、 McASPO 1個(gè)、12C總線1個(gè)、McBSPs 2個(gè)、32位通用定時(shí)器3個(gè)、用戶配置的十六位或三十二位主機(jī)接口(HPll6/HPl32) 1個(gè)、 PCI 1個(gè)、 16引腳的通用輸入輸出口(GPO) 1個(gè)(擁有可編程中斷/事件產(chǎn)生模式)和64位EMIFA 1個(gè)(可使同步、異步存儲器互聯(lián),還能溝通外圍)。
2.2 構(gòu)建硬件系統(tǒng)的整體設(shè)計(jì)
AMR-NB算法實(shí)際上是對純語音數(shù)據(jù)的一種處理,所以這一算法的實(shí)現(xiàn),僅僅會涉及DM642開發(fā)板當(dāng)中的一些資源,其硬件圖如圖2。
針對AMR-NB算法,其測評可以分兩階段實(shí)行,以測試序列語音的優(yōu)化處理為基礎(chǔ)的是第一階段,通過仿真器可以對其序列的信號傳輸進(jìn)行測評。改進(jìn)后AMR-NB算法在硬件上的實(shí)時(shí)實(shí)現(xiàn)一般可以在第二階段進(jìn)行。
2.3 軟件研發(fā)平臺
CCS2.2 (code composer studio)平臺用于AMR-NB算法的代碼優(yōu)化和調(diào)試,而VC++軟件平臺用于最標(biāo)準(zhǔn)參考代碼的驗(yàn)證。
TI公司研發(fā)了一款新的工具,主要用于DSPs軟件開發(fā),即CCS2.2 。其重要組成部分包括以下幾種,首先是產(chǎn)生C6000代碼的工具,還有軟件模擬器,并且還包括實(shí)時(shí)的基礎(chǔ)軟件,以及對主機(jī)數(shù)據(jù)進(jìn)行實(shí)時(shí)交換的一款軟件,此外還包括實(shí)時(shí)分析軟件,以及數(shù)據(jù)可視化的相關(guān)軟件。 CCS具備調(diào)試功能,并且具有較高的精度,這就使得DSP軟件在進(jìn)行代碼開發(fā)的時(shí)候不再那么困難。
從編程方式來看, CCS2.2 較為靈活,可以應(yīng)用C語言,也可以使用匯編語言,還能進(jìn)行線性匯編,此外也能夠應(yīng)用混合語言進(jìn)行編程。并且它在優(yōu)化編譯器的時(shí)候,其組合形式也不盡相同,如果源代碼沒有發(fā)生改變,那么可以對代碼性能加以相應(yīng)的改善。具備代碼剖析功能,有助于方便地進(jìn)行程序測試,并對其加以優(yōu)化。 CCS2.2 主要有模擬軟件以及硬件仿真兩種開發(fā)環(huán)境,在調(diào)試代碼階段,主要用模擬軟件這種開發(fā)環(huán)境,實(shí)時(shí)實(shí)現(xiàn)則需要在硬件仿真環(huán)境中進(jìn)行。
http://www.3gpp.org網(wǎng)站下載AMRNB算法的C源代碼,由Visual C++6.0平臺實(shí)現(xiàn)其對這種代碼的精確性測評。對它各種各樣的模式以及測評系列進(jìn)行測評是其主要功能。
針對一般的PC機(jī)代碼就是使用的AMRNB算法里的C源碼,就細(xì)節(jié)性的應(yīng)用而言,相應(yīng)的優(yōu)化處理應(yīng)依據(jù)平臺的特性來實(shí)現(xiàn),這樣可以使應(yīng)用的現(xiàn)實(shí)目標(biāo)得以達(dá)成。本文對AMR-NB算法的C代碼進(jìn)行闡釋、優(yōu)化,并詳細(xì)解析了其實(shí)時(shí)實(shí)現(xiàn)的細(xì)節(jié)化手段和相關(guān)手法。
3.1 AMR-NB編碼算法移植
在Visual C++6.0下運(yùn)行ARM_NB標(biāo)準(zhǔn)源碼時(shí),需要將編解碼的文件整理出來,在對應(yīng)VC工程下總共有112個(gè)C文件。之后,將以上提到的文件以及相應(yīng)的頭文件拷到在CCS2.2 下最新構(gòu)建的一個(gè)工程的目錄之下。編譯器在BuiltOption中添加-i"D: i myprojectsARM_NB",文件的包含路徑就是這個(gè),之后在工程項(xiàng)目下拉菜單里掃描所有文件,就能在DSP編解碼庫工程中加載標(biāo)準(zhǔn)源碼中的頭文件了。此外,對內(nèi)存空間要進(jìn)行合理的分配,因?yàn)镈M642只有32M的有限容量,寫一個(gè)CMD文件分配段的存儲小程序就很有必要了。
因?yàn)镈SP編解碼工程具有較多的全局變量以及靜態(tài)變量,編譯時(shí)有較大的出錯(cuò)可能,主要是由于全局以及靜態(tài)變量具有的默認(rèn)聲明都為near,所以尋址范圍僅能達(dá)到32Kbytes,如果要把這個(gè)改成far,那么advanced就會在Built 選項(xiàng)的編譯器中將Memory模式自動(dòng)改成far calls &data。 __MSDOS__;VAD1在VC程序的ARM_NB工程中得到了預(yù)編譯,所以這些也需要在Built選項(xiàng)中的compiler.->preprocessor里進(jìn)行同時(shí)添加。到這個(gè)時(shí)候,我們才算是完完整整地建立起了DSP編解碼工程。
除此之外,因?yàn)橐恍┘?xì)微差別存在于PC以及DSP平臺的某些數(shù)據(jù)結(jié)構(gòu)中,比如在VC下long是32位,在DSP平臺下是40位就是其最為重要的差別。因此就需要我們對typedef.h中的typedef long Word32進(jìn)行修改,將其手動(dòng)改為int型。
3.2 使用內(nèi)斂函數(shù)優(yōu)化
通過對CCS中所包含的profile進(jìn)行c代碼功能剖,我們能夠很容易地發(fā)現(xiàn)大多數(shù)的運(yùn)算時(shí)間均在basicop2.c以及code.c與decode.c等代碼中花費(fèi)。其中, basicop2.c的算子是標(biāo)準(zhǔn)源碼中的所有基礎(chǔ)運(yùn)算,如簡單的加減運(yùn)算和位移運(yùn)算等。這些基本運(yùn)算中的大多數(shù)在編解碼過程的調(diào)用次數(shù)很多,表1給出了編碼10幀語音時(shí)的調(diào)用次數(shù)統(tǒng)計(jì)。
C64xDsP提供了大量內(nèi)聯(lián)函數(shù),直接與匯編指令相對應(yīng),可以使C函數(shù)在不同的周期執(zhí)行,從而有效地提高工作效率,并且代碼尺寸也會得以降低。倘若一個(gè)函數(shù)屬于內(nèi)聯(lián)函數(shù),那么在對其進(jìn)行調(diào)用的時(shí)候,編譯器就會將其自動(dòng)地展開至其調(diào)用代碼中,就降低了調(diào)用成本。若將這些基本運(yùn)算用內(nèi)聯(lián)函數(shù)進(jìn)行優(yōu)化,則可大大提高編解碼庫的效率。
對長,短基本算子依據(jù)C64xDsP提供的內(nèi)聯(lián)函數(shù),可以給出直接定義來進(jìn)行運(yùn)用的我們就可以對其進(jìn)行直接定義,對無法進(jìn)行重定義的,就實(shí)行再一次的編寫。 C語言的短型飽和加法就是一個(gè)很好的例子,表2給出了替換AMR-NB基本算子所需的內(nèi)聯(lián)函數(shù)形式。
表2 AMR-NB基本算子所對于的內(nèi)聯(lián)函數(shù)
用profile測試code.c中的252到310行,此代碼段對音頻數(shù)據(jù)進(jìn)行讀取、編碼、存儲,未優(yōu)化前的周期數(shù)是240461626。對basicop2.c進(jìn)行內(nèi)聯(lián)優(yōu)化之后的周期數(shù)是49035445。
3.3 以編譯器為基礎(chǔ)的C優(yōu)化
對滿足ANSI標(biāo)準(zhǔn)的C代碼采用TMS320C6000的C編碼器可以實(shí)行編譯,其內(nèi)部包含著具備多個(gè)優(yōu)化級別的C優(yōu)化器,其級別可以根據(jù)不同需要加以設(shè)置,十分方便;為了縮短代碼長度、提高執(zhí)行效率,這樣的優(yōu)化也顯得尤為必要。
包含在編譯器中的C優(yōu)化器竄向能夠?qū)崿F(xiàn)對C代碼進(jìn)行優(yōu)化的功能,總共包括四個(gè)優(yōu)化級別,其中默認(rèn)的級別有-o0、 -o1、 -o2選項(xiàng),以及-o3。 -o2選項(xiàng)。不僅C優(yōu)化器可以實(shí)現(xiàn)優(yōu)化,而且C編譯器所包含的代碼產(chǎn)生器同樣能夠進(jìn)行優(yōu)化,并且獨(dú)立于優(yōu)化選項(xiàng)。 C優(yōu)化器主要是對軟件流水進(jìn)行優(yōu)化。針對軟件循環(huán),自-o2起的優(yōu)化器將處理相應(yīng)的軟件流水。軟件流水是一種的技術(shù),可以用來專門優(yōu)化循環(huán)代碼,通過流水產(chǎn)生的代碼極為緊湊,因此其編譯效率較高。
各種C文件在默認(rèn)狀態(tài)都會被C優(yōu)化器分別進(jìn)行優(yōu)化處理。假如可以在整個(gè)程序范圍內(nèi)對特定情況實(shí)行優(yōu)化,則還可以進(jìn)一步的提升優(yōu)化器的效率。在編譯項(xiàng)內(nèi)能夠添加-pm,把一個(gè)程序所涵蓋的各種C文件加以合并成,然后變成一個(gè)模塊再實(shí)行優(yōu)化處理,這是它所起到的主要作用。
本文經(jīng)編譯器-o3、-pm、-op2優(yōu)化,編碼10幀音頻的周期數(shù)是88978822,程序效率提高了63%。若聯(lián)合使用編譯器優(yōu)化和內(nèi)斂函數(shù)優(yōu)化,編碼10幀音頻的周期數(shù)是2998123,效率提高了98.7%。
數(shù)字通信系統(tǒng)中已廣泛使用了語音編碼技術(shù),尤其是移動(dòng)通信領(lǐng)域,其慢慢開始占據(jù)主導(dǎo)位置。同時(shí),語音編碼技術(shù)還在不斷的進(jìn)行著革新,主要表現(xiàn)在定速率向變速率的轉(zhuǎn)變和高速率向低速率的轉(zhuǎn)變。移動(dòng)通信3G已將AMR-NB語音編碼作為一種備用標(biāo)準(zhǔn)。所以怎樣提高其實(shí)際的運(yùn)行效率,縮小占用空間,在擴(kuò)展語音技術(shù)應(yīng)用領(lǐng)域上至關(guān)重要。 AMRNB原算法中產(chǎn)生的C標(biāo)準(zhǔn)代碼只能應(yīng)用在PC機(jī)上,其針對應(yīng)用平臺的運(yùn)行效率并不算高。本文充分利用了DM642平臺硬件資源的優(yōu)點(diǎn),設(shè)計(jì)了AMR-NB語音編碼算法的硬件平臺方案并實(shí)現(xiàn)了算法移植,移植后算法效率提高了98.7%。
[1] 王炳錫,王洪編著.變速率語音編碼[M].西安電子科技大學(xué)出版社,2004.6
[2] ETSI.EN 301 704 V7.2.1 Digital cellular telecommunications system (Phase 2+) (GSM);adaptive multi-rate(AMR) speech transcoding[S];ETSI,2000.
[3] 胡航.語音信號處理[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2002,135-171.
[4] 李昌立,吳善培.數(shù)字語音-語音編碼實(shí)用教程[M].北京:人民郵電出版社,2004,20-24
[5] 韓紀(jì)慶,張磊,鄭鐵然.語音信號處理[M].北京:清華大學(xué)出版社,2004.
[6] 王炳錫.語音編碼[M].西安:西安電子科技大學(xué),2002,1-8
[7] 王崇斌.G..722.2 的研究及其定點(diǎn)DSP的實(shí)現(xiàn):[M].武漢:華中科技大學(xué),2005,2-5.
羅功銀(1963),男,湖北監(jiān)利人,高級工程師,從事電力信息通信技術(shù)研究及運(yùn)行管理工作。
周正(1980),男,湖北武漢人,高級工程師,從事電力信息通信調(diào)控與視頻會議運(yùn)維管理工作。
馮偉東(1982),男,湖北武漢人,高級工程師,從事電力信息通信項(xiàng)目與技術(shù)管理工作。
AMR-NB算法的原理是本文研究的重點(diǎn),同時(shí)本文詳細(xì)地闡釋了該算法的每個(gè)模塊;經(jīng)過探究DM642芯片的硬件資源,對實(shí)現(xiàn)AMR-NB算法的硬件平臺的組建條件和計(jì)劃進(jìn)行闡明;本文還對AMR-NB算法的優(yōu)化和實(shí)現(xiàn)方法進(jìn)行了探究?;舅阕拥膬?nèi)聯(lián)函數(shù)宏定義也在本文提出的優(yōu)化工作范圍之內(nèi),重點(diǎn)研究了基于編譯器的C優(yōu)化。在使用AMR-NB算法優(yōu)化之前和優(yōu)化以后進(jìn)行了對比試驗(yàn),并進(jìn)行測評與解析,結(jié)果顯示,其算法通過優(yōu)化后在計(jì)算效率方面有了較大的改善。