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),必須配合其他工具一起使用才行!

安裝LAME

基於Debian的Linux發行版執行以下指令來安裝:

sudo apt install lame

基於紅帽的Linux發行版執行以下指令來安裝:

sudo dnf install lame

LAME 使用方法

LAME自帶文件

安裝好LAME後,在終端機下輸入以下指令,可以查看LAME的用法:

lame --help

linux-lame

如果要看更進階的用法與各個參數的說明,可以輸入以下指令:

lame -?

linux-lame

linux-lame

linux-lame

從上圖中可以看到LAME可以設定的參數實在是太多了,真是令人眼花撩亂,但其實我們只要會使用--preset參數就已經足夠應付大部分的狀況。

LAME內建的轉檔配置(--preset參數)

LAME強大的參數系統可能會使得使用者難以調整,所以LAME很貼心地內建了幾組常用的配置,只要使用--preset參數就可以調用。內建的配置可依照輸出的音質優劣分為insaneextremestandardmedium四種。以下將會以擁有CD音質的WAV檔案來使用這四種配置進行實際轉檔測試。先來看看WAV檔的頻譜:

linux-lame

--preset insane

insane是LAME內建的四種配置中的最高品質配置,同時也是唯一一種使用CBR(固定位元率)編碼方式,位元率為MP3最大的320kbps。

將測試用的WAV檔使用insane轉換後,得到的音樂檔的檔案大小約為原先的23%,頻譜如下:

linux-lame

從上圖可以發現將WAV轉換成使用insane配置的MP3後,20.1KHz以上的資料完全消失。但實際播放來聽,卻聽不出與原始檔案的差異,這是因為20KHz以下的頻譜幾乎沒有改變。

--preset extreme

extreme是LAME內建的三種使用VBR(變動位元率)編碼配置中的最高品質配置。

將測試用的WAV檔使用extreme轉換後,得到的音樂檔的變動位元率平均為277kbps,檔案大小約為原先的20%,頻譜如下:

linux-lame

從上圖可以發現將WAV轉換成使用extreme配置的MP3後,頻譜在16KHz以上發生些許改變,尤其大概在18.7KHz以上的頻率衰減更為明顯。但實際播放來聽,也聽不出與原始檔案的差異。

--preset standard

standard是音樂品質以及音樂檔案大小較平衡的配置。

將測試用的WAV檔使用standard轉換後,得到的音樂檔的變動位元率平均為204kbps,檔案大小約為原先的14%,頻譜如下:

linux-lame

從上圖可以發現將WAV轉換成使用standard配置的MP3後,18.7KHz以上的音訊完全消失。實際播放來聽,已可以略為聽出聲音有些壓縮感,不如原始的清晰,但還算是不錯的音質。

--preset medium

medium是LAME內建的四種配置中品質最差的配置。

將測試用的WAV檔使用medium轉換後,得到的音樂檔的變動位元率平均為152kbps,檔案大小約為原先的11%,頻譜如下:

linux-lame

從上圖可以發現將WAV轉換成使用medium配置的MP3後,16KHz以上的資料已走樣,17.5KHz以上的資料完全消失。實際播放來聽,已可以聽出聲音有些壓縮感,不如原始的清晰,而且聽久了會有暈眩感。

--preset 位元率

直接在--preset參數後加上位元率,可以使用ABR(平均位元率)編碼方式來進行MP3編碼,如此一來就可以預估編碼後的MP3檔案大小。不過這個很少使用,就不多提了。

使用--preset參數來轉檔

根據以上四種LAME內建的配置測試,medium配置是不用考慮的項目,用它轉換出來的MP3檔案大小和使用standard配置轉換出來的MP3檔案大小差不多,卻可以明顯聽出音質差異。所以說,如果有檔案傳輸需求的話,standard配置絕對是首選,而聽起來和extreme幾乎一樣的insane則不用考慮。如果是要收藏音樂的話,extreme是首選。insane配置可能只有在需要「320kbps」這個噱頭時才會用到。

如果我們要使用extreme配置進行轉檔,可以使用以下指令:

lame --preset 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套件。

基於Debian的Linux發行版可以使用以下指令來安裝:

sudo apt install flac

基於紅帽的Linux發行版可以使用以下指令來安裝:

sudo dnf install flac

使用以下指令可以將FLAC格式的音樂檔案轉成MP3音樂檔:

flac -c -d 輸入檔案路徑 | lame --preset extreme - 輸出檔案路徑

flac指令的-c參數表示將輸出改成標準輸出(同-o -),-d參數表示要進行解碼(decode)。

APE(MAC)轉MP3

APE(或是MAC)為Monkey's Audio的格式,在Linux上如果要進行解碼,得使用以下的非官方套件(基於Debian的Linux發行版):

使用以下指令可以將APE(或是MAC)格式的音樂檔案轉成MP3音樂檔:

mac 輸入檔案路徑 - -d | lame --preset extreme - 輸出檔案路徑

mac指令的-d參數表示要進行解碼(decode)。

Ogg轉MP3

必須要先有vorbis-tools套件。

基於Debian的Linux發行版可以使用以下指令來安裝:

sudo apt install vorbis-tools

基於紅帽的Linux發行版可以使用以下指令來安裝:

sudo dnf install vorbis-tools

使用以下指令可以將Ogg格式的音樂檔案轉成MP3音樂檔:

oggdec 輸入檔案路徑 -o - | lame --preset extreme - 輸出檔案路徑

AAC(M4A)轉MP3

必須要先有faad套件。

基於Debian的Linux發行版可以使用以下指令來安裝:

sudo apt install faad

基於紅帽的Linux發行版可以使用以下指令來安裝:

sudo dnf install faad2

使用以下指令可以將AAC(M4A)格式的音樂檔案轉成MP3音樂檔:

faad -o - 輸入檔案路徑 | lame --preset extreme - 輸出檔案路徑

Opus轉MP3

必須要先有opus-tools套件。

基於Debian的Linux發行版可以使用以下指令來安裝:

sudo apt install opus-tools

基於紅帽的Linux發行版可以使用以下指令來安裝:

sudo dnf install opus-tools

使用以下指令可以將Opus格式的音樂檔案轉成M4A音樂檔:

opusdec --force-wav 輸入檔案路徑 - | lame --preset extreme - 輸出檔案路徑