董寧
(西安外事學(xué)院 現(xiàn)代教育中心,陜西 西安 710077)
MP3編碼器的基本結(jié)構(gòu)一般包括心里聲學(xué)模型、子帶濾波、量化編碼等幾個(gè)關(guān)鍵模塊,這幾個(gè)模塊雖然經(jīng)歷了大量的改進(jìn)和優(yōu)化,由于各種改進(jìn)算法層出不窮。所以仍然有很大的改進(jìn)空間,本論文主要對(duì)其心理聲學(xué)模型和量化模塊進(jìn)行改進(jìn),以期采用一種更為先進(jìn)的模型來(lái)代替標(biāo)準(zhǔn)模型,進(jìn)一步改善MP3編碼算法的性能。
為了提高M(jìn)P3編碼器的編碼質(zhì)量,本論文使用了一個(gè)改進(jìn)的心理聲學(xué)模型,用其替代原MP3編碼算法中的心理聲學(xué)模型。下面對(duì)該改進(jìn)的心理聲學(xué)模型的計(jì)算流程[1]做一個(gè)詳細(xì)的介紹:
首先進(jìn)行的是FFT計(jì)算:
1)重新構(gòu)造時(shí)域輸入信號(hào)采樣值;
2)FFT變換計(jì)算輸入信號(hào)的頻譜:
①用1 024點(diǎn)或256點(diǎn)的漢寧窗給采樣值加窗,記為;SWi
②分長(zhǎng)短塊分別計(jì)算采樣值的FFT,分別存放在wsamp_l和wsamp_s兩個(gè)數(shù)組中;
③計(jì)算FFT變換后的頻譜能量:fftenergy;
④對(duì)變換結(jié)果用極坐標(biāo)表示。RW和FW表示SWi的幅度和相位。
3)計(jì)算預(yù)測(cè)的幅度和相位:
4)計(jì)算不可預(yù)測(cè)性度量C(w):
計(jì)算閾值如圖1所示。
5)計(jì)算能量和不可預(yù)測(cè)性:
6)用上一步計(jì)算的能量和不可預(yù)測(cè)性卷積頻帶擴(kuò)展函數(shù):
7)計(jì)算音調(diào)索引值tbb:
其中 conv1=0.229,conv2=0.43,均為常數(shù)。
8)計(jì)算各部分的信噪比SNR:
miniba1是閾值計(jì)算表中的值,可以查表,TMN為29 dB,NMT為 6.0 dB。
圖1 閾值計(jì)算流程圖Fig.1 Threshold calculation flow chart
9)計(jì)算實(shí)際的能量門限:
其中norm是一個(gè)規(guī)格化的常數(shù)。
10)計(jì)算預(yù)回聲控制??紤]到絕對(duì)掩蔽門限,則可聽性的最終能量門限閾值為:
其中 rpwlev=2,rpwlev_2=16,qthr是為靜音閾值。
計(jì)算感知熵PE,進(jìn)而決定塊類型:
11)計(jì)算感知熵PE:
式中,cbwidth當(dāng)前閾值計(jì)算部分的寬度,查表可得。
12)根據(jù)感知熵PE大小確定塊類型:
如果 PE>1 800 或 max eb>30 min eb,或(PE>100,max eb>10min eb)用short類型,其余用long類型。
根據(jù)確定好的塊類型,分長(zhǎng)短塊再計(jì)算掩蔽閾值:
13)閾值計(jì)算的第二部分[3](長(zhǎng)塊)
①計(jì)算每個(gè)縮放比例因子帶的能量和閾值:
其中 bu、b0、w1、w2 的值查表可得。
②計(jì)算每個(gè)縮放比例因子頻帶的比值:
14)計(jì)算短塊閾值:
①計(jì)算第一個(gè)短塊能量;
②用擴(kuò)展函數(shù)卷積分區(qū)能量;
③計(jì)算短塊閾值,在此與閾值計(jì)算第一部分的不同是這里的SNR的值可直接從表中查得;
④將計(jì)算的閾值與靜音閾值和前面計(jì)算的最終閾值作比較,取最大者作為最后的閾值thr;
⑤調(diào)用閾值計(jì)算第二部分;
⑥塊數(shù)目加1,判斷塊數(shù)目是否>3,是則返回,不是則循環(huán)重復(fù)②步。
獨(dú)有的3個(gè)步驟[2]。計(jì)算聲道間掩蔽效應(yīng):
15)計(jì)算縮放比例因子帶左聲道的閾值l、右聲道的閾值r;
16)左聲道的掩蔽效應(yīng)+=r*interCHRatio;右聲道的掩蔽效應(yīng)+=l*interCHRatio。
式中interCHRatio是通道間掩蔽效應(yīng)因子,是一個(gè)設(shè)定的值。
計(jì)算mid/side channel的閾值,編碼模式為立體聲:
17)長(zhǎng)塊m/s channel閾值的計(jì)算;
18)短塊m/s channel閾值的計(jì)算和17)步長(zhǎng)塊相似,只是需要從第一塊到第三塊循環(huán)計(jì)算三次即可。
下一步邊、中聲道掩蔽比值的計(jì)算[6]:
長(zhǎng)塊時(shí):x1=max(長(zhǎng)塊左、右聲道閾值),x2=max(長(zhǎng)塊左、右聲道閾值);
短塊時(shí),計(jì)算方法和長(zhǎng)塊類似,只需循環(huán)3次。
下一步確定最后的塊類型:根據(jù)有無(wú)attack在4個(gè)塊類型間切換,確定最后輸出塊類型。 心理聲學(xué)模型最終輸出塊類型、閾值、比值及感知熵,供后面的MDCT和量化編碼模塊參考使用。
由量化公式:
量化的計(jì)算是比較復(fù)雜的。量化模塊是一個(gè)多次循環(huán)的過(guò)程,隨著步長(zhǎng)stepsize的調(diào)整,每條頻線都要經(jīng)過(guò)多次的量化計(jì)算,因此量化模塊是整個(gè)MP3編碼算法中運(yùn)算量最大的部分,該模塊的改進(jìn)和速度的提高,對(duì)于整個(gè)編碼過(guò)程的實(shí)時(shí)性保障,具有重大的意義。量化模塊由3層循環(huán)構(gòu)成,即:幀循環(huán)、外循環(huán)、內(nèi)循環(huán)。在這3層循環(huán)中,又以外循環(huán)計(jì)算量最大,消耗的系統(tǒng)資源最多。內(nèi)循環(huán)主要對(duì)MDCT后的頻譜線做量化操作。外循環(huán)主要是一個(gè)調(diào)整比例因子(scalefactor)以控制量化噪音低于掩蔽曲線的循環(huán)。盡可能地減少內(nèi)外循環(huán)的次數(shù),減少量化的計(jì)算次數(shù)對(duì)速度的提升是非常明顯的。
1)外循環(huán)的改進(jìn)
外循環(huán)退出的3個(gè)條件[4]分別是:所有的比例因子帶(scalefactor band)里的比例因子scalefactor是否都進(jìn)行了調(diào)整;比例因子是否超出了上限;所有比例因子帶的量化噪聲是否都在掩蔽曲線以內(nèi)。這3個(gè)條件在實(shí)際應(yīng)用中是非??量痰?。一般情況下,如果要尋找到最佳量化效果,外循環(huán)的循環(huán)次數(shù)至少要經(jīng)過(guò)30次。在最壞的情況下,外循環(huán)的次數(shù)甚至可以達(dá)到近50次。當(dāng)這種情況發(fā)生時(shí),就會(huì)導(dǎo)致該幀信號(hào)的編碼耗時(shí)非常長(zhǎng),將會(huì)嚴(yán)重地影響到編碼器的性能。為了避免發(fā)生這種情況,本論文對(duì)外循環(huán)的退出條件,增加了另外一個(gè)約束條件,當(dāng)外循環(huán)的循環(huán)次數(shù)超過(guò)某個(gè)設(shè)定的上限時(shí),不管是否達(dá)到最佳量化效果,都將強(qiáng)制退出外循環(huán),并將最后一次量化作為最終的量化結(jié)果。這樣處理的好處是可以避免外循環(huán)的次數(shù)過(guò)多,從而導(dǎo)致其計(jì)算量過(guò)大,從而保證編碼器的實(shí)時(shí)性能。
這里最關(guān)鍵的是要合理地設(shè)置循環(huán)次數(shù)的上限值,如果設(shè)置得過(guò)小,則量化效果將會(huì)很差,從而導(dǎo)致編碼質(zhì)量嚴(yán)重下降;反之,則該上限值基本上起不到作用,從而導(dǎo)致編碼器的實(shí)時(shí)性能得不到保障。經(jīng)過(guò)大量的測(cè)試,在本文的設(shè)計(jì)中,將外循環(huán)的循環(huán)次數(shù)上限設(shè)定為10次,該上限值可以做到性能和運(yùn)算量?jī)烧叩募骖櫋?/p>
經(jīng)上述改進(jìn)后,在本論文的研究中,退出外循環(huán)的4個(gè)條件如下:
①所有比例因子帶的Scalefactor如果都進(jìn)行了調(diào)整,則退出外循環(huán);
②如果比例因子超出了規(guī)定的上限,則退出外循環(huán);
③如果小于兩個(gè)比例因子帶的量化噪聲不在掩蔽曲線之內(nèi),則退出外循環(huán);
④如果循環(huán)的次數(shù)大于10次,則退出外循環(huán);
以上4個(gè)改進(jìn)后的外循環(huán)退出條件,實(shí)際上是以犧牲精度來(lái)?yè)Q取速度。但經(jīng)過(guò)大量的測(cè)試,這些精度犧牲帶來(lái)的誤差,是人耳幾乎無(wú)法感知出來(lái)的。其帶來(lái)的直接好處是循環(huán)次數(shù)大大地減少了。經(jīng)過(guò)大量的測(cè)試發(fā)現(xiàn),這種改進(jìn)使得資源的消耗降到了原來(lái)的1/3。
2)內(nèi)循環(huán)的改進(jìn)
在內(nèi)循環(huán)中,不斷地調(diào)整量化步長(zhǎng)(stepsize),以便使得Huffman編碼過(guò)程所需的比特?cái)?shù)最少。每進(jìn)行這樣的一次調(diào)整,就要對(duì)所有的頻線量化一次。若循環(huán)次數(shù)太多,將會(huì)耗費(fèi)大量的時(shí)間。因此,如何盡快地找到合適的量化步長(zhǎng)(stepsize),也是一個(gè)非常重要的問(wèn)題。在此過(guò)程中,本論文采用了兩種方法[5]相結(jié)合的辦法來(lái)尋找合適的量化步長(zhǎng):
①充分利用音頻信號(hào)的時(shí)間相關(guān)性,將前一幀的最終量化步長(zhǎng)作為當(dāng)前幀的初始步長(zhǎng),將量化比特?cái)?shù)代入一個(gè)二元一次方程計(jì)算得到此時(shí)量化步長(zhǎng)stepsize的估計(jì)值,然后再進(jìn)行步長(zhǎng)增幅的微調(diào);
②進(jìn)行微調(diào)時(shí),每次步長(zhǎng)的增幅大小不是固定為1,而是根據(jù)超出的比特?cái)?shù)來(lái)選擇不同的增幅,通過(guò)這種變步長(zhǎng)增幅的方式,就可以大幅度地減少尋找量化步長(zhǎng)的循環(huán)次數(shù)。
同時(shí)還對(duì)量化公式進(jìn)行了如下的變形:
這樣,每一根頻譜線只需計(jì)算一次|xr(i)|0.75,不用每調(diào)整一次步長(zhǎng)就計(jì)算一次。只需根據(jù)不同的量化步長(zhǎng)計(jì)算,而stepsize通常只取整數(shù)值,且有一定的取值范圍的,可以將stepsize作為索引值,將的結(jié)果制成一張表,每次只需根據(jù)stepsize的值去查表即可。
通過(guò)對(duì)內(nèi)外循環(huán)進(jìn)行如上的改進(jìn),整個(gè)量化模塊的循環(huán)次數(shù)和計(jì)算量相比原來(lái)有了很大的減少,性能有了明顯的進(jìn)步。
為了得到客觀的結(jié)果,在此選取20個(gè)音頻信號(hào)進(jìn)行測(cè)試,其中包含單聲道信號(hào)、雙聲道信號(hào),也包含采樣率為48 kHz、44.1 kHz的信號(hào),既有脈沖信號(hào),也有持續(xù)性較長(zhǎng)的周期信號(hào)。
通過(guò)對(duì)比可以看出,采用新型心理聲學(xué)模型,并改進(jìn)量化循環(huán)模塊后,MP3編碼算法質(zhì)量測(cè)試ODG值相比改進(jìn)之前有了明顯的提高,大部分音頻信號(hào)的測(cè)試ODG值都已經(jīng)處于可接受的范圍之內(nèi),特別是原來(lái)一些質(zhì)量較差的信號(hào)(ODG值低于-3),編碼質(zhì)量更是得到了大幅度的提升。這說(shuō)明改進(jìn)是非常有效的,達(dá)到了設(shè)定的要求。
本文首先從改進(jìn)MP3編碼算法的質(zhì)量入手,采用全新的心理聲學(xué)模型替換原心理聲學(xué)模型,然后對(duì)量化編碼模塊進(jìn)行了改進(jìn),使編碼質(zhì)量度有了明顯的提高,在提高質(zhì)量的基礎(chǔ)上,編碼速度也有了一定的改善,再通過(guò)采取一些其他的優(yōu)化措施,包括算法結(jié)構(gòu)優(yōu)化、C代碼優(yōu)化等,使編碼速度基本達(dá)到了要求。
[1]豐帆.MP3數(shù)字音頻編解碼算法的研究及實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2008.
[2]馬昌萍,宋丹,馬幼鳴.MP3編碼算法分析[J].佳木斯大學(xué)學(xué)報(bào),2005,23(1):64-67.MA Chang-ping,SONG dan,MA You-ming.Analysis of the MP3 coding algorithm[J].Journal of Jiamusi University,2005,23(1):64-67.
[3]張力光,王讓定.心理聲學(xué)模型及其在 MP3編碼中的應(yīng)用[J].寧波大學(xué)學(xué)報(bào)(理工版),2010,23(3):27-30.ZHANG Li-guang,WANG Rang-ding.Psychoacoustic model and its application in MP3 coding[J].Journal of Ningbo University:Science and Technology,2010,23(3):27-30.
[4]ISO/IEC JTC1/SC29/WG11 MPEG,11172-3.Information Technology—Coding of Moving Pictures and Associated Audio for Digital Storage Media at up to About 1.5Mbit/s,part 3:Audio[S],1992.
[5]Shlien S.Guide to MPEG-1 Audio Standard[J].IEEE Transactions on Broadcasting,1994,40(4):214-215.
[6]McCandless M.The MP3 revolution[J].IEEE Intelligent Systems Archive,1999,14(3):8-9.