孫鳳梅,薛顏,李克靖
(中國(guó)電子科技集團(tuán)公司第五十八研究所江蘇無(wú)錫 214035)
近年來(lái),語(yǔ)音通信系統(tǒng)發(fā)展迅速,需要使用不同速率的語(yǔ)音編解碼算法,在有限的帶寬中對(duì)語(yǔ)音進(jìn)行編碼去冗余并準(zhǔn)確地傳遞[1]。面對(duì)越來(lái)越復(fù)雜的通信環(huán)境,低速率語(yǔ)音編解碼算法能夠在保證了合成語(yǔ)音質(zhì)量的同時(shí),有效地提高通信系統(tǒng)容量,主要應(yīng)用于軍事保密通信,衛(wèi)星通信和數(shù)字語(yǔ)音存儲(chǔ)系統(tǒng)[2]。低速率語(yǔ)音編解碼算法可以分為波形編碼、參數(shù)編碼及混合編碼。典型的編碼算法有:多帶激勵(lì)編碼、混合激勵(lì)線性預(yù)測(cè)編碼、正弦變化編碼、正弦激勵(lì)線性預(yù)測(cè)(SELP)等[3-7]。其中清華大學(xué)自主研發(fā)的SELP模型基于線性預(yù)測(cè)技術(shù),具有提取參數(shù)方便、合成語(yǔ)音質(zhì)量高的特點(diǎn),是極具潛力的低速率語(yǔ)音編碼模型?;赟ELP模型已經(jīng)實(shí)現(xiàn)了各種低速率編解碼算法[8]。然而,通過(guò)研究發(fā)現(xiàn),當(dāng)清濁音判決不夠準(zhǔn)確或發(fā)生基音周期的倍/半頻錯(cuò)誤時(shí),一些碼率下的語(yǔ)音編碼算法的合成語(yǔ)音會(huì)出現(xiàn)機(jī)器音較重、偶發(fā)性嘶啞及變調(diào)等問(wèn)題。因此,為得到更高質(zhì)量的合成語(yǔ)音,需要提高參數(shù)提取的精度[9]。
目前,語(yǔ)音編解碼專用集成電路并不是很多。其中最著名的是美國(guó)DVSI公司生產(chǎn)的AMBE系列的聲碼器芯片,包括AMBE-1000TM、AMBE-2000TM、AMBE-3000TM等系列。其中,AMBE-3000TM是DVSI公司生產(chǎn)的新一代編解碼芯片,能夠提供最低2.0 kb/s的編碼速率,編碼速率可以在2.0~9.6 kb/s之間靈活選擇[10-11]。但多數(shù)情況下,用戶需要根據(jù)實(shí)際應(yīng)用設(shè)計(jì)專用的編解碼算法并實(shí)現(xiàn)其硬件模塊,因此在當(dāng)前的衛(wèi)星通信、數(shù)字移動(dòng)通信、數(shù)字聲音存儲(chǔ)等領(lǐng)域,通過(guò)數(shù)字信號(hào)處理器(DSP)實(shí)現(xiàn)的實(shí)時(shí)語(yǔ)音編解碼器得到越來(lái)越廣泛的應(yīng)用[12-15]。
文中設(shè)計(jì)實(shí)現(xiàn)了一種基于TMS320F28335 DSP的多速率聲碼器,該聲碼器可實(shí)現(xiàn)基于SELP算法的2.4 kb/s、1.2 kb/s及0.6 kb/s 3種低速率的語(yǔ)音編解碼算法。在參數(shù)提取過(guò)程中,通過(guò)支持向量機(jī)分類器進(jìn)行清濁音的判決。根據(jù)算法復(fù)雜度及DSP芯片結(jié)構(gòu)對(duì)算法進(jìn)行優(yōu)化,在硬件集成和調(diào)試后,實(shí)時(shí)實(shí)現(xiàn)了聲碼器通信系統(tǒng)。
SELP算法采用與基因頻率成倍頻關(guān)系的正弦信號(hào)激勵(lì),使需要編碼量化傳輸?shù)恼Z(yǔ)音參數(shù)數(shù)目大大降低,從而降低了編碼速率。
SELP語(yǔ)音編碼算法原始輸入語(yǔ)音為PCM信,采樣率為8 kHz。算法采用分幀處理方法,每幀語(yǔ)音包含樣點(diǎn)數(shù)160~240。本文算法中,子幀幀長(zhǎng)為25 ms,采樣點(diǎn)數(shù)為200個(gè)。圖1為SELP模型的編碼框圖。
圖1 SELP編碼端框圖
輸入語(yǔ)音首先進(jìn)行預(yù)處理。是對(duì)8 kHz濾波后的語(yǔ)音信號(hào)再進(jìn)行以下的分析處理。線性預(yù)測(cè)分析得到10維的預(yù)測(cè)系數(shù)(LPC)。通常將LPC系數(shù)轉(zhuǎn)換為頻域上的線譜對(duì)(LSF)參數(shù)進(jìn)行量化傳輸。余量譜提取時(shí)先進(jìn)行512點(diǎn)DFT變換,將最大峰值作為諧波幅度。SELP算法采用子相關(guān)法提取基音周期。采用帶通語(yǔ)音信號(hào)的子相關(guān)函數(shù)和其包絡(luò)信號(hào)的自相關(guān)函數(shù)聯(lián)合判斷子帶的清濁狀態(tài)。為了提高算法的抗誤碼性能,采用對(duì)殘差信號(hào)的處理得到短時(shí)能量參數(shù)。
在特征參數(shù)的量化時(shí),一般共有5個(gè)語(yǔ)音參數(shù)用于量化編碼,將碼流傳遞到解碼端。但在低速率情況下,為了節(jié)省比特?cái)?shù),在矢量量化時(shí)采用了超幀策略,以2幀或3幀構(gòu)成一個(gè)超幀為運(yùn)算單元。1200 b/s的編解碼算法由2個(gè)連續(xù)語(yǔ)音子幀組成一個(gè)超級(jí)幀,600 b/s則是由3個(gè)子幀組成一個(gè)超級(jí)幀。另外,余量譜參數(shù)可以不參加量化,在解碼端用歸一化“1”值代替。3種不同編解碼速率具體參數(shù)的量化比特分配見表1。
表1 SELP算法比特分配
在解碼端,將接收到的各個(gè)特征參數(shù)進(jìn)行反量化,得到基音周期、線譜對(duì)參數(shù)等5組特征參數(shù)。SELP模型的解碼原理框圖如圖2所示。激勵(lì)信號(hào)采用清音成分與濁音成分混合組成。根據(jù)子帶清濁判決結(jié)果,其中清音成分用白噪聲描述,由噪聲發(fā)生器產(chǎn)生。濁音成分由一組不同幅度、頻率變化的的正弦信號(hào)疊加而成。最后,合成的激勵(lì)信號(hào)通過(guò)合成濾波器、后濾波器濾波后得到合成語(yǔ)音。
圖2 SELP解碼端框圖
支持向量機(jī)在線性分類器的基礎(chǔ)上,引入結(jié)構(gòu)風(fēng)險(xiǎn)最小原理和最優(yōu)化理論,根據(jù)有限的樣本信息,在模型學(xué)習(xí)能力和復(fù)雜性之間尋求最佳折衷,克服了“維數(shù)災(zāi)難”[16]。
假設(shè)訓(xùn)練樣本集有n個(gè)訓(xùn)練樣本,分為兩種類別:(x1,y1),…,(xn,yn),xi∈Rk,其中yi∈{-1,1}是分類標(biāo)簽。典型SVM的主要思想是構(gòu)造一個(gè)間隔最大的最優(yōu)超平面wTx+b=0。如果存在一個(gè)超平面可以將所有訓(xùn)練數(shù)據(jù)無(wú)錯(cuò)誤地分開,并且離超平面最近的向量與超平面之間的距離是所有可能情況中最大的。即對(duì)于w和b,滿足以下條件:
由統(tǒng)計(jì)學(xué)習(xí)理論可知,使分類距離最大實(shí)際上就是使推廣性的界中的置信范圍最小。通過(guò)引入松弛變量ξi求解以下優(yōu)化問(wèn)題得到參數(shù)w和b,得到廣義的最優(yōu)分類面:
約束條件:
其中C為懲罰因子,C值越大表示對(duì)錯(cuò)誤分類的懲罰越大。
提取語(yǔ)音特征參數(shù)的原則是:特征參數(shù)要對(duì)不同模式的分類可靠有效且取值范圍在待分類別中的交疊較少。下面給出本文算法所涉及到的最大自相關(guān)值(r),過(guò)零率(z),短時(shí)幀能量(e)和譜傾斜度(t)等4個(gè)特征參數(shù)的定義。
其中,N為每幀樣點(diǎn)數(shù),s(i)為經(jīng)過(guò)濾波后的語(yǔ)音信號(hào)。
通過(guò)對(duì)比分析,可以較為明顯地看出:濁音段的最大自相關(guān)值和短時(shí)幀能量較大,過(guò)零率較??;清音段的有較小最大自相關(guān)值和短時(shí)幀能量,及較大的過(guò)零率。譜傾斜度可以在一定程度上提高訓(xùn)練所得分類器的分類準(zhǔn)確度。對(duì)已經(jīng)標(biāo)記完成的語(yǔ)音樣本提取4個(gè)參數(shù)組成特征向量X=(r,z,e,t),輸入SVM進(jìn)行訓(xùn)練。
聲碼器是數(shù)字通信系統(tǒng)中一個(gè)關(guān)鍵的部分,通常要求其體積盡量小,成本和功耗盡量低、可靠性高。因此,在不影響系統(tǒng)性能的前提下盡可能簡(jiǎn)化硬件設(shè)計(jì)。
TMS320F28335 DSP是高性能低功耗32位數(shù)字信號(hào)處理器,工作頻率為150 MHz,資源豐富,數(shù)據(jù)處理能力強(qiáng),功耗低,集成了256k的Flash存儲(chǔ)器及34k的SRAM存儲(chǔ)器。由于完成3種速率下的編解碼算法的代碼量和所需的量化碼表所需的存儲(chǔ)空間非常大,TMS320f28335能夠滿足多速率語(yǔ)音編解碼算法對(duì)存儲(chǔ)空間的需求,不需要額外設(shè)計(jì)存儲(chǔ)器,即可用于完成語(yǔ)音編碼算法和控制功能。
模擬音頻接口部分采用TLV320AIC23B芯片。該芯片是一款通用型低功耗16位AD,DA音頻接口芯片,用于處理語(yǔ)音以及寬帶音頻,是可移動(dòng)數(shù)字音頻應(yīng)用系統(tǒng)中模擬輸入輸出的理想選擇。
TLV320AIC23B與TMS320f28335都是TI公司提供的高速芯片,兩者在速度和時(shí)序上能夠完全匹配,實(shí)現(xiàn)芯片間的無(wú)縫連接。圖3為聲碼器硬件結(jié)構(gòu)圖。
圖3 聲碼器硬件結(jié)構(gòu)
TLV320AIC23B的編解碼器數(shù)字接口可直接與TMS320F28335的多通道緩沖串口(MCBSP)連接。其中BCLK提供位時(shí)鐘信號(hào),F(xiàn)S提供幀同步信號(hào),DIN為串行數(shù)據(jù)輸入,DOUT為串行數(shù)據(jù)輸出。TMS320F28335的I2C與TLV320AIC23B的控制口連接,對(duì)TLV320AIC23B的寄存器進(jìn)行設(shè)置,配置語(yǔ)音幀速率為8 kHz,采樣精度為16 bit。
3.1.1 存儲(chǔ)空間配置
存儲(chǔ)空間的合理分配是聲碼器實(shí)現(xiàn)的基礎(chǔ),高效的存儲(chǔ)空間配置可以提高系統(tǒng)地處理速率,滿足聲碼器實(shí)時(shí)處理要求。在完成系統(tǒng)設(shè)計(jì)后,需要將程序固化在FLASH。然而,CPU訪問(wèn)FLASH一般至少需要5個(gè)以上的等待周期。因此,在實(shí)際的實(shí)時(shí)處理系統(tǒng)中是需要通過(guò)Bootloader將程序從FLASH上加載到SRAM中并在SRAM中運(yùn)行,使代碼運(yùn)行最有效率。具體操作如下:
1)將code_start段中LB_c_int00語(yǔ)句更改為L(zhǎng)B copy_sections;
2)將wd_disable段中中.text語(yǔ)句更改為.sect“wddisable”;
3)將wd_disable段中中LB_c_int00語(yǔ)句更改為L(zhǎng)B copy_sections;
4)通過(guò)#pragma DATA_SECTION指令將數(shù)據(jù)放置SRAM上。
表2 聲碼器占用存儲(chǔ)器資源
從表2中可以看出,應(yīng)用程序及編解碼數(shù)據(jù)量比較大,片內(nèi)RAM空間不足以把所有的代碼和數(shù)據(jù)搬移到片內(nèi)RAM,因此在搬移程序會(huì)將所有.text搬移到SRAM,而通過(guò)#pragma DATA_SECTION指令將部分碼表數(shù)據(jù)放置SRAM上。
3.1.2 程序匯編優(yōu)化
通過(guò)集成開發(fā)環(huán)境CCS(Code Composer Studio,CCS)工具的profile功能可以分析統(tǒng)計(jì)算法各部分運(yùn)算復(fù)雜度,測(cè)試所有函數(shù)運(yùn)算量。根據(jù)profile的輸出結(jié)果,按照復(fù)雜度從高到低的順序編寫DSP匯編程序,直到達(dá)到實(shí)用水平。可以采用匯編語(yǔ)音實(shí)現(xiàn)。算法中調(diào)用頻繁,消耗較多CPU周期數(shù)的函數(shù)用匯編實(shí)現(xiàn),大大提高程序的處理速度,實(shí)現(xiàn)了語(yǔ)音編解碼的實(shí)時(shí)處理。
由于聲碼器能夠?qū)崿F(xiàn)0.6 k/1.2 k/2.4 kbps 3種速率的編解碼算法,在系統(tǒng)工作前,需要確定系統(tǒng)編解碼的速率。不同于AMBE系列芯片通過(guò)外部控制MCU發(fā)送控制命令字來(lái)改變聲碼器速率的方式,我們的聲碼器通過(guò)外部引腳高低電平的配置,直接來(lái)確定編解碼速率。具體控制接口的配置如表2。當(dāng)MOD1與MOD2都配置為高電平時(shí),編解碼速率為2.4 kbps。當(dāng)MOD1配置為高電平,MOD2配置為低電平時(shí),編解碼速率為1.2 kbps。當(dāng)MOD1配置為低電平,MOD2配置為高電平時(shí),編解碼速率為0.6 kbps。其中MOD1和MOD2為TMS320F28335的兩個(gè)通用GPIO。
表3 編解碼速率控制接口的配置
基于多速率聲碼器實(shí)現(xiàn)的語(yǔ)音通信系統(tǒng)的工作流程如圖4所示。完成系統(tǒng)初始化、語(yǔ)音參數(shù)配置、語(yǔ)音編碼和語(yǔ)音解碼。
圖4 系統(tǒng)工作流程圖
系統(tǒng)開機(jī)加電或復(fù)位后,TMS320F28335運(yùn)行自引導(dǎo)程序,將片上FLASH中的程序和數(shù)據(jù)加載至DSP內(nèi)部SRAM。通過(guò)設(shè)置寄存器,初始化DSP系統(tǒng)和外圍電路,打開MCBSP、SCI中斷源。
讀取速率控制接口的值,根據(jù)速率控制接口的設(shè)置,確定編解碼速率,并初始化編解碼所需要的參數(shù)。數(shù)據(jù)化的語(yǔ)音信號(hào)通過(guò)多通道緩存串口傳送到DSP內(nèi)部的緩沖區(qū),送入編碼器進(jìn)行編碼,得到的數(shù)據(jù)流經(jīng)SCI傳輸。從SCI接收到的數(shù)據(jù)流傳給DSP內(nèi)部緩沖區(qū),送入解碼端解碼,得到的數(shù)字語(yǔ)音經(jīng)MCBSP傳給DAC,轉(zhuǎn)換成模擬信號(hào)輸出。
在算法程序優(yōu)化后進(jìn)行軟件仿真測(cè)試,測(cè)試的語(yǔ)音格式為PCM,采樣為8000 Hz,語(yǔ)音數(shù)據(jù)精度為16bit,選自中國(guó)科學(xué)院聲學(xué)研究所語(yǔ)音數(shù)據(jù)庫(kù)。在清濁音判決中,SVM訓(xùn)練樣本幀長(zhǎng)為25 ms,訓(xùn)練樣本共有2500幀。發(fā)音人為兩男兩女,其中清音約占55%,濁音45%。采用國(guó)際電信聯(lián)盟(International Telecommunication Union,ITU)建議的 p.862 MOS分測(cè)試軟件,測(cè)試指標(biāo)為平均意見得分(Mean Opinion Score,MOS)。通過(guò)測(cè)試,平均MOS得分為3.197。圖為3種碼率下原始語(yǔ)音與合成語(yǔ)音的波形對(duì)比圖。
圖5 原始語(yǔ)音與合成語(yǔ)音的波形圖比較
為了測(cè)試了聲碼器的實(shí)時(shí)處理效果,在軟件優(yōu)化、硬件集成后,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的語(yǔ)音通信系統(tǒng)。下圖為已經(jīng)完成的聲碼器語(yǔ)音通信系統(tǒng)實(shí)物圖。
圖6 聲碼器語(yǔ)音通信系統(tǒng)實(shí)物圖
通信系統(tǒng)中,需要兩塊聲碼器,聲碼器A和B都能夠同時(shí)進(jìn)行編解碼,聲碼器的碼流通過(guò)SCI接口直接發(fā)送接收,通信波特率配置為115200 bps,無(wú)奇偶校驗(yàn)位。從安排多人進(jìn)行試聽的反映來(lái)看,合成語(yǔ)音清晰自然,偶發(fā)性嘶啞和變調(diào)問(wèn)題得到一定的改善。聲碼器實(shí)現(xiàn)了2.4 kb/s,1.2 kb/s和0.6 kb/s 3種速率的編解碼算法,合成語(yǔ)音清晰自然。該聲碼器通過(guò)端口配置進(jìn)行碼率轉(zhuǎn)換,具有較好的通用性和靈活性。
文中設(shè)計(jì)實(shí)現(xiàn)的聲碼器軟件方面完成了2.4kbps、1.2 kbps及0.6 kbps 3種不同速率的編解碼算法,能夠適應(yīng)不同環(huán)境下的通信場(chǎng)合。在參數(shù)提取過(guò)程中,通過(guò)支持向量機(jī)分類器進(jìn)行清濁音的判決,能夠在一定程度上解決合成語(yǔ)音的偶發(fā)性嘶啞、變調(diào)等問(wèn)題。聲碼器硬件設(shè)計(jì)能夠充分利用TMS320F28335 DSP的硬件資源,在成本、體積和功耗方面有一定優(yōu)勢(shì),通過(guò)端口配置進(jìn)行碼率轉(zhuǎn)換,具有較好的通用性和靈活性。實(shí)驗(yàn)結(jié)果表明,該聲碼器合成語(yǔ)音質(zhì)量清晰自然,達(dá)到了預(yù)期的效果,在其低速率語(yǔ)音通信場(chǎng)合具有一定的應(yīng)用前景。