原文地址:http://www.eefocus.com/jjbearustc/blog/07-09/3460_8d0d0.html#articletop
MP3編碼主要由3大功能模組組成,包括混合濾波器組(子帶濾波器和MDCT),心理聲學模型,量化編碼(位元和位元因子分配和哈夫曼編碼)。
1. 混合濾波器組。這部分包括子帶濾波器組和MDCT兩部分。子帶濾波器組編碼完成樣本訊號從時域到頻域的映射,並將規定的音頻訊號通過帶通濾波器組分解成32個子帶輸出。子帶濾波器組輸出的32個子帶是等頻寬的,而由心理聲學模型得出的臨界頻寬則不是等頻寬的,所以為了使得進行編碼的各個比例因素帶與臨界頻帶相匹配,需要對每個子帶訊號做MDCT變換。將子帶濾波器組的輸出送到MDCT濾波器組後,每組將細分為18條頻線,共產生576條頻線。然後利用心理聲學模型中計算出來的子帶訊號的信掩比,決定分配給576條譜線的位元數。
2. 心理聲學模型。心理聲學模型利用了人耳聽覺系統的遮蔽效應特性,移除大量的不相關訊號,從而達到壓縮音頻資料的效果。為了精確地計算遮蔽閾值,要求訊號有更好的頻域解析度,因此在使用心理聲學模型前先對訊號進行傅立葉變換。MPEG-I提供了兩種心理聲學模型,第一種模型計算簡單,在高位元速率編碼時提供適當精度,第二種模型比較複雜,一般在較低位元速率編碼時使用。MP3編碼中一般使用心理聲學模型二。心理聲學模型的目的就是求出各個子帶的掩蔽域值,並以此控制量化過程。心理聲學模型實現過程一般是先用FFT求出訊號的頻譜特性,根據頻譜特性找出各頻率點上的音調成分(有些稱為音樂成分)和非音調成分(或稱噪音成分);根據掩蔽域曲線確定各個音調成分和非音調成分在其它頻率點的掩蔽域值;最後求出各頻率點的總體掩蔽域,並折算到編碼子帶中。對於子帶濾波器組輸出的譜值量化後產生的雜訊,如果能夠被控制在掩蔽域值以下,則最終的壓縮資料被解碼後的結果與原始訊號可以不加區分。一個給定訊號的掩蔽能力取決於它的頻率和響度,所以心理聲學模型的最終輸出是信掩比SMR(signal-to-maskradio),即訊號強度與掩蔽閾值的比率。
3. 量化編碼。量化編碼使用一個三層迭代迴圈模型來實現位元分配和量化。這三層包括:幀迴圈,外層迴圈和內層迴圈。幀迴圈複位所有的迭代變數,計算能夠提供給每節資料的最大位元數,然後調用外層迭代模型;外層迭代模型首先使用內層迭代模型,內層迭代模型對輸入向量進行量化,通過遞增量化步長使量化輸出能夠在一定的位元位元限制之內被編碼。哈夫曼編碼對量化的最大值有限制,所以需要判斷所有的量化值是否超過限制,如果超過限制,則內層迭代迴圈需要遞增量化步長,重新量化。然後確定哈夫曼編碼的位元,使其所佔的位元數小於由幀迴圈計算出的每節編碼所能提供的最大位元數,否則也要增加量化步長重新量化。當量化滿足要求後,儲存最終的比例因素數值,跳出外層迴圈,並在幀迴圈中計算儲存每節資料所用的位元位元。