新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于定點(diǎn)DSP的MP3音頻編碼算法研究

基于定點(diǎn)DSP的MP3音頻編碼算法研究

作者: 時(shí)間:2012-07-05 來源:網(wǎng)絡(luò) 收藏

是MPEG-1國際標(biāo)準(zhǔn)中音頻壓縮層3的簡稱,單聲道比特率一般取64kbps,在采樣率44.1kHz的情況下,其壓縮比可達(dá)12倍以上,被廣泛應(yīng)用于互聯(lián)網(wǎng)等許多場合?由于解碼比編碼過程簡單很多,播放機(jī)或隨身聽已隨處可見,但編碼在單片定點(diǎn)上實(shí)現(xiàn),并要保證音質(zhì),則鮮有耳聞?考慮到心理聲學(xué)模型在整個(gè)MP3算法中所占比例巨大,筆者從簡化該模型入手,采用快速算法減少子帶編碼的運(yùn)算量和數(shù)據(jù)量,盡可能減少量化編碼的迭代循環(huán)次數(shù),從而在一片美國德州儀器公司的TMS320C549TMS320C549芯片上實(shí)現(xiàn)了MP3的實(shí)時(shí)壓縮,用標(biāo)準(zhǔn)解碼軟件回放,主觀評(píng)定,對(duì)于通常的音頻能達(dá)到接近CD的音質(zhì)?

本文引用地址:http://2s4d.com/article/257383.htm

1 MP3編碼算法及原理

圖1是MP3編碼器的系統(tǒng)方框圖?每聲道以1152個(gè)采樣值為一幀進(jìn)行處理?首先,分析子帶濾波采用正交鏡像濾波器組,將20kHz左右?guī)挼男盘?hào)劃分成相等帶寬的32個(gè)子帶?然后對(duì)子帶樣值作MDCT以補(bǔ)償子帶濾波的不足,主要是為提高頻率分辨率?消除由子帶濾波引起的帶間混迭?


同時(shí)采樣值通過心理聲學(xué)模型計(jì)算出各頻帶的掩蔽閾值?

失真控制循環(huán)和非歸一化量化控制循環(huán)是量化編碼循環(huán)過程,它通過量化減少各MDCT系數(shù)的精度,使編碼比特?cái)?shù)得以降低?不同系數(shù)采用不同的量化階,人耳敏感的頻率量化精度高,不敏感的頻率量化精度低,量化誤差則不會(huì)被人耳察覺?選擇量化階的依據(jù)就是心理聲學(xué)模型計(jì)算出的掩蔽閾值? 最后將量化階等信息以及霍夫曼碼打包成比特流,供解碼用?

那么為什么掩蔽閾值能反映人耳的聽覺特點(diǎn)呢?

人耳的聽覺特性涉及生理聲學(xué)和心理聲學(xué)方面的問題?例如人耳對(duì)不同頻率的聲音感覺不同就是生理方面的問題,其中對(duì)2kHz~4kHz的聲音最敏感,且低頻較高頻敏感?敏感程度具體體現(xiàn)為靜態(tài)掩蔽閾值,如圖2虛線所示,表示在安靜的情況下,各種頻率的聲音剛好被聽到的音量?與人的心理知覺有關(guān)的有掩蔽效應(yīng)等?掩蔽效應(yīng)指一個(gè)聲音的聽覺感受受到另一個(gè)聲音影響的現(xiàn)象,分為時(shí)間掩蔽(前向?后向掩蔽)和頻率掩蔽(同時(shí)掩蔽)?例如,當(dāng)一個(gè)較強(qiáng)的聲音停止后,要過一會(huì)兒才能聽到另一個(gè)較弱的聲音,這就是時(shí)間掩蔽效應(yīng)?頻率掩蔽是指一個(gè)聲音對(duì)與其同時(shí)存在的臨近頻率的聲音產(chǎn)生的影響,如圖2實(shí)線所示?其中標(biāo)志1的實(shí)線表示:當(dāng)1kHz的掩蔽聲音為60dB時(shí),不同頻率的聲音剛好被聽到的分貝值,可見越臨近頻率被掩蔽得越厲害,且低頻更易掩蔽高頻? 因此心理聲學(xué)模型就先用FFT分析信號(hào)中包含的頻率分量,將每個(gè)頻率處受到其他所有頻率分量掩蔽的值加起來,連線得到的曲線就是掩蔽閾值,是頻率的函數(shù)?當(dāng)某頻率分量的能量處在曲線下方時(shí),不能被人耳感覺到,則該頻率分量可用零比特編碼;另一方面,選擇量化階時(shí)若能保證量化噪聲低于掩蔽曲線,也不被人耳察覺,所以掩蔽閾值越大的頻率分量量化階可以越大?因此用掩蔽閾值作為量化編碼的依據(jù),就能夠保證壓縮后的聲音質(zhì)量?由于聲音信號(hào)隨時(shí)間改變,因此每幀信號(hào)都要計(jì)算兩次心理聲學(xué)模型,其中要用到大量的實(shí)驗(yàn)測試數(shù)據(jù),運(yùn)算量之大是可想而知的?


2 算法的簡化和優(yōu)化

2.1 分析子帶濾波器的快速算法

分析子帶濾波器的輸入是32個(gè)采樣值,輸出是32個(gè)頻率等間隔的子帶樣值?它首先將32個(gè)采樣值放入一個(gè)長度512的先進(jìn)先出(FIFO)緩存;對(duì)該緩存加窗;然后512個(gè)緩存中每8個(gè)值累加,轉(zhuǎn)換成64個(gè)中間值;最后通過(1)式將64個(gè)中間值變換成32個(gè)采樣值:


可見用(5)式代替(1)式可以減少一半的乘法運(yùn)算?又發(fā)現(xiàn)(5)式和標(biāo)準(zhǔn)的IDCT非常相似,可以將Lee提出的快速IDCT算法稍加改動(dòng)推導(dǎo)(5)式的快速算法?所以又將32點(diǎn)變換分解成以下的兩個(gè)16點(diǎn)變換:


最終的子帶樣值是如下的蝶形組合:

X[K]=Xe[k]+(1/cos[(2k+1)π/64])Xo[k],k=0,1,…,15 (11)
X[31-k]=Xe [k]-(1/cos[(k+1)π/64])Xo[k],k=0,1,…,15(12)

直接計(jì)算(1)式需要64×32次乘法和63×32次加法,采用快速算法需16×16×2+16×2次乘法和15×16×2+16×2+31+15次加法,運(yùn)算量為原來的1/4,而且數(shù)據(jù)表格所占用的存儲(chǔ)空間也減少為原來的1/8左右?


上一頁 1 2 下一頁

關(guān)鍵詞: DSP MP3 音頻編碼

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