在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式


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,可以在終端機下輸入以下指令:

sudo apt-get install lame

在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式

LAME 使用方法

LAME自帶文件

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

lame --help

在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式

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

lame -?

在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式

在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式

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

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

LAME強大的參數系統可能會使得使用者難以調整,所以LAME很貼心地內建了幾組常用的配置,只要使用「--preset」參數就可以調用。內建的配置可依照輸出的音質優劣分為「insane」、「extreme」、「standard」、「medium」四種(雖然還有更多的ABR配置,但實在不建議使用,就不列出了)。以下將會以擁有CD音質WAV檔案(約47.2MB)來使用這四種配置進行實際轉檔測試。先來看看WAV檔的頻譜:

在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式

--preset insane

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

將測試用的WAV檔使用insane轉換後,得到大小約為10.7MB的檔案,頻譜如下:

在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式

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

--preset extreme

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

將測試用的WAV檔使用extreme轉換後,得到大小約為8.7MB的檔案,變動位元率平均為260.9kbps,頻譜如下:

在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式

從上圖可以發現將WAV轉換成使用extreme配置的MP3後,頻譜竟然幾乎沒有改變。但實際播放來聽,也聽不出與原始檔案的差異。

--preset standard

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

將測試用的WAV檔使用standard轉換後,得到大小約為6.4MB的檔案,變動位元率平均為191.8kbps,頻譜如下:

在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式

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

--preset medium

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

將測試用的WAV檔使用medium轉換後,得到大小約為5.2MB的檔案,變動位元率平均為154.6kbps,頻譜如下:

在Linux上使用LAME MP3 Encoder將音樂轉成MP3格式

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

使用--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套件,可以使用以下指令來安裝:

sudo apt-get install flac

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

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

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

APE(MAC)轉MP3

APE(或是MAC)為Monkey's Audio的格式,由於官方政策的關係,在Linux上如果要進行解碼,只能使用以下的非官方套件:

32位元版本64位元版本

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

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

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

Ogg轉MP3

必須要先有vorbis-tools套件,可以使用以下指令來安裝:

sudo apt-get install vorbis-tools

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

oggdec 輸入檔案路徑 -o "./oggtemp.wav" ; lame --preset extreme "./oggtemp.wav" 輸出檔案路徑 ; rm "./oggtemp.wav"

經實測,oggdec無法直接透過標準輸入輸出串流與LAME正常溝通,因此中間使用了「oggtemp.wav」作為轉檔過程中的暫存檔。

AAC(M4A)轉MP3

必須要先有faad套件,可以使用以下指令來安裝:

sudo apt-get install faad

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

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

Opus轉MP3

必須要先有opus-tools套件,可以使用以下指令來安裝:

sudo apt-get install opus-tools

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

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

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章