在Linux上使用Vorbis Tools將音樂轉成Ogg(Vorbis)格式


Vorbis Tools包含了Ogg編碼器(oggenc)、解碼器(oggdec)以及其它相關工具。Ogg開源、自由、免費的音訊編碼格式,沒有麻煩的專利授權問題。若拿相同大小的MP3Ogg格式的音樂檔案來比較,Ogg音質通常會比MP3還要來得好。更正確來說,Ogg一開始只是一個檔案封裝格式,就像M4A格式一樣,可以同時包含視訊與音訊在同一個檔案中,Vorbis才是Ogg檔案封裝格式所使用的音訊編碼格式,但後來為了相容性的考量,官方規定.ogg檔案只能存放Vorbis格式的音訊,而衍生出.oga、.ogv、.ogx等其他的檔案封裝格式,所以現在所稱的Ogg格式其實就是在說Vorbis格式。

目前已有比Vorbis格式還要更好的Opus格式,官方也建議使用Opus來取代Vorbis。有關Opus格式的介紹可以參考這篇文章

Vorbis支援32kbps到500kbps變動位元率(VBR),使用變動位元率(VBR),它的取樣頻率範圍在8kHz到192kHz,比AAC的96kHz還要高。

Vorbis官方網站:

http://www.vorbis.com/

以下均以Linux Mint為例。

安裝Vorbis Tools

如果要安裝Vorbis Tools,可以在終端機下輸入以下指令:

sudo apt-get install vorbis-tools

linux-ogg

Vorbis Tools包含什麼工具?

Vorbis Tools包含了以下幾種工具:

這篇文章將會著重介紹Ogg編碼器(oggenc)的用法。

Ogg編碼器oggenc

oggenc自帶文件

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

oggenc --help

linux-ogg

從上圖中可以看到oggenc可以設定的參數有許多種,但我們其實只要使用「-q」參數來調整輸出的Ogg之品質,就已經足夠應付大部分的狀況。

oggenc快速調整聲音輸出品質(-q參數)

oggenc提供了一個能牽一髮動全身的參數,那就是「-q」,只要調整這個值的大小,就可以影響輸出的位元率,這個值的範圍是「-1~10」,愈大音質愈高。以下將會以擁有高於CD音質WAV檔案(16bit, 48000Hz, 約41.6MB)來使用不同的「-q」參數值實際轉檔測試。

先來看看WAV檔的頻譜:

-q 10

將參數「-q」設置為10,可以輸出oggenc能夠支援的最高音質

將測試用的WAV檔用「-q 10」轉換後,得到大小約為13.3MB的Ogg檔案,變動位元率平均為490kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 10」的Ogg後,22.1kHz以上的頻率有明顯的變化,但22.1kHz以下的頻譜形狀幾乎沒有改變。實際播放來聽,也聽不出與原始檔案的差異。

-q 9

將參數「-q」設置為9,可以獲得檔案較小但聲音品質依然非常高的Ogg

將測試用的WAV檔用「-q 9」轉換後,得到大小約為9.0MB的Ogg檔案,變動位元率平均為332kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 9」的Ogg後,22.5kHz以上的頻率明顯被過濾,20.5kHz以上的頻率也有明顯的變化,但20.5kHz以下的頻譜形狀幾乎沒有改變。實際播放來聽,也聽不出與原始檔案的差異。

-q 8

將測試用的WAV檔用「-q 8」轉換後,得到大小約為6.8MB的Ogg檔案,變動位元率平均為251kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 8」的Ogg後,21.4kHz以上的頻率明顯被過濾,20.5kHz以上的頻率有更明顯的變化,18.7kHz至20.5kHz的頻譜形狀也有一點點的改變,但18.7kHz以下的頻譜形狀改變則不明顯。實際播放來聽,也聽不出與原始檔案的差異。

-q 7

將測試用的WAV檔用「-q 7」轉換後,得到大小約為6.1MB的Ogg檔案,變動位元率平均為224kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 7」的Ogg後,和「-q 8」的Ogg相比,20.5kHz以上的頻率有很明顯的變化,18.7kHz至20.5kHz的頻譜形狀也有一點點的改變,但18.7kHz以下的頻譜形狀改變則不明顯。實際播放來聽,也聽不出與原始檔案的差異。此時檔案大小已比原WAV檔案小了將近七倍!

-q 6

