??? 摘 要: 提出自適應(yīng)多速率寬帶語音編碼" title="語音編碼">語音編碼標(biāo)準(zhǔn)G.722.2,,重點(diǎn)研究了建立在代數(shù)碼激勵(lì)線性基礎(chǔ)上的信源編碼技術(shù),簡單介紹了包括活動(dòng)語音檢測,、舒適噪聲生成的源控制速率方案及錯(cuò)誤隱藏機(jī)制,。針對G.722.2算法復(fù)雜度高的特點(diǎn),對TI公司的定點(diǎn)DSP TMS320VC5416的硬件原理進(jìn)行重點(diǎn)研究,,給出了編解碼算法實(shí)現(xiàn)的軟件架構(gòu),,分析了軟件實(shí)現(xiàn)流程。
??? 關(guān)鍵詞: 語音編碼? 自適應(yīng)多速率? 代數(shù)碼激勵(lì)線性預(yù)測? 源控速率
?
??? 脈沖編碼調(diào)制(PCM)原理的出現(xiàn)標(biāo)志著現(xiàn)代數(shù)字通信技術(shù)研究的開始,。經(jīng)過半個(gè)多世紀(jì)的發(fā)展,,數(shù)字通信系統(tǒng)以其在可靠性、抗干擾性,、易集成性,、保密性,、交換速度和成本等方面的優(yōu)異性能取代了模擬通信系統(tǒng)。
??? 為壓縮語音編碼速率以提高通信系統(tǒng)的頻帶利用率,,擴(kuò)大通信容量,,ITU-T先后推出PCM、ADPCM,、G.728,、G.729、G.723.1等語音編碼標(biāo)準(zhǔn),。2001年,,3GPP和ITU-T采納G.722.2為GSM、WCDMA和3G系統(tǒng)的語音編碼解碼" title="編碼解碼">編碼解碼標(biāo)準(zhǔn),,2002年ITU-T又將其選為有線應(yīng)用的寬帶標(biāo)準(zhǔn),。
1 G.722.2寬帶語音編碼標(biāo)準(zhǔn)研究[1~7]
??? G.722.2寬帶語音編碼器是單個(gè)的集成語音編碼器,由9種速率模式組成,,位速率分別為:23.85,、23.05、19.85,、18.25,、15.85、14.25,、12.65,、8.85和6.6kbps。它包括活動(dòng)語音檢測(VAD),、舒適噪聲生成(CNG)以及對付傳輸錯(cuò)誤和丟包后的錯(cuò)誤隱藏機(jī)制組成,。
1.1 編碼算法部分
??? G.722.2以代數(shù)碼激勵(lì)線性預(yù)測為基礎(chǔ),通過線性預(yù)測分析,、基音預(yù)測分析和在12.8kHz采樣的固定碼本參數(shù)的分析,,以期最小化感覺加權(quán)差信號(hào)。處理時(shí)以幀為單位,,分析每幀語音抽取CELP參數(shù),,除此還計(jì)算出23.85kbps模式下高帶增益索引值。
1.2 解碼算法部分
??? 主要解碼器發(fā)送的參數(shù)(包括LP參數(shù),,自適應(yīng)碼本矢量和增益,,固定碼本矢量和增益以及高帶增益),分析合成重構(gòu)語音,。
1.3 源控制速率方案
??? 源控制速率的作用是讓語音編碼器用一個(gè)低速率來編碼只包含背景噪音的語音幀,,而不是編碼所有的語音。在GSM中,將這種模式稱為DTX(非連續(xù)傳輸)控制和操作,。編碼解碼器在采用這種模式編碼時(shí),,位速率是1.75kbps。網(wǎng)絡(luò)可以調(diào)整其傳輸方案獲得可變速率,。
1.4 丟幀/失幀錯(cuò)誤隱藏機(jī)制
??? 由于傳輸錯(cuò)誤,,幀可能會(huì)出錯(cuò),而在無線網(wǎng)絡(luò)和包交換網(wǎng)絡(luò)還可能造成幀丟失,。為了將單個(gè)錯(cuò)幀/失幀屏蔽,,錯(cuò)幀/失幀發(fā)生時(shí)會(huì)通知語音解碼器,而后初始化錯(cuò)誤隱藏的過程,。在語音合成時(shí)使用一組預(yù)測參數(shù),,網(wǎng)絡(luò)通過設(shè)置被傳輸語音幀的類型標(biāo)志位來指明發(fā)生了錯(cuò)幀/失幀或者丟失SID幀。
2 TMS320VC5416的硬件平臺(tái)解決方案[8][9]
??? 采用 美國TI公司的54X系列定點(diǎn)DSP TMS320VC5416,,具有低功耗,、高性能等特點(diǎn)。
2.1 硬件平臺(tái)介紹
??? TMS320VC5416的主要特征有:
??? (1)優(yōu)化的CPU結(jié)構(gòu):增強(qiáng)的多總線結(jié)構(gòu),,數(shù)據(jù)總線具有總線保持特性,;40bit的算術(shù)邏輯單元(ALU),包括兩個(gè)獨(dú)立的40bit的累加器,,一個(gè)40bit的桶形移位器,;一個(gè)17×17的乘法器連接一個(gè)40bit專用加法器,可用來進(jìn)行非流水線式的單周期乘/累加(MAC)操作等,。
??? (2)存儲(chǔ)器:擴(kuò)展地址模式可最大尋址8M×16bit" title="16bit">16bit,;64K×16bit雙訪問片內(nèi)RAM;64K×16bit單訪問片內(nèi)RAM,;16K×16bit片內(nèi)ROM,。
??? (3)指令集:支持單指令循環(huán)和塊循環(huán)操作;塊存儲(chǔ)器傳送指令提供了高效的程序和數(shù)據(jù)存儲(chǔ)器管理,;支持32bit長字操作,;支持并行存儲(chǔ)/加載" title="加載">加載指令;支持條件存儲(chǔ)指令和中斷快速返回,;支持定點(diǎn)DSP的C語言編譯器。
??? (4)片上硬件資源:軟件可編程等待狀態(tài)發(fā)生器和可編程存儲(chǔ)單元轉(zhuǎn)換,;鎖相環(huán)(PLL)時(shí)鐘發(fā)生器,;一個(gè)16bit定時(shí)器;三個(gè)多通道緩沖串口(McBSPs),;六通道直接存儲(chǔ)訪問控制器,;增強(qiáng)型8/16bit并行主機(jī)接口(HPI)。
??? (5)速度:在3.3V(內(nèi)核電壓1.6V)供電時(shí),執(zhí)行周期是6.25ns(160MIPS),。
??? (6)電源:功耗低,,工作電源有3.3V、1.6V和1.5V(內(nèi)核電壓),,用節(jié)電模式IDLE1,、IDLE2、IDLE3指令作功率控制,,可禁止CLKOUT,。
2.2 直接存儲(chǔ)器訪問DMA
??? C5416的DMA擁有6個(gè)獨(dú)立的可編程通道,同時(shí)允許6個(gè)不同的DMA操作,。DMA控制器可以在不影響CPU情況下,,允許數(shù)據(jù)在片內(nèi)存儲(chǔ)器、片上外設(shè)和片外設(shè)備之間獨(dú)立傳輸,。主要特點(diǎn):DMA操作獨(dú)立于CPU,;擁有6個(gè)通道,DMA可以跟蹤6個(gè)獨(dú)立塊傳輸情況,;對于內(nèi)部和外部訪問,,DMA比CPU有更高優(yōu)先級;每一通道優(yōu)先級可編程,;每個(gè)通道的源,、目的地址寄存器值每次讀寫后可靈活配置,讀寫一次后地址可以為常數(shù),、后加一,、后減一或者被一個(gè)編程值修改;每次讀寫內(nèi)部傳送可由選擇的時(shí)間來初始化,;完成一半或整個(gè)數(shù)據(jù)塊傳送,,DMA向CPU發(fā)中斷;DMA可執(zhí)行雙字傳送,。
2.3 多通道緩沖串行口McBSP
??? C5416內(nèi)置了3個(gè)高速,、全雙工的McBSPs。通過McBSPs可直接接到其他DSP器件,、CODEC器件或系統(tǒng)內(nèi)其他器件,。主要特點(diǎn)有全雙工通信;雙緩沖數(shù)據(jù)寄存器,,允許連續(xù)數(shù)據(jù)流,;收發(fā)時(shí),獨(dú)立的幀和時(shí)鐘,;可直接連接T1/E1,、AC97等,;最大至128通道的多通道收發(fā);u律和A律壓擴(kuò)可選,;幀同步和數(shù)據(jù)時(shí)鐘的極性可選等,。
??? CPU和DMA控制器通過內(nèi)部外設(shè)總線對McBSP進(jìn)行訪問,當(dāng)McBSP同步到一個(gè)DMA通道時(shí),,數(shù)據(jù)可以集中在發(fā)送和接收緩沖區(qū),,并且整個(gè)緩沖區(qū)是連續(xù)的。當(dāng)DMA填充完整個(gè)緩沖區(qū)后,,就觸發(fā)一個(gè)中斷給CPU,。這就明顯降低了中斷延時(shí)和處理時(shí)間。
2.4 Bootloader技術(shù)
??? C54x DSP芯片一般都在片內(nèi)設(shè)置有BOOT程序,,其主要功能是:在上電時(shí)將用戶程序代碼從外部存儲(chǔ)器加載到程序存儲(chǔ)器并執(zhí)行,。加載程序途徑有從外部8位或16位EPROM加載,由主機(jī)通過8位或16位并行I/O口,、串口,、HPI以及自定義的自舉" title="自舉">自舉加載。其中自舉加載的過程如圖1所示,。
?
??? 本文介紹的代碼實(shí)現(xiàn)過程用到了外部FLASH的并口自舉,。并口自舉檢測過程如下:DSP首先從I/O空間的0xFFFFH位置讀取自舉表的起始地址,如果低8位地址有效,,則并行加載,;如果低8位數(shù)據(jù)無效,則DSP將從數(shù)據(jù)空間0xFFFFH位置讀取自舉表的起始地址,,同樣低8位有效則并行加載,,否則轉(zhuǎn)串行檢測。
3 編解碼算法的實(shí)時(shí)實(shí)現(xiàn)[9][10]
??? 匯編語言程序設(shè)計(jì)是TMS320VC5416應(yīng)用軟件設(shè)計(jì)的基礎(chǔ),,其主要任務(wù)是利用DSP芯片提供的匯編指令和偽指令編寫源程序完成指定的功能,。開發(fā)環(huán)境是TI公司的集成DSP軟件開發(fā)環(huán)境CCS,開發(fā)語言是匯編語言和C語言的混合編程,。
??? 由于G.722.2是多速率語音編碼,,所以在編碼解碼前要確定編碼模式,在硬件平臺(tái)實(shí)現(xiàn)時(shí),,通過修改C源代碼的編碼模式提取部分函數(shù),,從而給定每次編碼的速率模式,使代碼的實(shí)現(xiàn)不需要考慮信道傳輸情況,,只專注于編解碼的算法實(shí)現(xiàn),。
3.1 C語言和匯編的混合編程
??? 采用C語言與匯編的混合編程實(shí)現(xiàn)G.722.2標(biāo)準(zhǔn)的代碼。為了不破壞C環(huán)境,,改寫的匯編函數(shù)必須符合C函數(shù)的參數(shù)傳遞規(guī)則。在匯編程序設(shè)計(jì)時(shí),參數(shù)的傳遞主要遵循以下規(guī)則:
??? (1)函數(shù)的第一個(gè)參數(shù)存放在A寄存器,,后面的參數(shù)以逆序壓入堆棧,;如果參數(shù)有結(jié)構(gòu)體,則將結(jié)構(gòu)體的地址保存在A寄存器中,。
??? (2)如果參數(shù)中存在長操作數(shù),,則應(yīng)按照低位字先壓棧、高位字后壓棧的順序保存,,否則容易出錯(cuò),。
在編寫匯編函數(shù)時(shí),除了遵循匯編函數(shù)的調(diào)用規(guī)則外,,還必須對函數(shù)中用到的輔助寄存器進(jìn)行存放堆棧的保護(hù),,防止調(diào)用時(shí)修改被調(diào)用函數(shù)中使用的輔助寄存器。
3.2 系統(tǒng)軟件結(jié)構(gòu)
??? 整個(gè)系統(tǒng)軟件主要包括以下三個(gè)部分:初始化程序,、語音編碼解碼部分和語音接口程序部分,,整個(gè)軟件體系結(jié)構(gòu)如圖2所示。
??? 軟件各模塊的主要功能:(1)初始化部分完成編碼解碼和外設(shè)的初始化,;(2)語音編碼解碼部分進(jìn)行語音信號(hào)的編碼和解碼處理,;(3)語音接口部分是整個(gè)系統(tǒng)的最底層,完成語音信號(hào)在串口上的接收與發(fā)送,。
??? G.722.2語音編碼解碼實(shí)現(xiàn)軟件中,,主函數(shù)包含在main.c文件中。主程序的處理過程為:首先對DSP芯片,、A/D(D/A)芯片以及McBSP,、DMA初始化,然后打開中斷屏蔽控制器(IMR),,允許中斷請求,,進(jìn)入等
??? 待主循環(huán)啟動(dòng)DMA,同時(shí)串口開始接收數(shù)據(jù),。在接收過程中每接收完一幀數(shù)據(jù)時(shí),,DMA向CPU產(chǎn)生一次中斷,將一幀數(shù)據(jù)從中取出,,DMA緩沖區(qū)計(jì)數(shù)器清零以重新開始填充接收緩沖區(qū),。同時(shí)開始調(diào)用編碼解碼子程序?qū)ψx入的語音數(shù)據(jù)進(jìn)行壓縮處理,存儲(chǔ)處理后的輸出數(shù)據(jù)等待發(fā)送,;當(dāng)發(fā)送完一幀數(shù)據(jù)時(shí),,DMA向CPU產(chǎn)生一次中斷,緩沖區(qū)計(jì)數(shù)器清零,,并將已存儲(chǔ)的待輸出數(shù)據(jù)填入發(fā)送緩沖區(qū),,然后繼續(xù)對接收和發(fā)送緩沖區(qū)進(jìn)行檢測,,重復(fù)上述循環(huán)過程。程序設(shè)計(jì)了兩個(gè)獨(dú)立并行的DMA通道,,分別負(fù)責(zé)語音數(shù)據(jù)的發(fā)送和接收,,在不影響CPU的情況下可同時(shí)收發(fā)數(shù)據(jù),每發(fā)送或接收完一幀數(shù)據(jù)產(chǎn)生一次DMA中斷,。
重建語音的質(zhì)量是評價(jià)編碼解碼算法和系統(tǒng)性能的關(guān)鍵指標(biāo)之一,,可分為客觀評測和主觀評測標(biāo)準(zhǔn)。其中客觀評測標(biāo)準(zhǔn)主要是以3GPP提供的一套測試文件為DSP匯編程序正確性檢驗(yàn)的標(biāo)準(zhǔn),;主觀評測一般采用的是平均判分法(MOS),。本文的主觀評測是邀請少量人員進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果具有一定的可參考性,。實(shí)際測試時(shí),,利用導(dǎo)線將硬件平臺(tái)上的Mic接口和各種聲音源相連,耳機(jī)插孔輸出編碼解碼后的語音,,對解碼后的語音進(jìn)行試聽測試,。實(shí)驗(yàn)表明,以男生,、女生,、音樂等多種音源作為Mic輸入,系統(tǒng)具有良好的適應(yīng)性,。非正式試聽測試,,恢復(fù)語音保留了較好的說話人特征。通過對不同編碼速率的比較可知,,高速率語音編碼方式語音質(zhì)量明顯優(yōu)于低速率語音編碼方式,。
參考文獻(xiàn)
[1] 王炳錫.變速率語音編碼[M].西安:西安電子科技大學(xué)出版社,2004,,7.
[2] 程佩青.數(shù)字信號(hào)處理教程[M].北京:清華大學(xué)出版社,,2002,2.
[3] 3GPP,,TS 26.091:AMR Speech Codec,;Error concealment of lost frames[S].2002,6.
[4] 3GPP,,TS 26.092:AMR Speech Codec,;Comfort noise for AMR speech traffic channels[S].2002,6.
[5] 3GPP,,TS 26.093:AMR Speech Codec,;Source controlled rate operation[S].2004,4.
[6] 3GPP,,TS 26.094:AMR Speech Codec,;Voice activity?detector for AMR speech traffic channels[S].2002,,6.
[7] 3GPP,TS 26.101:Mandatory speech codec speech processing functions,;Adaptive Multi-Rate(AMR) speech codec?frame structure[S].2004,,9.
[8] TMS320VC5416 Fixed-Point digital signal processor data?manual[Z],,March 1999,,Revised January 2005.
[9] 戴明禎.TMS320C54x數(shù)字信號(hào)處理器原理、結(jié)構(gòu)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,,2001
[10] 宗戰(zhàn)華,,鄭建生.TMS320VC5416并行自舉的巧妙實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2004(12):77-80