賈 亮 趙鵬飛 危國(guó)騰
[摘要]為了滿足數(shù)字通信及其它商業(yè)應(yīng)用的需求,語(yǔ)音壓縮編碼技術(shù)得到了迅速發(fā)展。特別是低碼率語(yǔ)音編碼的研究具有十分重要的現(xiàn)實(shí)意義。在現(xiàn)有的語(yǔ)音編碼研究中,混合激勵(lì)線性預(yù)測(cè)編碼(MELP)是一種比較好的方法。對(duì)MELP編解碼算法的原理進(jìn)行簡(jiǎn)要分析,討論如何在MATLAB上實(shí)現(xiàn)該算法,并研究其關(guān)鍵技術(shù),最后對(duì)測(cè)試結(jié)果進(jìn)行分析和比較。
[關(guān)鍵詞]MELP語(yǔ)音編碼混合激勵(lì)線譜頻率
中圖分類號(hào):TJ8文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)1210021-02
一、引言
隨著通信技術(shù)以及互聯(lián)網(wǎng)語(yǔ)音實(shí)時(shí)傳輸技術(shù)的迅速發(fā)展,對(duì)語(yǔ)音的傳輸速率和存儲(chǔ)容量都提出了很高的要求,解決這些問(wèn)題的主要途徑之一就是語(yǔ)音編碼。因此,語(yǔ)音編碼的研究,特別是低碼率語(yǔ)音編碼的研究具有十分重要的現(xiàn)實(shí)意義。
在現(xiàn)有的語(yǔ)音編碼研究中,混合激勵(lì)線性預(yù)測(cè)編碼(MELP)是一種比較好的方法,它結(jié)合了二元激勵(lì)、碼激勵(lì)和多帶激勵(lì)的優(yōu)點(diǎn),將短時(shí)語(yǔ)音段劃分為若干子帶,在每個(gè)子帶中分別進(jìn)行清濁音判斷;在合成端,采用周期性脈沖序列和隨機(jī)噪聲的混合序列去激勵(lì)語(yǔ)音合成濾波器,能在較低的碼率下得到較好的再生語(yǔ)音。2.4kb/s混合激勵(lì)線性預(yù)測(cè)語(yǔ)音編碼(MELP)的編碼方法已經(jīng)被確立為美國(guó)新的聯(lián)邦語(yǔ)音編碼標(biāo)準(zhǔn)。
二、MELP編解碼算法
MELP算法聲碼器作為美軍聲碼器技術(shù)的重要類型,在各國(guó)及各領(lǐng)域有廣泛的應(yīng)用。整個(gè)算法分為三個(gè)部分:語(yǔ)音參數(shù)提取、參數(shù)量化、解碼。
(一)語(yǔ)音特征參數(shù)提取
模擬輸入語(yǔ)音首先經(jīng)過(guò)低通濾波器,然后轉(zhuǎn)化成數(shù)字語(yǔ)音。采樣率為8KHz,按180個(gè)樣點(diǎn)(22.5ms)為一幀提取語(yǔ)音參數(shù)。MELP編碼技術(shù)將語(yǔ)音分為清音、濁音和抖動(dòng)濁音三種狀態(tài)。一幀語(yǔ)音信號(hào)經(jīng)過(guò)一個(gè)4階切比雪夫高通濾波器,濾除50Hz的工頻干擾,經(jīng)過(guò)濾波之后的語(yǔ)音信號(hào)稱為輸入語(yǔ)音信號(hào)。這一幀語(yǔ)音信號(hào)再做以下處理:
1.基音分析:首先經(jīng)過(guò)1KHz的巴特沃思低通濾波器,用歸一化互相關(guān)法進(jìn)行基音粗估,得到整數(shù)基音值T,然后進(jìn)行分?jǐn)?shù)基音分析,采用內(nèi)插方法,求得分?jǐn)?shù)基音估計(jì)的小數(shù)部分,此時(shí)分?jǐn)?shù)基音值P為整數(shù)基音T與分?jǐn)?shù)基音小數(shù)部分之和。采用6階巴特沃思帶通濾波器將一幀語(yǔ)音信號(hào)分為五個(gè)帶,分別是[0,500Hz],[500,1000Hz],[1000,2000Hz],[2000,3000Hz],[3000,4000Hz]五個(gè)頻帶,利用[0,500Hz]子帶信號(hào)與殘差信號(hào)在分?jǐn)?shù)基音值P前后5個(gè)樣點(diǎn)進(jìn)行精細(xì)基音搜索,從而得到精確基音值。
2.帶通分析:在五個(gè)頻帶中分別計(jì)算語(yǔ)音強(qiáng)度Vi。最低頻帶確定非周期標(biāo)志位,如果最低頻帶語(yǔ)音強(qiáng)度低于門限值,則非周期標(biāo)志設(shè)為1,否則即為0。其余頻帶的語(yǔ)音強(qiáng)度由該頻帶與其時(shí)域包絡(luò)圍繞分?jǐn)?shù)基音值P進(jìn)行精細(xì)搜索時(shí)的歸一化互相關(guān)值來(lái)決定。
3.10階線性預(yù)測(cè)(LPC)分析:LPC線性預(yù)測(cè)分析系數(shù)的計(jì)算采用Levinson-Durbin遞歸算法,計(jì)算時(shí)對(duì)輸入語(yǔ)音信號(hào)加窗,窗長(zhǎng)200個(gè)樣點(diǎn)(25ms),窗的中心點(diǎn)位于當(dāng)前幀的最后一個(gè)樣點(diǎn)。此外,對(duì)求得的10個(gè)預(yù)測(cè)系數(shù)Ai(i=1,2…10)均乘以帶寬擴(kuò)大系數(shù)K。LPC系數(shù)化為適合量化的線譜對(duì)(LSF)系數(shù)。
4.增益計(jì)算:使用自適應(yīng)窗長(zhǎng),每一幀計(jì)算兩次基音值。增益值是加窗信號(hào)的均方根值,以dB形式輸出。
5.清濁音判決:利用由LPC系數(shù)決定的預(yù)測(cè)濾波器對(duì)輸入語(yǔ)音信號(hào)進(jìn)行濾波,得到殘差信號(hào),取殘差信號(hào)的160個(gè)樣點(diǎn)計(jì)算峰值,如果峰值大于門限值,則置最低頻帶的語(yǔ)音聲強(qiáng)為1,如果峰值大于另一個(gè)門限值,則最低的三個(gè)頻帶語(yǔ)音聲強(qiáng)置1。
(二)參數(shù)量化
參數(shù)提取結(jié)束,需要量化的參數(shù)有基音周期、子帶清濁音判斷、增益、線性預(yù)測(cè)系數(shù)、傅立葉系數(shù)、非周期標(biāo)志。一共量化為54bit。具體量化包括如下:
1.基音量化:基音值和全局清濁音判斷共同量化為7比特。如果低頻段語(yǔ)音聲強(qiáng)小于或者等于門限值,則當(dāng)前幀是清音幀,傳送全零碼。否則為濁音幀,先將基音值取對(duì)數(shù),再進(jìn)行99級(jí)均勻量化,量化后的標(biāo)號(hào)映射到7比特碼本。
2.子帶清濁音判決:當(dāng)最低頻帶語(yǔ)音聲強(qiáng)大于門限值時(shí),如果其余四個(gè)子帶聲強(qiáng)值也大于門限值,則量化為0。如果其余四個(gè)子帶量化后的值為0001,那么高子帶置0。如果最低頻帶語(yǔ)音聲強(qiáng)小于或者等于門限值,則該項(xiàng)參數(shù)量化為0。
3.增益:每一幀均傳送兩個(gè)增益參數(shù)。第一個(gè)增益參數(shù)采用自適應(yīng)算法量化為3比特。第二個(gè)增益參數(shù),在10.0到77.0范圍內(nèi)使用級(jí)均勻量化器量化為5比特。
4.線性預(yù)測(cè)系數(shù)量化:首先將LPC系數(shù)轉(zhuǎn)化為易于量化的LSF系數(shù)。采用多級(jí)矢量量化方法,碼本設(shè)置四級(jí),每級(jí)量化的比特?cái)?shù)分別為7、6、6、6。
5.傅立葉系數(shù):若當(dāng)前幀為濁音幀,則10階傅立葉系數(shù)采用矢量量化方法。量化比特為8。若當(dāng)前幀是清音幀,則不進(jìn)行量化。
(三)解碼部分
整個(gè)解碼過(guò)程包括對(duì)接收到的數(shù)據(jù)進(jìn)行解包,生成混合激勵(lì)信號(hào),再對(duì)混合激勵(lì)信號(hào)經(jīng)過(guò)自適應(yīng)譜增強(qiáng),LPC合成濾波,增益調(diào)整,脈沖離散濾波等,最后合成語(yǔ)音輸出??傮w編解碼框圖見(jiàn)圖1。
圖1MELP編解碼原理框圖
三、程序?qū)崿F(xiàn)研究和測(cè)試結(jié)果
測(cè)試方法是這樣的:采集了一段語(yǔ)音,采用8000bit/s采樣速率,單聲道,16位。先用麥克風(fēng)生成一個(gè)WAV文件;接著用該程序中的WAV數(shù)據(jù)提取函數(shù)取出數(shù)據(jù),生成一個(gè)純數(shù)據(jù)的語(yǔ)音文件;然后用MELP算法處理程序?qū)φZ(yǔ)音文件進(jìn)行處理并生成一個(gè)發(fā)送的數(shù)據(jù)包文件并通過(guò)一個(gè)模擬的信道進(jìn)行傳送;接收端對(duì)接收到的數(shù)據(jù)包進(jìn)行解碼,并合成語(yǔ)音生成一個(gè)純數(shù)據(jù)的語(yǔ)音合成文件;接著WAV數(shù)據(jù)合成函數(shù)生成一個(gè)WAV文件格式的文件;在MATLAB中使用WAVREAD命令,將原始語(yǔ)音讀入,并用PLOT將其時(shí)域顯示出來(lái),顯示波形如圖2所示。
最后通過(guò)揚(yáng)聲器放出來(lái),六個(gè)人比較它們的效果,比較原始語(yǔ)音和合成語(yǔ)音的有四個(gè)人認(rèn)為合成語(yǔ)音質(zhì)量不錯(cuò),有二個(gè)人覺(jué)得一般。結(jié)論:合成語(yǔ)音的質(zhì)量還可以,達(dá)到了預(yù)期的效果。
圖2原始語(yǔ)音信號(hào)時(shí)域波形
經(jīng)過(guò)MELP編碼后的合成語(yǔ)音,數(shù)據(jù)打包放在一個(gè)數(shù)組中。然后在MATLAB環(huán)境下,用WAVWRITE命令,將其數(shù)據(jù)寫出到一個(gè)WAV格式的音頻文件中。用PLOT命令觀察其波形,如圖3所示。
圖3合成語(yǔ)音時(shí)域波形
四、MELP編碼性能分析及仿真結(jié)果
圖2和圖3是經(jīng)過(guò)MATLAB軟件仿真后所得的原始語(yǔ)音信號(hào)和合成語(yǔ)音信號(hào)的波形比較圖,仿真所用的采樣頻率為8KHz,每個(gè)采樣點(diǎn)用8比特進(jìn)行量化。為便于觀察選取其中的第100000個(gè)采樣點(diǎn)進(jìn)行觀察比較,從顯示結(jié)果中可以看出MELP編碼算法在較低的編碼比特率基礎(chǔ)上較好的重構(gòu)了原始語(yǔ)音信號(hào),從聽(tīng)音測(cè)試的結(jié)果來(lái)看,采用MELP編碼的合成語(yǔ)音也同樣能夠很好的滿足現(xiàn)今通信系統(tǒng)對(duì)語(yǔ)音質(zhì)量的要求。
參考文獻(xiàn):
[1]王洪、唐凱,低速率語(yǔ)音編碼[M].北京:國(guó)防工業(yè)出版社,2006.
[2]鮑長(zhǎng)春,低比特率數(shù)字語(yǔ)音編碼基礎(chǔ),北京:北京工業(yè)大學(xué)出版社,2001,149-178.
[3]Alan V.McCree,Kwan Truong,E.Bryan George and Thomas P.Barnwell.A 2.4K BITPS MELP coder candidate for the new U.S.Federal.Proceeding of ICASSP.1996,107-112.
[4]陳顯治,現(xiàn)代通信技術(shù)[M],北京:電子工業(yè)出版社,2001.
[5]鐘明,一種2.4Kbps改進(jìn)型MBELP編碼,電子科學(xué)學(xué)報(bào),2000,9(5).
[6]McCree A V.Barnwell T P.A NewMixed Excitation LPC Vocoder.IC2ASSP.199l,593-596.
[7]王炳錫,語(yǔ)音編碼[M],西安,西安電子科技大學(xué)出版社,2002.
[8]劉寬海、葛萬(wàn)成,MELP低比特率數(shù)字語(yǔ)音編碼技術(shù)研究[J]信息技術(shù),2003,27(8):52-54.
[9]W.B.Kleijn,K.K.Paliwal.Speech Coding and Synt hesis,Amsterdam[M].The Net herlamds,Else-vier,1995,15-40.
[10]王都生、鐵滿霞、樊昌信,2.4kbit/s多帶混合激勵(lì)線性預(yù)測(cè)語(yǔ)音編碼器的模擬[J].西安電子科技大學(xué)學(xué)報(bào),2000,27(4):476-478.
作者簡(jiǎn)介:
賈亮(1971-),男,漢族,遼寧大石橋人,碩士研究生導(dǎo)師,副教授,主要從事信號(hào)處理方面的研究工作,研究方向:信號(hào)與信息處理;趙鵬飛(1980-),男,漢族,內(nèi)蒙古呼和浩特人,碩士研究生,研究方向:信號(hào)與信息處理;危國(guó)騰(1984-),男,漢族,江西南昌人,碩士研究生,漢族,研究方向:信號(hào)與信息處理。