《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 用于VOIP的G.729A算法的優(yōu)化改進(jìn)

用于VOIP的G.729A算法的優(yōu)化改進(jìn)

2008-07-08
作者:楊召青, 黃 冰, 宋欽梅

??? 摘 要: 在VOIP應(yīng)用的基礎(chǔ)上,介紹了VOIP的現(xiàn)狀及其用于VOIP語音編碼" title="語音編碼">語音編碼標(biāo)準(zhǔn)的發(fā)展方向,并對(duì)VOIP網(wǎng)路通信語音編碼標(biāo)準(zhǔn)之一的G.729 A[1]進(jìn)行了優(yōu)化改進(jìn),提出了一種利用重新初始化來獲得狀態(tài)恢復(fù)(RbR)與WD-LSP[8](Weighted delta-LSP)相結(jié)合的CS-ACELP語音編碼算法,利用重新初始化來獲得狀態(tài)恢復(fù),解決了包丟失階段和在包丟失以后階段產(chǎn)生差錯(cuò)脈沖所引起的重建語音質(zhì)量" title="語音質(zhì)量">語音質(zhì)量下降問題的同時(shí),采用WD-LSP降低了算法復(fù)雜度" title="算法復(fù)雜度">算法復(fù)雜度。
??? 關(guān)鍵詞: G.729A? WD-LSP? CS-ACELP? RbR

?

???? VOIP是近年來快速發(fā)展起來的一項(xiàng)新的網(wǎng)絡(luò)通信技術(shù),已在全世界得到了廣泛應(yīng)用。然而受網(wǎng)絡(luò)傳輸帶寬、傳輸速率和網(wǎng)絡(luò)環(huán)境等因素的制約,目前網(wǎng)絡(luò)電話在語音質(zhì)量和傳輸延時(shí)方面還有待完善。低速率語音編解碼" title="編解碼">編解碼技術(shù)是IP網(wǎng)絡(luò)多媒體通信中最關(guān)鍵的技術(shù)之一。有低速率語音壓縮編解碼技術(shù)的基礎(chǔ)上,結(jié)合網(wǎng)絡(luò)通信技術(shù),提出了一種高效的語音實(shí)時(shí)通信方案。
1 編解碼方案的選擇
??? 壓縮和解壓縮方案的選擇需要考慮語音質(zhì)量、速度、復(fù)雜度、延時(shí)四個(gè)方面。IP 語音通信主要使用ITU定義的幾個(gè)語音編碼的標(biāo)準(zhǔn):G.723.1、G.728和G.929。G.729A是ITU推出的用于第四代語音編碼標(biāo)準(zhǔn),采用了共軛結(jié)構(gòu)-算術(shù)碼本激勵(lì)線性預(yù)測(cè)編碼(CS-ACELP)算法。
2 VOIP語音編碼改進(jìn)中的關(guān)鍵技術(shù)
??? VOIP中語音編碼或稱語音壓縮編碼研究的基本問題主要包括:(1)在給定編碼速率的條件下如何得到盡量好的重建語音質(zhì)量,或稱編碼質(zhì)量。同時(shí)應(yīng)盡量減小編解碼時(shí)延以及算法的復(fù)雜度。(2)由于語音在網(wǎng)絡(luò)傳輸使用UDP的協(xié)議,對(duì)在傳輸過程中出現(xiàn)錯(cuò)誤或丟失采用的幀檢錯(cuò)糾錯(cuò)和丟失補(bǔ)償處理,以保證更好的語音質(zhì)量,因此對(duì)整個(gè) G.729A聲碼器的改進(jìn)也是針對(duì)上述兩個(gè)方面進(jìn)行的。
3 RbR與WD-LSP[8]相結(jié)合的CS-ACELP語音編碼算法
3.1 WD-LSP在G.729A中的應(yīng)用
??? G.729A編碼器中功能模塊的改進(jìn)重點(diǎn)在于自適應(yīng)碼本搜索,因?yàn)樗鼈冋加昧寺暣a器大部分的處理時(shí)間。這包括自適應(yīng)碼本矢量的產(chǎn)生、自適應(yīng)碼本時(shí)延的碼字編碼、自適應(yīng)碼本增益的計(jì)算、固定碼本搜索、固定碼本矢量的產(chǎn)生、固定碼本的碼字編碼、固定碼本增益的量化。同時(shí)與自適應(yīng)碼本搜索相關(guān)的開環(huán)基音分析也有改進(jìn)的余地。本文采用一種新的降低算法復(fù)雜度的方法,即結(jié)合WD-LSP(Weighted delta-LSP)采用次最優(yōu)部分碼本快速搜索的CS-ACELP 語音編碼算法[3],其原理圖如圖1所示。