將測試用的WAV檔用「-q 6」轉換後,得到大小約為5.1MB的Ogg檔案,變動位元率平均為190kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 6」的Ogg後,和「-q 7」的Ogg相比,21kHz以上的頻率有很明顯的變化,18.7kHz至21kHz的頻譜形狀也有一點點的改變,但18.7kHz以下的頻譜形狀改變則不明顯。實際播放來聽,音質幾乎沒有受太大的影響。此時檔案大小已比原WAV檔案小了八倍多!

-q 5

將測試用的WAV檔用「-q 5」轉換後,得到大小約為4.4MB的Ogg檔案,變動位元率平均為160kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 5」的Ogg後,19.6KHz以上的資料完全消失,19.6kHz以下的頻譜形狀則只有一點點的改變。實際播放來聽,已可以略為聽出聲音不如原始的清晰,但還算是很不錯的音質

-q 4

將測試用的WAV檔用「-q 4」轉換後,得到大小約為3.7MB的Ogg檔案,變動位元率平均為136kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 4」的Ogg後,18.1KHz以上的資料完全消失,18.1kHz以下的頻譜形狀也有些明顯的改變。實際播放來聽,已可以聽出聲音有些壓縮感,不如原始的清晰,但還能接受。

-q 3

將測試用的WAV檔用「-q 3」轉換後,得到大小約為3.3MB的Ogg檔案,變動位元率平均為120kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 3」的Ogg後,18KHz以上的資料完全消失,17.1kHz以上的資料也已走樣,17.1kHz以下的頻譜形狀也有些明顯的改變。實際播放來聽,已可以聽出聲音有壓縮感。

-q 2

將測試用的WAV檔用「-q 2」轉換後,得到大小約為2.5MB的Ogg檔案,變動位元率平均為92kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 2」的Ogg後,16.6KHz以上的資料完全消失,16.6kHz以下的頻譜形狀也有明顯的改變。實際播放來聽,可以聽出聲音有很重的壓縮感。

-q 1

將測試用的WAV檔用「-q 1」轉換後,得到大小約為2.0MB的Ogg檔案,變動位元率平均為75kbps,頻譜如下:

linux-ogg

從上圖可以發現將WAV轉換成「-q 1」的Ogg後,16.4KHz以上的資料完全消失,15.7kHz以上的資料也已走樣,15.7kHz以下的頻譜形狀也有很明顯的改變。這音質已經完全讓人無法接受了,不要再用「-q 0」、「-q -1」來傷耳朵。

使用-q參數來轉檔

根據以上不同「-q」參數值的測試,「-q -1」、「-q 0」、「-q 1」不要使用比較好,很傷耳朵。如果是要收藏音樂的話,「-q 7」是首選,它可以省下將近七倍的空間,又可以保留原始音質。當然,如果有高位元率情節的話,還是可以用「-q 10」來收藏音樂,只是會多花將近二倍多的儲存空間。如果有檔案傳輸需求的話,「-q 6」是音質和檔案大小平衡的首選。

如果我們要使用「-q 7」進行轉檔,可以使用以下指令:

oggenc -q 7 輸入檔案路徑 -o 輸出檔案路徑

使用-b參數來轉檔

如果想要更精細的調整oggenc的輸出品質,可使用「-b」參數來指定Ogg的動態控制位元率的逼近值,範圍值是32~500。

oggenc與其他解碼器合作

由於oggenc所支援的輸入格式有限,因此常會與其他解碼器一同工作,利用外部的解碼器將特殊格式的音樂檔進行解碼,再將解碼結果傳給oggenc進行格式轉換的工作。在終端機預設的bash script下可以使用「|」字元將兩個指令隔開在同一行中。字元「|」左邊的指令輸出到標準輸出串流(stdout)中的資料,會成為字元「|」右邊指令的標準輸入串流(stdin)。使用「-」字元可以指定要使用標準輸入/輸出串流的參數位置。

FLAC轉Ogg

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

sudo apt-get install flac

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

flac -c -d 輸入檔案路徑 | oggenc -q 7 - -o 輸出檔案路徑

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

APE(MAC)轉Ogg

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

32位元版本64位元版本

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

mac 輸入檔案路徑 - -d | oggenc -q 7 - -o 輸出檔案路徑

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

OpusOgg

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

sudo apt-get install opus-tools

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

opusdec --force-wav 輸入檔案路徑 - | oggenc -q 7 - -o 輸出檔案路徑

AAC(M4A)轉Ogg

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

sudo apt-get install faad

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

faad -o - 輸入檔案路徑 | oggenc -q 7 - -o 輸出檔案路徑

MP3轉Ogg

這很明顯是用音質較差的聲音來源(MP3)包裝成看起來音質較高的檔案格式(Ogg),沒有意義。

關於作者

Magic Len

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

相關文章