韓紅幫,肖紅,李海雁
(昆明學(xué)院 現(xiàn)代教育技術(shù)中心,云南 昆明 650214)
基于IMBE語(yǔ)音編譯碼算法在PC機(jī)上的實(shí)時(shí)實(shí)現(xiàn)
韓紅幫,肖紅,李海雁
(昆明學(xué)院 現(xiàn)代教育技術(shù)中心,云南 昆明 650214)
對(duì)APCO 25集群通信系統(tǒng)中采用的改進(jìn)型多帶激勵(lì)(IMBE)語(yǔ)音編碼算法進(jìn)行了分析,在Windows XP環(huán)境下,基于VC++6.0開發(fā)平臺(tái),利用聲卡作為采集與播放設(shè)備,通過(guò)軟件編程實(shí)現(xiàn)語(yǔ)音信號(hào)的實(shí)時(shí)采集、IMBE編譯碼以及譯碼語(yǔ)音的播放處理。IMBE語(yǔ)音編碼算法占用帶寬較小,編碼語(yǔ)音質(zhì)量高,適合多媒體語(yǔ)音通信使用。
IMBE算法;APCO 25;聲卡編程;信號(hào)采集
隨著通信技術(shù)的快速發(fā)展,語(yǔ)音編碼技術(shù)發(fā)展迅速并得到廣泛應(yīng)用。多帶激勵(lì)(Multi-Band Excitation,MBE)語(yǔ)音編碼技術(shù)是美國(guó)MIT大學(xué)林肯實(shí)驗(yàn)室1988年提出的一種具有高語(yǔ)音質(zhì)量、低編碼速率的語(yǔ)音編解碼技術(shù),因其在小于4.8kbps速率上的優(yōu)越性能,該算法在多領(lǐng)域得到廣泛應(yīng)用。其改進(jìn)的IMBE算法是北美APCO 25集群通信系統(tǒng)第一代FDMA體制標(biāo)準(zhǔn)中采用的語(yǔ)音編碼標(biāo)準(zhǔn)算法,同時(shí)也是國(guó)際移動(dòng)衛(wèi)星組織INMARSAT和AUSAT移動(dòng)衛(wèi)星通信的語(yǔ)音編碼標(biāo)準(zhǔn)算法。在 APCO 25系統(tǒng)中,IMBE編碼速率為 4.4 kbps,編碼時(shí)延為20ms。其占用帶寬較小,編碼語(yǔ)音質(zhì)量高,特別適合多媒體語(yǔ)音通信使用。
目前針對(duì)該算法的實(shí)現(xiàn),數(shù)字語(yǔ)音系統(tǒng)公司(DVSI)等有專門的編譯碼芯片,但由于硬件條件限制,應(yīng)用不夠方便。本文基于Visual C++6.0軟件編程技術(shù),通過(guò)軟件編程調(diào)用Windows底層接口函數(shù)控制聲卡實(shí)現(xiàn)語(yǔ)音信號(hào)的實(shí)時(shí)AD采樣,并對(duì)采樣量化數(shù)據(jù)進(jìn)行IMBE語(yǔ)音編譯碼處理,最后將譯碼后的語(yǔ)音數(shù)據(jù)采用聲卡進(jìn)行實(shí)時(shí)播放處理[1]。
1.1 MBE語(yǔ)音編譯碼算法介紹
多帶激勵(lì)編碼(Multi-Band Excitation,MBE)算法是在頻域中將語(yǔ)音頻譜按照各基因諧波頻率分成若干個(gè)頻帶,對(duì)各個(gè)頻帶信號(hào)分別判斷是濁音(V)還是清音(U),如果是濁音,將以基音為周期的脈沖序列作為激勵(lì)信號(hào)產(chǎn)生相應(yīng)的合成語(yǔ)音;如果是清音,則以白噪聲作為激勵(lì)信號(hào)產(chǎn)生相應(yīng)的合成語(yǔ)音。最終的激勵(lì)信號(hào)由各帶激勵(lì)信號(hào)相加構(gòu)成,最后用激勵(lì)信號(hào)激勵(lì)聲道合成濾波器,合成出具有較高自然度的語(yǔ)音[2]。MBE編碼器不需要?dú)埐钚盘?hào)和碼書等,有較低的復(fù)雜度。MBE語(yǔ)音編碼系統(tǒng)原理框圖如圖1所示。
圖1 MBE編碼系統(tǒng)原理框圖Fig.1 Flow chart of the principle of MBE coding system
1.2 IMBE語(yǔ)音編譯碼算法介紹
IMBE編譯碼算法是MBE編譯碼算法的改進(jìn),其編碼器基于MBE語(yǔ)音模型,該編碼器基本方法是將待傳輸?shù)恼Z(yǔ)音信號(hào)加窗處理為多個(gè)相互交疊的語(yǔ)音幀,然后將每個(gè)語(yǔ)音幀與內(nèi)置的語(yǔ)音模型比對(duì),并根據(jù)相應(yīng)算法估算出一套模型參數(shù),再對(duì)這些模型參數(shù)量化編碼,最后進(jìn)行信道編碼處理并輸出編碼數(shù)據(jù)幀,譯碼過(guò)程為編碼過(guò)程的反過(guò)程[3]。在APCO25采用的IMBE編碼過(guò)程中,每20 ms語(yǔ)音數(shù)據(jù)為一幀語(yǔ)音幀,經(jīng)編碼后為88比特編碼幀,由U0至U7共8個(gè)向量數(shù)據(jù)組成,其中第U0至U3向量均為12比特,采用(23,12,7)golay編碼,第U4至U6向量長(zhǎng)度均為11比特,采用(15,11,3)漢明碼編碼,第U7向量為7比特,沒有進(jìn)行信道編碼。經(jīng)糾錯(cuò)編碼后各向量還存在擾碼和矩陣交織。最終輸出幀長(zhǎng)為144比特,速率為7.2 kbps的編碼數(shù)據(jù)。IMBE編碼器框圖如圖2所示。
圖2 IMBE語(yǔ)音編碼器Fig.2 IMBE speech coder
本文基于VC++6.0軟件平臺(tái),采用聲卡作為采集播放設(shè)備,通過(guò)軟件編程實(shí)現(xiàn)語(yǔ)音信號(hào)的采集播放及IMBE編、譯碼算法,最終在PC機(jī)上實(shí)現(xiàn)IMBE語(yǔ)音編譯碼算法。具體實(shí)現(xiàn)過(guò)程為:調(diào)用Windows底層函數(shù)控制聲卡,實(shí)現(xiàn)語(yǔ)音信號(hào)以8 kHz采樣,16比特量化方式進(jìn)行采集播放,對(duì)采集到的語(yǔ)音信號(hào)以每160樣點(diǎn)作為一幀送入IMBE編碼模塊進(jìn)行壓縮編碼,壓縮后編碼數(shù)據(jù)幀長(zhǎng)為88比特,對(duì)88比特編碼幀數(shù)據(jù)送入IMBE譯碼模塊進(jìn)行譯碼,獲取160樣點(diǎn)長(zhǎng)度的重建語(yǔ)音信號(hào),最后將語(yǔ)音信號(hào)送入聲卡播放模塊進(jìn)行播放處理[4]。在語(yǔ)音信號(hào)實(shí)時(shí)采集與播放實(shí)現(xiàn)過(guò)程中,為了實(shí)現(xiàn)聲卡采集與播放數(shù)據(jù)的實(shí)時(shí)性、連續(xù)性和可靠性,系統(tǒng)中采用了多線程多緩沖技術(shù),有效保證了數(shù)據(jù)的連續(xù)性和信號(hào)處理的實(shí)時(shí)性[5-6]。下面重點(diǎn)對(duì)IMBE編譯碼算法軟件實(shí)現(xiàn)過(guò)程進(jìn)行介紹。
2.1 IMBE語(yǔ)音編譯碼算法的軟件實(shí)現(xiàn)過(guò)程
根據(jù)IMBE語(yǔ)音編譯碼算法原理,采用面向?qū)ο笏枷耄幹艭IMBECod和CIMBEDec類分別實(shí)現(xiàn)語(yǔ)音信號(hào)的IMBE編碼和譯碼。
2.1.1 CIMBECod編碼類
該類為IMBE語(yǔ)音編碼類,主要實(shí)現(xiàn)對(duì)輸入該模塊的8 kHz采樣,16比特量化的語(yǔ)音樣點(diǎn)數(shù)據(jù)流進(jìn)行編碼,類的主要函數(shù)定義如下:
其中 imbe_encode(IMBE_PARAM*pParam,short voice [160],BOOLEAN imbe[88])函數(shù)完成語(yǔ)音幀編碼。pitch_est (IMBE_PARAM*pParam,short Frmes_buf)函數(shù)完成待編碼語(yǔ)音信號(hào)幀的音頻參數(shù)估計(jì)。sa_encode(IMBE_PARAM *pParam)函數(shù)完成譜幅度編碼處理。voiced_sa_calc(int num, short den)函數(shù)完成濁音譜幅度計(jì)算。unvoiced_sa_calc(int num,short den)函數(shù)完成清音譜幅度計(jì)算。 v_uv_det (IMBE_PARAM*pParam,short fft_buf)函數(shù)完成清濁音判決處理。函數(shù)中,IMBE_PARAM*pParam為自定義的結(jié)構(gòu)體變量,實(shí)時(shí)存儲(chǔ)更新編譯碼過(guò)程中相關(guān)參數(shù),該結(jié)構(gòu)體定義如下:
2.1.2 IMBEDec譯碼類
該類為IMBE語(yǔ)音譯碼類,主要實(shí)現(xiàn)對(duì)輸入該模塊的88比特編碼數(shù)據(jù)幀進(jìn)行譯碼處理,譯碼后輸出8 kHz采樣、16比特量化的160樣點(diǎn)語(yǔ)音數(shù)據(jù)。類的主要函數(shù)定義如下:
其中imbe_Decode(IMBE_PARAM*pParam,BOOLEAN imbe[88],short voice[160])函數(shù)完成編碼幀譯碼處理。sa_Decode(IMBE_PARAM*pParam)函數(shù)完成譜幅度譯碼處理。v_synt(IMBE_PARAM*pParam,short voice[160])函數(shù)完成濁音合成。uv_synt(IMBE_PARAM*pParam,short voice[160])函數(shù)完成清音合成。v_uv_decode(IMBE_PARAM*pParam)函數(shù)完成清濁音譯碼合成處理。sa_enh(IMBE_PARAM*pParam)函數(shù)完成合成語(yǔ)音的增強(qiáng)處理。
2.2 IMBE語(yǔ)音編譯碼算法的軟件接口封裝
為了使軟件編程接口簡(jiǎn)潔,使用方便,本文采用動(dòng)態(tài)鏈接庫(kù)方式對(duì)編譯碼類進(jìn)行封裝處理。生成IMBE_Vocoder.dll處理模塊,該模塊將CIMBECod編碼類和CIMBEDec譯碼類進(jìn)行封裝并實(shí)例化。主要定義了 CIMBECod m_Enc [ENCUSERSIZE]和CIMBEDec m_Dec[DECUSERSIZE]對(duì)象數(shù)組,支持多用戶同時(shí)使用,該模塊主要提供如下接口函數(shù):
其中 IMBEDll_EncInit函數(shù)和IMBEDll_DecInit函數(shù)分別完成各用戶線路的編、譯碼初始化工作;IMBEDll_Encode函數(shù)和IMBEDll_Decode函數(shù)分別完成各用戶線路幀數(shù)據(jù)的編、譯碼工作,imbe數(shù)組承載88比特編碼幀比特?cái)?shù)據(jù),signal數(shù)組承載160*16bits的語(yǔ)音樣點(diǎn)數(shù)據(jù)。
本文介紹了IMBE語(yǔ)音編譯碼算法,基于VC++6.0的編程實(shí)現(xiàn)過(guò)程,最后開發(fā)了相應(yīng)系統(tǒng),達(dá)到預(yù)期目的。經(jīng)實(shí)踐證明,合成語(yǔ)音較好地保留了講話人的特征,其清晰度和自然度都比較好。IMBE算法占用帶寬小、編碼質(zhì)量高,性能好,對(duì)語(yǔ)音編譯碼研究開發(fā)人員具有較好的實(shí)踐和借鑒意義。
[1]曲喜強(qiáng),劉哲.基于聲卡的音頻信號(hào)采集與分析系統(tǒng)設(shè)計(jì)[J].電子測(cè)試 2009(2):75-77. QU Xi-qiang,LIU Zhe.Audio signal acquisition and analysis system design based on sound card[J].Electronic Test,2009 (2):75-77.
[2]陸奕奕,袁三男,宋文濤.AMBE語(yǔ)音壓縮算法實(shí)現(xiàn)及改進(jìn)[J].通信技術(shù),1998(4):63-66. LU Yi-yi,YUAN San-nan,SONG Wen-tao.The implement and improvement of AMBE voice compressing algorthm[J]. Commumicatios Technology,1998(4):63-66.
[3]Telecommunications Industry Association[S].Project 25 Vocoder Description BABA December 2003.
[4]葉向陽(yáng),黃國(guó)策,余侃民,等.計(jì)算機(jī)聲卡在實(shí)時(shí)采樣監(jiān)控系統(tǒng)中的開發(fā)應(yīng)用[J].微計(jì)算機(jī)應(yīng)用,2006,27(5):582-584. YE Xiang-yang,HUANG Guo-ce,YU Kan-min,et al.The application of soundcard in the real--time monitoring system [J].Microcomputer Applications,2006,27(5):582-584.
[5]張兵.基于多緩沖區(qū)實(shí)時(shí)音頻采集和傳輸實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2006,32(12):272-273. ZHANG Bing.Real-time audio collection and transmission implementation based on multi-buffer [J].Computer Engineering,2006,32(12):272-273.
[6]董華,易克初,田斌.一種基于聲卡的數(shù)據(jù)采集系統(tǒng)[J].山西電子技術(shù),2006(1):3-4. DONG Hua,YI Ke-chu,TIAN Bin.A data acquisition system based on sound card[J].SHANXI Electronic Technology,2006 (1):3-4.
Real-time implementation based on algorithms of IMBE speech codec in PC
HAN Hong-bang,XIAO Hong,LI Hai-yan
(The Center of Modern Education Technology,Kunming University,Kunming 650214,China)
This paper is intended to discuss in detail the Improved Multi-Band Excitation(IMBE)speech coding algorithm, which is used to APCO 25 trunking communication system.In the Windows XP environment,based on the VC++6.0 development platform,using the sound card as the acquisition and playback equipment,through software programming to realize real-time speech signal acquisition,IMBE Co-decoding and voice playback processing.IMBE speech coding algorithm takes up less bandwidth,high quality speech coding,especially suitable for multimedia communication.
IMBE algorithm;APCO 25;sound card programming;signal collecting
TN912.3
A
1674-6236(2015)07-0186-03
2014-07-17 稿件編號(hào):201407134
韓紅幫(1977—),男,云南曲靖人,碩士,高級(jí)實(shí)驗(yàn)師。研究方向:現(xiàn)代教育技術(shù)。