????????????????????????
??? 在G.729A語音編碼階段,為了減少搜索最佳自適應(yīng)碼本延遲必需的計(jì)算量,開環(huán)基音延遲Top在每幀(10ms)都作一次分析,因而需要較多的CPU時(shí)間用于開環(huán)基音分析。因此可采用WD-LSP函數(shù)來減少用于開環(huán)基音分析的計(jì)算量。WD-LSP函數(shù)主要用于區(qū)分UV-V(unvoice-voice)/S-V(silence-voice)的邊界。其原理是:如果函數(shù)值大于給定的極限值η,則開環(huán)基音延遲Top重新估計(jì),否則,Top用前一幀的自適應(yīng)碼本延遲來更新。在第i幀F(xiàn)i的WD-LSP函數(shù)和用于確定Top的算法描述如下:
???
??? 如果Fi>η,重新估計(jì)Top
??? 另外Top=自適應(yīng)碼本延遲
??? 其中LSPi(k)是在第i幀中的k階LSP系數(shù);wk是加權(quán)系數(shù),它用于增強(qiáng)UV-V/S-V邊界的WD-LSP函數(shù)。為了獲取wk,一個(gè)包含23 014個(gè)UV-V邊界和9 519個(gè)S-V邊界的大型數(shù)據(jù)庫(kù)用于估計(jì)delta-LSP在UV-V/S-V邊界的平方根值(RMS)。因此,WD-LSP用于檢測(cè)VU-V/S-V邊界非常敏感。η是一個(gè)設(shè)為0.01的極限值。整個(gè)計(jì)算可節(jié)省21%的計(jì)算量,且合成語音質(zhì)量仍然較好。
3.2 RbR改善包丟失所引起的語音質(zhì)量
??? 由于G.729A具有15ms的低算法延遲[8]和丟失包的恢復(fù)機(jī)制,因此G.729A應(yīng)用于VOIP是一種很好的選擇。G.729A把語音分為每10ms為一幀,同時(shí)每一幀再被分為兩個(gè)5ms的子幀。需要傳輸?shù)膮?shù)以每幀80bit進(jìn)行傳輸,因此導(dǎo)致要求8kbps的數(shù)據(jù)傳輸率。
??? 語音傳輸過程中,在包丟失階段和在包丟失以后的一個(gè)階段都會(huì)產(chǎn)生差錯(cuò)脈沖。跟在包丟失后面的差錯(cuò)稱為狀態(tài)錯(cuò)誤,這些錯(cuò)誤都可以被耳朵察覺到從而會(huì)明顯地降低語音的質(zhì)量。
??? 包丟失后一段延時(shí)內(nèi)有錯(cuò)誤,原因就是在包丟失的一個(gè)階段編碼器與解碼器的狀態(tài)不能夠再同步。在本文中用于狀態(tài)的所有存儲(chǔ)器都在編碼器和解碼器中不會(huì)相互交換,但是會(huì)進(jìn)行經(jīng)常的更新以保證它們?cè)趦蛇呄嗤?。編碼器產(chǎn)生以系列的參數(shù)來模擬基于當(dāng)前狀態(tài)的語音。這些參數(shù)傳輸?shù)浇獯a器再由這些參數(shù)和本地的狀態(tài)來重新產(chǎn)生語音。在正規(guī)操作下,編碼器和解碼器的狀態(tài)不斷更新以保持相同,從而使解碼器重新合成原始語音。但是在包丟失階段,因?yàn)榻邮照卟荒芡耆珜?duì)狀態(tài)進(jìn)行更新,因此編碼器與解碼器不再同步。即使之后沒有數(shù)據(jù)包丟失,正確接收數(shù)據(jù)包時(shí),解碼器用錯(cuò)誤的狀態(tài)來重新產(chǎn)生語音,無疑會(huì)導(dǎo)致明顯的語音失真。本文所定義的G.729A算法的狀態(tài)如表1所示。這是通過分析和基于文獻(xiàn)[5]確定的。

