|
|
| <!--插入廣告JS代碼--> |
摘 要 對(duì)使用定點(diǎn)數(shù)字信號(hào)處理器實(shí)現(xiàn)MPEG聲音編碼由于有限字長(zhǎng)效應(yīng)引入的各種噪聲的強(qiáng)度進(jìn)行了分析.根據(jù)分析結(jié)果對(duì)算法的實(shí)現(xiàn)進(jìn)行了改進(jìn),原型濾波器旁瓣衰減提高了約20 dB,同時(shí)減小了運(yùn)算過(guò)程的噪聲.論證了使用16bit定點(diǎn)數(shù)字信號(hào)處理器完成MPEG聲音編碼的可能性,為實(shí)際開(kāi)發(fā)提供了理論根據(jù).
關(guān)鍵詞 語(yǔ)聲信號(hào)處理;聲音編碼;誤差分析;有限字長(zhǎng)效應(yīng)
隨著多媒體時(shí)代的到來(lái)和數(shù)字信號(hào)處理器(DSP)[1]技術(shù)的發(fā)展,用DSP實(shí)現(xiàn)當(dāng)前應(yīng)用極廣的MPEG[2]聲音編碼是一大趨勢(shì).定點(diǎn)DSP芯片與浮點(diǎn)DSP芯片相比,具有速度和價(jià)格上的優(yōu)勢(shì),很適于作聲音信號(hào)處理,而市場(chǎng)上成熟的聲音處理系統(tǒng)多選擇定點(diǎn)DSP,所以,選用定點(diǎn)DSP芯片實(shí)現(xiàn)MPEG聲音編碼是很有意義的.另一方面,定點(diǎn)計(jì)算的有限字長(zhǎng)也帶來(lái)了有限精度、動(dòng)態(tài)范圍有限等問(wèn)題[3],這就使人們對(duì)選用當(dāng)前使用最為廣泛的16bit定點(diǎn)DSP能否保證壓縮質(zhì)量提出質(zhì)疑.本文就這些問(wèn)題對(duì)實(shí)現(xiàn)MPEG聲音編碼的影響進(jìn)行分析.
1 誤差模型的建立
數(shù)字系統(tǒng)因有限字長(zhǎng)而引起誤差的因素有:A/D變換器把模擬輸入信號(hào)轉(zhuǎn)換成一組離散電平時(shí)產(chǎn)生的量化效應(yīng);系統(tǒng)用有限位二進(jìn)制數(shù)表示時(shí)產(chǎn)生的量化效應(yīng);數(shù)字運(yùn)算過(guò)程中,為限制位數(shù)進(jìn)行的尾數(shù)處理和防止溢出而壓縮信號(hào)電平的有限字長(zhǎng)效應(yīng).其中A/D變換引入的噪聲只由A/D變換器的位數(shù)決定,與采用何種處理系統(tǒng)和處理方式無(wú)關(guān),本文不予考慮,只考慮其余兩項(xiàng)由于選用定點(diǎn)DSP引入的噪聲.因?yàn)檎`差特性與系統(tǒng)的結(jié)構(gòu)形式、數(shù)字表示法、運(yùn)算方式有關(guān),所以在進(jìn)行誤差分析以前,首先做以下假設(shè):(1)系統(tǒng)采用標(biāo)準(zhǔn)推薦的參考?jí)嚎s編碼算法結(jié)構(gòu);(2)數(shù)字使用DSP普遍采用的二進(jìn)制補(bǔ)碼表示;(3)運(yùn)算方式適合 DSP的乘累加結(jié)構(gòu).
結(jié)合以上3條假設(shè),下面逐一分析標(biāo)準(zhǔn)編碼算法中可能產(chǎn)生誤差的模塊,找出主要矛盾.MPEG第1,2層聲音編碼主要由分析子帶濾波器組、心理聲學(xué)模型和比特分配、量化成幀三大模塊構(gòu)成心理聲學(xué)模型不是標(biāo)準(zhǔn)的強(qiáng)制部分,定點(diǎn)計(jì)算誤差的影響將因具體的實(shí)現(xiàn)方法而異,且由于掩蔽門(mén)限相對(duì)于噪聲一般都留有余量,誤差未必帶來(lái)主觀質(zhì)量的降低,所以在本文中不予討論.比特分配是一循環(huán)過(guò)程,它涉及找出信掩比最大的子帶,由于每次量化級(jí)增加時(shí)信噪比至少增加 4dB,16bit定點(diǎn)數(shù)無(wú)論在精度或動(dòng)態(tài)范圍都是足夠的.量化過(guò)程本身就是一截尾或舍入處理,而且最大量化等級(jí)65 535剛好能用16bit表示,所以其影響可以忽略.因而在用定點(diǎn)DSP實(shí)現(xiàn)MPEG聲音編碼時(shí),有限字長(zhǎng)帶來(lái)的有限精度和有限動(dòng)態(tài)范圍影響最大的是分析子帶濾波部分.
<!--StartFragment -->
2 系數(shù)表示誤差
MPEG聲音編碼算法的第1,2層從本質(zhì)上講是一種子帶編碼算法,它采用了Rothweiler的余弦調(diào)制準(zhǔn)重構(gòu)正交鏡像濾波器組[4],把音頻信號(hào)劃分為寬度相等的32個(gè)臨界抽樣的子帶,標(biāo)準(zhǔn)描述的是它的多相結(jié)構(gòu)實(shí)現(xiàn),其流程分為移位、加窗、部分計(jì)算、矩陣運(yùn)算幾部分.由MPEG聲音編碼標(biāo)準(zhǔn),濾波器方程可寫(xiě)為
(1)
式中,Ck+64j為窗系數(shù);Mi,k為分析矩陣系數(shù).為了與常見(jiàn)的濾波器方程比較,式(1)可寫(xiě)成卷積形式,令n=k+64j,則

記hn為多相濾波器的原型低通濾波器的沖激響應(yīng),它與窗系數(shù)的關(guān)系為
hn=C511-n(-1)[(511-n)/64] (3)
<!--StartFragment -->
因此,窗系數(shù)決定了原型濾波器頻率響應(yīng)的形狀.標(biāo)準(zhǔn)給出的窗系數(shù)精確到小數(shù)點(diǎn)后9位,它所決定的原型濾波器的頻率響應(yīng)如圖1所示,圖中每點(diǎn)數(shù)字角頻率相差π/256,濾波器的3dB歸一化帶寬為π/64,旁瓣衰減大于100dB. |

<!--StartFragment --> 圖1 基帶濾波器的頻域響應(yīng)
<!--StartFragment --> 由式(2)易見(jiàn),分析濾波器組的各子帶濾波器是由不同頻率的余弦函數(shù)調(diào)制原型濾波器得到的,有限精度系數(shù)條件下濾波器組的頻率特性很容易由量化后的hn和Mi,k的頻率響應(yīng)進(jìn)行卷積得到,因此,可以分別考慮系數(shù)量化對(duì)hn和Mi,k的影響.如果采用舍入處理,用16bit定點(diǎn)數(shù)表示hn,由于系數(shù)量化誤差,原型濾波器的旁瓣衰減將小于70dB,見(jiàn)圖2;而標(biāo)準(zhǔn)在用分析/綜合的方法設(shè)計(jì)濾波器組時(shí)對(duì)旁瓣的影響是忽略的,旁瓣越大,由旁瓣引入的混疊就越大,可等效于引入一定的噪聲.對(duì)第i個(gè)子帶,Mi,k的作用是把原型濾波器的中心頻率調(diào)制到(2i+1)π/64上.由于有限字長(zhǎng),需要對(duì)Mi,k進(jìn)行舍入處理,因而會(huì)發(fā)生頻譜泄漏,即在調(diào)制頻率以外的頻率上仍有能量.經(jīng)過(guò)計(jì)算,任意頻率處泄漏頻譜的能量密度都比調(diào)制頻率處的能量密度低106 dB以上,相對(duì)Ci的量化誤差而言,其影響可以忽略.因而如何對(duì)標(biāo)準(zhǔn)給出的分析濾波器算法進(jìn)行改進(jìn),提高Ci的表示精度成為減小系數(shù)表示誤差的關(guān)鍵.注意到標(biāo)準(zhǔn)給出的Ci值都比1小,Ci,max≤0.035 8,不能充分利用DSP所有的比特位,所以先把窗系數(shù)的值擴(kuò)大A倍,使ACi,max盡量接近1,而在部分計(jì)算后把結(jié)果縮小A倍,其計(jì)算是等效的.同時(shí)考慮到利用DSP的移位操作,A最好為2的冪,易知A應(yīng)取16.改進(jìn)后原型濾波器的頻率響應(yīng)改善了很多,旁瓣的衰減可以達(dá)到約90 dB,見(jiàn)圖3.
<!--StartFragment -->
 |
圖2 有限字長(zhǎng)影響下的基帶濾波器頻率響應(yīng) 圖3 改進(jìn)后的基帶濾波器頻率響應(yīng) |
<!--StartFragment -->
3 運(yùn)算過(guò)程中的誤差 濾波器運(yùn)算過(guò)程中由于乘法結(jié)果的尾數(shù)處理(舍入或截尾)會(huì)產(chǎn)生誤差.嚴(yán)格地說(shuō),舍入和截尾都是非線性過(guò)程,其影響相當(dāng)于在濾波器結(jié)構(gòu)中的相應(yīng)支路上引入非線性元件,分析起來(lái)相當(dāng)復(fù)雜,因此,用統(tǒng)計(jì)模型把尾數(shù)處理產(chǎn)生的誤差假設(shè)成為時(shí)域離散的平穩(wěn)白加性噪聲來(lái)進(jìn)行分析.考慮到幾乎所有的DSP都有硬件實(shí)現(xiàn)的乘累加器,濾波器組計(jì)算流程中的加窗與部分計(jì)算可以合并,這樣不但適于DSP處理,而且由于DSP的累加器一般都具有比其2倍操作字長(zhǎng)更長(zhǎng)的位數(shù),可以減小尾數(shù)處理產(chǎn)生的噪聲.加窗與部分計(jì)算合并后其數(shù)學(xué)等效為 ,即作8次乘法才進(jìn)行一次尾數(shù)處理,噪聲可比直接按標(biāo)準(zhǔn)流程實(shí)現(xiàn)減小8倍.每個(gè)Yi的輸出都疊加了一方差σ2=2-2b/12的白噪聲ei,b為DSP的字長(zhǎng).以子帶i為例,統(tǒng)計(jì)模型如圖4. 
|
圖4 有限精度下子帶濾波的統(tǒng)計(jì)模型 各ek可認(rèn)為是互不相關(guān)的,它們通過(guò)矩陣運(yùn)算網(wǎng)絡(luò)而影響輸出,考慮噪聲后的矩陣運(yùn)算表達(dá)式為 (4)
定義gk為由噪聲源ek到系統(tǒng)輸出的單位沖激響應(yīng),顯然gk=Mi,kδ(n).總的輸出噪聲方差為 (5)
通過(guò)式(5)容易求得輸出噪聲的方差σ2t=32σ2,加上矩陣運(yùn)算結(jié)束后為存儲(chǔ)Si而進(jìn)行尾數(shù)處理產(chǎn)生的噪聲,其方差也為σ2,故濾波器運(yùn)算過(guò)程中由于尾數(shù)處理總的噪聲能量為33σ2.各子帶的噪聲限制在自己的頻帶內(nèi),不會(huì)影響其它子帶,且各子帶的噪聲能量都相同,與輸入信號(hào)無(wú)關(guān). 定點(diǎn)運(yùn)算中還要防止相加時(shí)溢出的發(fā)生.標(biāo)準(zhǔn)給出的濾波器算法中加法有兩處,一處是部分計(jì)算 ,另一處是矩陣運(yùn)算 .因?yàn)閆i=CiXi,Xi是絕對(duì)值小于1的補(bǔ)碼小數(shù),而Ci,max <0.04,所以部分運(yùn)算不會(huì)產(chǎn)生溢出.直接分析矩陣運(yùn)算是否溢出比較麻煩,但我們可以借助標(biāo)準(zhǔn)給出的信息.從標(biāo)準(zhǔn)給出的比例因子容易看出,濾波器輸出值的絕對(duì)值小于2,但可能大于1,所以矩陣運(yùn)算會(huì)產(chǎn)生溢出.為防止溢出發(fā)生,有兩種方法:把輸入數(shù)據(jù)壓縮一半和在運(yùn)算后進(jìn)行條件歸一化處理.顯然后者比前者更優(yōu),因?yàn)橹挥性诶奂悠鬏敵龃笥?時(shí)才進(jìn)行歸一.在使用條件歸一處理時(shí)需用一標(biāo)志指示是否進(jìn)行了歸一,增加了條件判斷,這是為提高質(zhì)量在存儲(chǔ)空間和計(jì)算時(shí)間上付出的代價(jià).進(jìn)行輸入數(shù)據(jù)壓縮或歸一化處理等效于處理字長(zhǎng)減小1bit即6dB的質(zhì)量衰減可與方差為4σ2的白噪聲等效. 綜合考慮以上所有噪聲,仍然假設(shè)它們是無(wú)關(guān)的,則由運(yùn)算過(guò)程中的有限字長(zhǎng)效應(yīng)引入各子帶的總噪聲能量小于37σ2.子帶輸出信號(hào)的幅度小于2,即小于65 536q(q為量化步長(zhǎng)),但其概率分布與輸入聲音信號(hào)的分布密切相關(guān).因?yàn)樽訋V波后各子帶的頻帶都很窄,一個(gè)方便的假設(shè)是輸出信號(hào)在±2之間均勻分布,其方差為234σ2,信噪比約為86dB. *國(guó)家“九五”重點(diǎn)科技攻關(guān)資助項(xiàng)目 作者簡(jiǎn)介:林勝 第一作者25歲,男,博士生 作者單位:林勝 紀(jì)涌 全子一(北京郵電大學(xué)電信工程學(xué)院,北京100876) 參考文獻(xiàn) [1] 劉松強(qiáng).數(shù)字信號(hào)處理系統(tǒng)及其應(yīng)用.北京:清華大學(xué)出版社,1996 [2] ISO/IEC11172-3 Coding of moving pictures and associated audio for digital storage media at up to about 1.5 Mbit/s——part 3:audio.1993 [3] 李素芝,萬(wàn)建偉.時(shí)域離散信號(hào)處理.長(zhǎng)沙:國(guó)防科技大學(xué)出版社,1994 [4] Rothweiler J H.Polyphase quadratur filters——a new subband coding technique.In: Proc IEEE Int Conf Acoust, Speech, Signal Processing.Boston: 1983.1 280~1 283 |