??? 摘 要: 在VOIP應(yīng)用的基礎(chǔ)上,介紹了VOIP的現(xiàn)狀及其用于VOIP語(yǔ)音編碼" title="語(yǔ)音編碼">語(yǔ)音編碼標(biāo)準(zhǔn)的發(fā)展方向,并對(duì)VOIP網(wǎng)路通信語(yǔ)音編碼標(biāo)準(zhǔn)之一的G.729 A[1]進(jìn)行了優(yōu)化改進(jìn),提出了一種利用重新初始化來(lái)獲得狀態(tài)恢復(fù)(RbR)與WD-LSP[8](Weighted delta-LSP)相結(jié)合的CS-ACELP語(yǔ)音編碼算法,利用重新初始化來(lái)獲得狀態(tài)恢復(fù),解決了包丟失階段和在包丟失以后階段產(chǎn)生差錯(cuò)脈沖所引起的重建語(yǔ)音質(zhì)量" title="語(yǔ)音質(zhì)量">語(yǔ)音質(zhì)量下降問(wèn)題的同時(shí),采用WD-LSP降低了算法復(fù)雜度" title="算法復(fù)雜度">算法復(fù)雜度。
??? 關(guān)鍵詞: G.729A? WD-LSP? CS-ACELP? RbR
?
???? VOIP是近年來(lái)快速發(fā)展起來(lái)的一項(xiàng)新的網(wǎng)絡(luò)通信技術(shù),已在全世界得到了廣泛應(yīng)用。然而受網(wǎng)絡(luò)傳輸帶寬、傳輸速率和網(wǎng)絡(luò)環(huán)境等因素的制約,目前網(wǎng)絡(luò)電話(huà)在語(yǔ)音質(zhì)量和傳輸延時(shí)方面還有待完善。低速率語(yǔ)音編解碼" title="編解碼">編解碼技術(shù)是IP網(wǎng)絡(luò)多媒體通信中最關(guān)鍵的技術(shù)之一。有低速率語(yǔ)音壓縮編解碼技術(shù)的基礎(chǔ)上,結(jié)合網(wǎng)絡(luò)通信技術(shù),提出了一種高效的語(yǔ)音實(shí)時(shí)通信方案。
1 編解碼方案的選擇
??? 壓縮和解壓縮方案的選擇需要考慮語(yǔ)音質(zhì)量、速度、復(fù)雜度、延時(shí)四個(gè)方面。IP 語(yǔ)音通信主要使用ITU定義的幾個(gè)語(yǔ)音編碼的標(biāo)準(zhǔn):G.723.1、G.728和G.929。G.729A是ITU推出的用于第四代語(yǔ)音編碼標(biāo)準(zhǔn),采用了共軛結(jié)構(gòu)-算術(shù)碼本激勵(lì)線(xiàn)性預(yù)測(cè)編碼(CS-ACELP)算法。
2 VOIP語(yǔ)音編碼改進(jìn)中的關(guān)鍵技術(shù)
??? VOIP中語(yǔ)音編碼或稱(chēng)語(yǔ)音壓縮編碼研究的基本問(wèn)題主要包括:(1)在給定編碼速率的條件下如何得到盡量好的重建語(yǔ)音質(zhì)量,或稱(chēng)編碼質(zhì)量。同時(shí)應(yīng)盡量減小編解碼時(shí)延以及算法的復(fù)雜度。(2)由于語(yǔ)音在網(wǎng)絡(luò)傳輸使用UDP的協(xié)議,對(duì)在傳輸過(guò)程中出現(xiàn)錯(cuò)誤或丟失采用的幀檢錯(cuò)糾錯(cuò)和丟失補(bǔ)償處理,以保證更好的語(yǔ)音質(zhì)量,因此對(duì)整個(gè) G.729A聲碼器的改進(jìn)也是針對(duì)上述兩個(gè)方面進(jìn)行的。
3 RbR與WD-LSP[8]相結(jié)合的CS-ACELP語(yǔ)音編碼算法
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)的開(kāi)環(huán)基音分析也有改進(jìn)的余地。本文采用一種新的降低算法復(fù)雜度的方法,即結(jié)合WD-LSP(Weighted delta-LSP)采用次最優(yōu)部分碼本快速搜索的CS-ACELP 語(yǔ)音編碼算法[3],其原理圖如圖1所示。
????????????????????????
??? 在G.729A語(yǔ)音編碼階段,為了減少搜索最佳自適應(yīng)碼本延遲必需的計(jì)算量,開(kāi)環(huán)基音延遲Top在每幀(10ms)都作一次分析,因而需要較多的CPU時(shí)間用于開(kāi)環(huán)基音分析。因此可采用WD-LSP函數(shù)來(lái)減少用于開(kāi)環(huán)基音分析的計(jì)算量。WD-LSP函數(shù)主要用于區(qū)分UV-V(unvoice-voice)/S-V(silence-voice)的邊界。其原理是:如果函數(shù)值大于給定的極限值η,則開(kāi)環(huán)基音延遲Top重新估計(jì),否則,Top用前一幀的自適應(yīng)碼本延遲來(lái)更新。在第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ì)算量,且合成語(yǔ)音質(zhì)量仍然較好。
3.2 RbR改善包丟失所引起的語(yǔ)音質(zhì)量
??? 由于G.729A具有15ms的低算法延遲[8]和丟失包的恢復(fù)機(jī)制,因此G.729A應(yīng)用于VOIP是一種很好的選擇。G.729A把語(yǔ)音分為每10ms為一幀,同時(shí)每一幀再被分為兩個(gè)5ms的子幀。需要傳輸?shù)膮?shù)以每幀80bit進(jìn)行傳輸,因此導(dǎo)致要求8kbps的數(shù)據(jù)傳輸率。
??? 語(yǔ)音傳輸過(guò)程中,在包丟失階段和在包丟失以后的一個(gè)階段都會(huì)產(chǎn)生差錯(cuò)脈沖。跟在包丟失后面的差錯(cuò)稱(chēng)為狀態(tài)錯(cuò)誤,這些錯(cuò)誤都可以被耳朵察覺(jué)到從而會(huì)明顯地降低語(yǔ)音的質(zhì)量。
??? 包丟失后一段延時(shí)內(nèi)有錯(cuò)誤,原因就是在包丟失的一個(gè)階段編碼器與解碼器的狀態(tài)不能夠再同步。在本文中用于狀態(tài)的所有存儲(chǔ)器都在編碼器和解碼器中不會(huì)相互交換,但是會(huì)進(jìn)行經(jīng)常的更新以保證它們?cè)趦蛇呄嗤?。編碼器產(chǎn)生以系列的參數(shù)來(lái)模擬基于當(dāng)前狀態(tài)的語(yǔ)音。這些參數(shù)傳輸?shù)浇獯a器再由這些參數(shù)和本地的狀態(tài)來(lái)重新產(chǎn)生語(yǔ)音。在正規(guī)操作下,編碼器和解碼器的狀態(tài)不斷更新以保持相同,從而使解碼器重新合成原始語(yǔ)音。但是在包丟失階段,因?yàn)榻邮照卟荒芡耆珜?duì)狀態(tài)進(jìn)行更新,因此編碼器與解碼器不再同步。即使之后沒(méi)有數(shù)據(jù)包丟失,正確接收數(shù)據(jù)包時(shí),解碼器用錯(cuò)誤的狀態(tài)來(lái)重新產(chǎn)生語(yǔ)音,無(wú)疑會(huì)導(dǎo)致明顯的語(yǔ)音失真。本文所定義的G.729A算法的狀態(tài)如表1所示。這是通過(guò)分析和基于文獻(xiàn)[5]確定的。
????????????????????????????
??? 在大量仿真的基礎(chǔ)上,可以注意到在狀態(tài)#1、#4和#5重新同步以前,該算法分別采用4幀、2幀和1幀。而狀態(tài)#2和#3是基于過(guò)去的輸出,所以對(duì)于這些狀態(tài)所采用的幀的數(shù)量是變化的,并且隨著包丟失發(fā)生的位置而變化。仿真表明:在上一幀為幀擦除的情況下,對(duì)應(yīng)于狀態(tài)#2和#3分別以32幀和30幀來(lái)獲得重新的同步。這些結(jié)果顯示在一幀丟失后,所有的狀態(tài)獲得重新同步平均需要32幀。然而,也應(yīng)該注意到,在包丟失后語(yǔ)音質(zhì)量下降不會(huì)持續(xù)很長(zhǎng)時(shí)間。
??? 另外做了一個(gè)測(cè)試來(lái)核實(shí)哪種狀態(tài)對(duì)語(yǔ)音質(zhì)量的下降影響最大。修改算法,以便在需要進(jìn)行幀的數(shù)據(jù)擦除時(shí)獨(dú)立地對(duì)值進(jìn)行修改,而不需要擦除一幀的數(shù)據(jù)。結(jié)果表明#2狀態(tài)無(wú)疑是引起語(yǔ)音下降的主要狀態(tài),同時(shí)在當(dāng)同步喪失時(shí)對(duì)狀態(tài)錯(cuò)誤的影響最大。
??? 在G.729A中,對(duì)包丟失發(fā)生時(shí)有很好的應(yīng)對(duì)處理方法,但是對(duì)于因包丟失引起的狀態(tài)錯(cuò)誤沒(méi)能得到好的恢復(fù)。在G.729A中采用了一種新的方法來(lái)提高在包丟失期間自錯(cuò)誤狀態(tài)的恢復(fù)情況。
??? 對(duì)于一個(gè)給定的狀態(tài),解碼器產(chǎn)生了與這個(gè)狀態(tài)相對(duì)應(yīng)的一系列最佳的語(yǔ)音壓縮參數(shù)。然而壓縮質(zhì)量無(wú)疑依賴(lài)于狀態(tài)的最佳性,在包丟失發(fā)生后差錯(cuò)發(fā)生的主要原因是狀態(tài)和壓縮參數(shù)的不匹配。
??? 基于上面的討論,建議當(dāng)發(fā)生包丟失時(shí),通過(guò)每N幀在編碼器和解碼器兩端對(duì)狀態(tài)#2進(jìn)行周期性的歸零初始化來(lái)維持解碼器和編碼器的匹配。這種通過(guò)重新初始化來(lái)獲得恢復(fù)的方法具有簡(jiǎn)單性同時(shí)保證了在包丟失時(shí)減少了狀態(tài)差錯(cuò)的數(shù)量。
??? 通過(guò)試驗(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一起傳送。無(wú)論包丟失發(fā)生在幀#n+1還是幀#n+2,都可以用冗余信息來(lái)減少包丟失的影響。每個(gè)初始化間隔冗余信息需要76bit,從而去除了這些幀對(duì)于幀丟失的額外的敏感度。對(duì)于N=10的初始化間隔,RbR需要8.76kbps(大約9.5%的冗余)。
3.3 試驗(yàn)結(jié)果
??? 為了評(píng)價(jià)RbR的性能,需要一個(gè)合適的方法來(lái)評(píng)價(jià)語(yǔ)音質(zhì)量。因?yàn)槿硕奶匦裕⒉皇撬械恼`差都能被察覺(jué),這取決于作為語(yǔ)音質(zhì)量的指標(biāo)的平方誤差的數(shù)值。為了客觀(guān)地評(píng)價(jià)語(yǔ)音質(zhì)量,采用了圖2所示的系統(tǒng)。這個(gè)系統(tǒng)用一個(gè)知覺(jué)模型來(lái)計(jì)算兩個(gè)語(yǔ)音文件的聽(tīng)覺(jué)差,這個(gè)知覺(jué)模型類(lèi)似于MPEG聲頻壓縮的模型[6]。這個(gè)誤差是所有語(yǔ)音幀的總和除以采樣的數(shù)量來(lái)獲得每個(gè)采樣的知覺(jué)誤差(PEpS)。這種方法被證明是檢測(cè)語(yǔ)音質(zhì)量的一種很好的指標(biāo)。
??????????????????
??? 需要考慮的首要問(wèn)題是證明當(dāng)未發(fā)生幀擦除時(shí),RbR是否會(huì)對(duì)語(yǔ)音產(chǎn)生影響。這是因?yàn)閭鬏斦邲](méi)有辦法預(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ǔ)音變?yōu)樵肼暋y(cè)試將狀態(tài)#2設(shè)置為0的影響,因?yàn)樾枰獌?nèi)插狀態(tài)#2的數(shù)值,因此自適應(yīng)碼本向量為0。在這種情況下,所有的激勵(lì)都是由用于無(wú)聲語(yǔ)音的固定碼本向量組成。如果語(yǔ)音為有聲語(yǔ)音,則編碼器以分析-合成的特性來(lái)選取最佳的固定碼本向量,因此可以使原始語(yǔ)音與合成語(yǔ)音之間的知覺(jué)誤差最小,從而使下降度維持在最小。同樣,自適應(yīng)前向?yàn)V波器用于對(duì)所有固定碼本向量進(jìn)行濾波也可以減少下降度的影響,這是因?yàn)樗黾恿艘恍┯新曉氐焦潭ùa本向量中。這也能達(dá)到筆者所期望的狀態(tài),即如果RbR不是進(jìn)行經(jīng)常操作,則在未發(fā)生包丟失的階段由RbR引起的下降度不明顯。
????????????????????????????
??? 本文就提高重建語(yǔ)音的音質(zhì)與降低算法復(fù)雜度方面,針對(duì)G.729A目前的現(xiàn)狀,提出了利用重新初始化來(lái)獲得狀態(tài)恢復(fù)(RbR)與WD-LSP(Weighted delta-LSP)相結(jié)合的CS-ACELP 語(yǔ)音編碼算法,解決了目前網(wǎng)絡(luò)通信由于帶寬和包丟失帶來(lái)的問(wèn)題,保證了語(yǔ)音的質(zhì)量。對(duì)今后G.729A語(yǔ)音編碼的發(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].語(yǔ)音技術(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].