????????????????????????????
??? 在大量仿真的基礎(chǔ)上,可以注意到在狀態(tài)#1、#4和#5重新同步以前,該算法分別采用4幀、2幀和1幀。而狀態(tài)#2和#3是基于過去的輸出,所以對(duì)于這些狀態(tài)所采用的幀的數(shù)量是變化的,并且隨著包丟失發(fā)生的位置而變化。仿真表明:在上一幀為幀擦除的情況下,對(duì)應(yīng)于狀態(tài)#2和#3分別以32幀和30幀來獲得重新的同步。這些結(jié)果顯示在一幀丟失后,所有的狀態(tài)獲得重新同步平均需要32幀。然而,也應(yīng)該注意到,在包丟失后語音質(zhì)量下降不會(huì)持續(xù)很長(zhǎng)時(shí)間。
??? 另外做了一個(gè)測(cè)試來核實(shí)哪種狀態(tài)對(duì)語音質(zhì)量的下降影響最大。修改算法,以便在需要進(jìn)行幀的數(shù)據(jù)擦除時(shí)獨(dú)立地對(duì)值進(jìn)行修改,而不需要擦除一幀的數(shù)據(jù)。結(jié)果表明#2狀態(tài)無疑是引起語音下降的主要狀態(tài),同時(shí)在當(dāng)同步喪失時(shí)對(duì)狀態(tài)錯(cuò)誤的影響最大。
??? 在G.729A中,對(duì)包丟失發(fā)生時(shí)有很好的應(yīng)對(duì)處理方法,但是對(duì)于因包丟失引起的狀態(tài)錯(cuò)誤沒能得到好的恢復(fù)。在G.729A中采用了一種新的方法來提高在包丟失期間自錯(cuò)誤狀態(tài)的恢復(fù)情況。
??? 對(duì)于一個(gè)給定的狀態(tài),解碼器產(chǎn)生了與這個(gè)狀態(tài)相對(duì)應(yīng)的一系列最佳的語音壓縮參數(shù)。然而壓縮質(zhì)量無疑依賴于狀態(tài)的最佳性,在包丟失發(fā)生后差錯(cuò)發(fā)生的主要原因是狀態(tài)和壓縮參數(shù)的不匹配。
??? 基于上面的討論,建議當(dāng)發(fā)生包丟失時(shí),通過每N幀在編碼器和解碼器兩端對(duì)狀態(tài)#2進(jìn)行周期性的歸零初始化來維持解碼器和編碼器的匹配。這種通過重新初始化來獲得恢復(fù)的方法具有簡(jiǎn)單性同時(shí)保證了在包丟失時(shí)減少了狀態(tài)差錯(cuò)的數(shù)量。
??? 通過試驗(yàn)發(fā)現(xiàn),為了獲得更好的結(jié)果必須對(duì)所描述的關(guān)于執(zhí)行RbR的技術(shù)進(jìn)行修改。這是由于對(duì)其進(jìn)行初始化的幀以及跟隨此幀的下一幀比未進(jìn)行初始化的幀對(duì)于包丟失更敏感。為了補(bǔ)償這種情況,試驗(yàn)表明最有效的方式是增加冗余信息" title="冗余信息">冗余信息。如果對(duì)其進(jìn)行初始化的幀為幀#n,那么解決的方法就是將幀#n的增益值和固定碼本向量與幀#n+1一起傳輸。同樣的,將#n+1幀的基音值和增益與幀#n+2一起傳送。無論包丟失發(fā)生在幀#n+1還是幀#n+2,都可以用冗余信息來減少包丟失的影響。每個(gè)初始化間隔冗余信息需要76bit,從而去除了這些幀對(duì)于幀丟失的額外的敏感度。對(duì)于N=10的初始化間隔,RbR需要8.76kbps(大約9.5%的冗余)。
3.3 試驗(yàn)結(jié)果
??? 為了評(píng)價(jià)RbR的性能,需要一個(gè)合適的方法來評(píng)價(jià)語音質(zhì)量。因?yàn)槿硕奶匦裕⒉皇撬械恼`差都能被察覺,這取決于作為語音質(zhì)量的指標(biāo)的平方誤差的數(shù)值。為了客觀地評(píng)價(jià)語音質(zhì)量,采用了圖2所示的系統(tǒng)。這個(gè)系統(tǒng)用一個(gè)知覺模型來計(jì)算兩個(gè)語音文件的聽覺差,這個(gè)知覺模型類似于MPEG聲頻壓縮的模型[6]。這個(gè)誤差是所有語音幀的總和除以采樣的數(shù)量來獲得每個(gè)采樣的知覺誤差(PEpS)。這種方法被證明是檢測(cè)語音質(zhì)量的一種很好的指標(biāo)。

??????????????????
??? 需要考慮的首要問題是證明當(dāng)未發(fā)生幀擦除時(shí),RbR是否會(huì)對(duì)語音產(chǎn)生影響。這是因?yàn)閭鬏斦邲]有辦法預(yù)知包丟失是否發(fā)生,而在未發(fā)生包丟失時(shí)也要進(jìn)行RbR操作。對(duì)應(yīng)于不同初始化間隔的進(jìn)行RbR操作的PEpS和未進(jìn)行RbR操作的PEpS的比較如圖3所示??梢钥吹?當(dāng)初始化間隔N的選取大于9時(shí)其降低不明顯。如果N進(jìn)一步減小,其質(zhì)量將會(huì)降低從而使得輸出語音變?yōu)樵肼暋y(cè)試將狀態(tài)#2設(shè)置為0的影響,因?yàn)樾枰獌?nèi)插狀態(tài)#2的數(shù)值,因此自適應(yīng)碼本向量為0。在這種情況下,所有的激勵(lì)都是由用于無聲語音的固定碼本向量組成。如果語音為有聲語音,則編碼器以分析-合成的特性來選取最佳的固定碼本向量,因此可以使原始語音與合成語音之間的知覺誤差最小,從而使下降度維持在最小。同樣,自適應(yīng)前向?yàn)V波器用于對(duì)所有固定碼本向量進(jìn)行濾波也可以減少下降度的影響,這是因?yàn)樗黾恿艘恍┯新曉氐焦潭ùa本向量中。這也能達(dá)到筆者所期望的狀態(tài),即如果RbR不是進(jìn)行經(jīng)常操作,則在未發(fā)生包丟失的階段由RbR引起的下降度不明顯。

????????????????????????????
??? 本文就提高重建語音的音質(zhì)與降低算法復(fù)雜度方面,針對(duì)G.729A目前的現(xiàn)狀,提出了利用重新初始化來獲得狀態(tài)恢復(fù)(RbR)與WD-LSP(Weighted delta-LSP)相結(jié)合的CS-ACELP 語音編碼算法,解決了目前網(wǎng)絡(luò)通信由于帶寬和包丟失帶來的問題,保證了語音的質(zhì)量。對(duì)今后G.729A語音編碼的發(fā)展改進(jìn)以及在VOIP中的應(yīng)用具有一定的意義。
參考文獻(xiàn)
[1] ITU-T Recommendation G.729 Annex A[S].
[2] HWANG Shaw-Hwa. Computional improvement for G.729?standard[J]. ELECTRONIC LETTERS.22nd June 2000:
?1163-1164.
[3]?ITU-T G.729: Coding of speech at 8kb/s using conjugat-estructure algebraic-code excited linear-prediction(CSACELP).International Telecommunications Union, March1996.
[4]?楊國(guó)芳,高飛.一種基于G[1].729的CS-ACELP新算法[J].語音技術(shù),2004,(1):56-59.
[5] ROSENBERG J. G.729 Error Recovery for InternetTele-phony. Columbia University report, Spring 1997,
?http://www.cs.columbia.edu/-jdrosen/e688O/index.html
[6] NOLL P. MPEG digital audio coding. IEEE Signal Processing Magazine, September 1997:59-81.
[7] SALAMI R. ITU-T G.729 Annex A: Reduced complexity ?8kb/s CS-ACELP codec for digital simultaneous voice
?and Data. IEEE Communications Magazine,Sept.1997:56-63.
[8]?HWANG Shaw Hwa. Computional improvement for G.729?standard[J]. Electronic Letters. 22nd June 2000:1163-1164.
[9] ?MERMELSTEIN P, QIAN Ya sheng. Analysis by synthesis ?speech coding with generalized pitch prediction[D]. IEEE?International Conference on Acoustics, Speech and Signal?Processing, Vol. I of VI,1-4(HC), 1999.
[10] COMBESCURE P, SCHNITZLER J. A 16, 24, 32kbit/s?wideband speech codec based on ATCELP[C]. IEEE
?International Conference on Acoustics, Speech and Signal?Processing, Vol. I of VI,5-8(HC), 1999.
[11] MONTMINY C, ABOULNASR T. Improving the performance of ITU-T G.729A for VoIP[J].

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。