◆ 「漫談數位音樂」6~MP3壓縮編碼淺介 專欄作者 發表日期 閱讀次數 回應篇數 LukeLo 02-02-04 22713 0
MPEG與MP3的壓縮方式 MP3是當前最流行的音訊壓縮格式,全名為MPEG Audio Layer 3,為MPEG(Moving Pictures Expert Group)這個團體當初和影像壓縮格式同時研發的音訊壓縮格式。舉凡一般VCD影像壓縮所使用的MPEG1,音訊所使用的MP2編碼,以及DVD-Video影像壓縮所使用的MPEG2編碼都是這個團體的研發產物。這些影像和音訊的編碼都是失真(破壞性)壓縮。相較於CD和DVD的容量,未壓縮的影像和音訊資料容量是非常龐大的。想像一片音樂CD本來只可以儲存74分鐘的聲音(其實超過74分鐘的音樂CD也很多,甚至有超過80分鐘的),在VCD中不但要儲存差不多長度的音效還要加入畫面,可見壓縮率必須相當高,而且必然是破壞性的。DVD-Video的聲音格式常用的有LPCM,Dolby Digital,dts,其中LPCM通常是16Bits,48kHz立體聲訊號,與Dolby Digital同屬與DVD標準音訊規格。Dolby Digital如同MP2,MP3也是一種破壞性壓縮編碼,特色為聲道數從立體聲到5.1聲道(最新的是7.1聲道的Dolby Surround EX)都有,壓縮流量最大可達448kbps(kilo bits per second),將這個數字除以三對喇叭的的資料,我們可以算出每對喇叭(前置或後置)可以分到的流量約為149.3kbps,與時下流行的128kbps MP3大不了多少,且壓縮效率又比MP3差,因此其實大家不用對DVD-Video的Dolby Digital聲音品質存有太大的遐想,其實流量只比普通的MP3大一點點而已,何況448kbps只是最大流量,很多DVD-Video根本沒有用到這麼大的流量。 DVD-Video的dts與音軌前面提到的dts CD使用同樣的編碼技術,最大流量與立體聲LPCM相同,也就是每秒48000*16*2=1536000bps=1536kbps,遠比Dolby Digital所提供的448kbps來得大,破壞性壓縮失真較少,因此可以想見dts DVD的音質一定比Dolby Digital來得好,這也就是為什麼市面上經過dts編碼的DVD總是賣得比較貴,身價高人一等的原因。一般支援dts的DVD-Video為了在不支援dts的設備上也可以播放所以通常會同時搭載經過Dolby Surround編碼的二聲道的Dolby Digital音訊。 到此還沒說明為什麼MP3壓縮比例為何那麼高。音樂CD的流量是每秒44100*16*2 =1411200bps =1411.2kbps,而我們常用的MP3流量只有128kbps,壓縮後的容量小於原先的十分之一,而聽起來聲音卻還不錯。MP3壓縮時運用到五個重要的技巧,分別是最小聽覺門檻判定(The minimal audition threshold),遮蔽效應(The Masking effect),位元儲存槽(The reservoir of bytes),The Joint Stereo,和Huffman編碼。 最小聽覺門檻判定是一種減少資料量的手段,因為人耳對不同頻率的聲音聽到的音量反應不是平直的,因此我們可以將大部分的紀錄資訊集中在人耳最靈敏的2kHz到5kHz,其餘頻率分配比較少的容量紀錄。 遮蔽效應也是聽覺心理學模型(Psychoacoustic models)的一種,在視覺上呈現的效果是在大太陽下比較難看到天空中飛翔的鳥,聽覺上的涵義就是當有一個音量或音色特別突出的聲音出現,其他細小的聲音會比較難被察覺,就像是管絃樂團齊奏時不易發現觀眾的咳嗽聲,儘管咳嗽的音量與沒有其他聲音時其實是相同的。因此在編碼時我們不需要把所有的聲音細節都編進去,而該把資料拿去紀錄比較突出容易引起注意的聲音。 位元儲存槽在解釋前要先說明MP3的流量屬性,CBR和VBR。CBR是Constant Bitrate的縮寫,也就是說該MP3每秒鐘的資料流量是固定的,常見的MP3都是以CBR編碼,好處是壓縮速度快。相對的VBR是Variable Bitrate的縮寫,每秒鐘的流量是可以變化的,好處是在訊號複雜時用比較多的容量去紀錄,波型簡單時就用比較低的流量,以有效利用空間。CBR的缺點就是每秒鐘的流量都相同,很容易造成空間的浪費,因此有reservoir of bytes的出現,用途是當波型簡單時不要用那麼大的流量,把多餘的空間保留下來儲存將來比較複雜的波性資料,維持流量的大小,達到類似VBR的效果。VBR的MP3並不需要reservoir of bytes。 Joint Stereo是一種立體聲編碼技巧,主要分為Intensity Stereo(IS)和Mid/Side (M/S) stereo兩種。IS的是在比較低流量時使用,利用了人耳對於高頻訊號向位分辨能力的不足,將音訊資料中的低頻分解出來合成單聲道資料,剩餘的高頻資料則合成另一個單聲道資料,並另外紀錄高頻資料的位置資訊,來重建立體聲的效果。例如鋼琴獨奏的錄音就可以利用這種方法在有限的資料流量中減少音場資訊但大幅增加音色資訊。 Mid/Side (M/S) stereo在左右聲道資料相似度大時常被用到,紀錄方式是將左右聲道音訊合併(L+R)得到新的一軌,再將左右聲道音訊相減(L-R)得到另外一軌,然後再將這兩軌資料用上面提到聽覺心理學模型與濾波器處理。Mid/Side (M/S) stereo與IS一樣的是利用部分相位(phase)資訊的損失來換得較高的音色紀錄資訊。一般的MP3是Mid/Side stereo和Intensity Stereo交替使用的,視資料內容與流量而定。如果是更高流量如160kbps以上的MP3,則可以單獨將立體聲的兩個聲道獨立編碼,以保存相位資訊。 Huffman編碼(coding)是一種常見的無失真壓縮方案。當PCM訊號被分成好幾個頻段並經過以上的處理之後,最後經過MDCT(Modified Discrete Cosine Transform)(類似FFT(Fast Fourier Transforms)),將波型轉換為一連串的系數。這些系數最後經過Huffman編碼來做最後的壓縮。Huffman編碼的原理是將比較常出現的字串用特定的符號表示,壓縮後就得到一個紀錄每個符號代表的字串的編碼表以及一連串由各符號組成的資料內容。Huffman編碼可以節省約20%的空間,而也因為經過了Huffman編碼,我們可以發現用WinZip、WinRAR之類的壓縮軟體並沒有辦法把MP3檔縮小多少,理由就是因為這些壓縮軟體也是利用類似Huffman編碼的技巧,因此壓縮程度有限。以上關於MP3編碼的資料取自http://www.mp3-tech.org/tech.html。 MP3播放時的運算遠比編碼時簡單,只要先經過Huffman解碼再由MDTC的逆運算重建波型就可以了,值得注意的是MP3不同於PCM沒有振幅紀錄精度(bits)的概念,我們可以自由使用16bits或是20bits甚至24bits的運算精度來重建波型。一般的MP3 Player運算精度都是16bits,而Winamp的MP3解碼外掛MAD(作者網頁http://www.mars.org/home/rob/proj/mpeg/mad-plugin/)則是以24bits處理,如果使用的音效卡支援24bits格式的PCM,就可以直接輸出24bits的訊號。一般的娛樂用音效卡都只有16bits數類轉換能力,因此訊號送給音效卡前必須要先經過re-dithering的過程,我們從之前的介紹可以知道經過這樣的處理可以聽到比16bits更多的聲音資訊與動態範圍,因此MAD在一般的音效卡上仍有其使用價值。筆者使用MAD與Winamp 2.74內建的MP3 decoder比較,發現MAD音質的確比較好,聲音開闊,小提琴擦弦感與鋼琴力度都比內建decoder好很多,強烈建議各位聽MP3時搭配使用。 網路上有相當多的MP3壓縮軟體,有的強調速度快,有的強調使用介面間單易用。我個人是以音質作為第一考量,趁此幾會再次向各位推薦一個免費的MP3壓縮程式LAME(下載位置http://www.jthz.com/~lame/),這套程式屬於自由軟體,遵照GPL規範,為網路上很多熱心人士所集體研發而成,目前仍持續更新中,原始網頁為http://www.mp3dev.org/mp3/。截稿之前本軟體已經有3.90beta版,。搭配LAME的前導程式是RazorLame,有關於此程式的使用說明與壓縮參數介紹請參考: http://www.dearhoney.idv.tw/MP3/Encoder/Tiberius20001119/。 比MP3進步的壓縮格式還有mp3Pro和AAC,請參考以下網頁介紹。 http://www.dearhoney.idv.tw/MP3/mp3PRO/ http://www.dearhoney.idv.tw/phpBB/article/viewtopic.php?forum=3&topic=19810&start=0 從前Internet頻寬還不大時,MP3的交流比較少見,一般網頁通常使用MIDI作為背景音樂。MIDI也是數位音樂的一大分支,以下就來介紹MIDI。
转载于:https://www.cnblogs.com/gkb986/archive/2012/01/14/2322596.html