LAME是一款高品質的MP3編碼器(Encoder),普遍認為經由LAME轉換出來的MP3檔案,可以維持住較好的音質。LAME為跨平台的開源軟體,在Linux系統上如果要將音樂檔案轉成MP3格式,可以使用LAME來輕易達成。LAME官方沒有提供圖形化介面,與其使用品質參差不齊、不曉得的會輸出什麼檔案的第三方圖形化介面,倒不如學習如何透過Command Line指令來操作LAME,精準地控制音樂檔案的輸出品質。
LAME的輸出品質可以直接從音樂檔案的頻譜看出來,可以參閱這篇文章來學習如何判斷MP3檔案的音質。
在繼續瞭解LAME之前,您必須要先知道LAME「只是」MP3編碼器,它不能夠將MP3音樂檔案轉換成其他的格式。而且,在一般情形下(無自帶額外解碼器),LAME只能夠讀取PCM(WAV)或是MPEG-1 Audio Layer(MP1、MP2、MP3)格式,如果要將其他格式的檔案轉成MP3(例如FLAC轉成MP3),必須配合其他工具一起使用才行!
以下均以Linux Mint為例。
安裝LAME
如果要安裝LAME,可以在終端機下輸入以下指令:
LAME 使用方法
LAME自帶文件
安裝好LAME後,在終端機下輸入以下指令,可以查看LAME的用法:
如果要看更進階的用法與各個參數的說明,可以輸入以下指令:
從上圖中可以看到LAME可以設定的參數實在是太多了,真是令人眼花撩亂,但其實我們只要會使用「--preset」參數就已經足夠應付大部分的狀況。
LAME內建的轉檔配置(--preset參數)
LAME強大的參數系統可能會使得使用者難以調整,所以LAME很貼心地內建了幾組常用的配置,只要使用「--preset」參數就可以調用。內建的配置可依照輸出的音質優劣分為「insane」、「extreme」、「standard」、「medium」四種。以下將會以擁有CD音質的WAV檔案(約47.2MB)來使用這四種配置進行實際轉檔測試。先來看看WAV檔的頻譜:
--preset insane
insane是LAME內建的四種配置中的最高品質配置,同時也是唯一一種使用CBR(固定位元率)編碼方式,位元率為MP3最大的320kbps。
將測試用的WAV檔使用insane轉換後,得到大小約為10.7MB的檔案,頻譜如下:
從上圖可以發現將WAV轉換成使用insane配置的MP3後,20.1KHz以上的資料完全消失。但實際播放來聽,卻聽不出與原始檔案的差異,這是因為20KHz以下的頻譜形狀幾乎沒有改變。
--preset extreme
extreme是LAME內建的三種使用VBR(變動位元率)編碼配置中的最高品質配置。
將測試用的WAV檔使用extreme轉換後,得到大小約為8.7MB的檔案,變動位元率平均為260.9kbps,頻譜如下:
從上圖可以發現將WAV轉換成使用extreme配置的MP3後,頻譜竟然幾乎沒有改變。但實際播放來聽,也聽不出與原始檔案的差異。
--preset standard
standard是音樂品質以及音樂檔案大小較平衡的配置。
將測試用的WAV檔使用standard轉換後,得到大小約為6.4MB的檔案,變動位元率平均為191.8kbps,頻譜如下:
從上圖可以發現將WAV轉換成使用standard配置的MP3後,18.7KHz以上的資料完全消失。實際播放來聽,已可以略為聽出聲音有些壓縮感,不如原始的清晰,但還算是不錯的音質。
--preset medium
medium是LAME內建的四種配置中品質最差的配置。
將測試用的WAV檔使用medium轉換後,得到大小約為5.2MB的檔案,變動位元率平均為154.6kbps,頻譜如下:
從上圖可以發現將WAV轉換成使用medium配置的MP3後,16KHz以上的資料已走樣,17.5KHz以上的資料完全消失。實際播放來聽,已可以聽出聲音有些壓縮感,不如原始的清晰,而且聽久了會有暈眩感。
--preset 位元率
直接在「--preset」參數後加上位元率,可以使用ABR(平均位元率)編碼方式來進行MP3編碼,如此一來就可以預估編碼後的MP3檔案大小。不過這個很少使用,就不多提了。
使用--preset參數來轉檔
根據以上四種LAME內建的配置測試,medium配置是不用考慮的項目,用它轉換出來的MP3檔案大小和使用standard配置轉換出來的MP3檔案大小差不多,卻可以明顯聽出音質差異。所以說,如果有檔案傳輸需求的話,standard配置絕對是首選,而聽起來和extreme幾乎一樣的insane則完全不用考慮。如果是要收藏音樂的話,extreme是首選。insane配置可能只有在需要「320kbps」這個噱頭時才會用到。
如果我們要使用extreme配置進行轉檔,可以使用以下指令:
使用-V參數來轉檔
如果想要更精細的調整lame的輸出品質,筆者不太建議直接使用「-b」參數來修改輸出的位元率,直接使用「-V」參數來交由LAME動態控制位元率會比較好。「-V」參數分為10種等級,數值為「0-9」,數值愈小品質愈好。如果要對照「--preset」參數的話,「-V 0」就是「--preset extreme」;「-V 2」就是「--preset standard」;「-V 4」就是「--preset medium」。用到「-V 4」已經會讓聲音聽起來有些壓縮感了,如果真的需要省空間,需要再將數值往上加的話,「-V 5」、「-V 6」可以跳過不使用,直接從會重新取樣的「-V 7」、「-V 8」、「-V 9」來嘗試,它們的音質和檔案大小的平衡在大部分的情況下會比「-V 5」、「-V 6」來得好。
LAME與其他解碼器合作
由於LAME所支援的輸入格式有限,因此常會與其他解碼器一同工作,利用外部的解碼器將特殊格式的音樂檔進行解碼,再將解碼結果傳給LAME進行格式轉換的工作。在終端機預設的bash script下可以使用「|」字元將兩個指令隔開在同一行中。字元「|」左邊的指令輸出到標準輸出串流(stdout)中的資料,會成為字元「|」右邊指令的標準輸入串流(stdin)。使用「-」字元可以指定要使用標準輸入/輸出串流的參數位置。
FLAC轉MP3
必須要先有flac套件,可以使用以下指令來安裝:
使用以下指令可以將FLAC格式的音樂檔案轉成MP3音樂檔:
flac的-c參數表示將輸出改成stdout(同-o -),-d參數表示要進行解碼(decode)。
APE(MAC)轉MP3
APE(或是MAC)為Monkey's Audio的格式,由於官方政策的關係,在Linux上如果要進行解碼,只能使用以下的非官方套件:
使用以下指令可以將APE(或是MAC)格式的音樂檔案轉成MP3音樂檔:
mac的-d參數表示要進行解碼(decode)。
Ogg轉MP3
必須要先有vorbis-tools套件,可以使用以下指令來安裝:
使用以下指令可以將Ogg格式的音樂檔案轉成MP3音樂檔:
經實測,oggdec無法直接透過標準輸入輸出串流與LAME正常溝通,因此中間使用了「oggtemp.wav」作為轉檔過程中的暫存檔。
AAC(M4A)轉MP3
必須要先有faad套件,可以使用以下指令來安裝:
使用以下指令可以將AAC(M4A)格式的音樂檔案轉成MP3音樂檔: