Vorbis Tools包含了Ogg的編碼器(oggenc)、解碼器(oggdec)以及其它相關工具。Ogg是開源、自由、免費的音訊編碼格式,沒有麻煩的專利授權問題。若拿相同大小的MP3和Ogg格式的音樂檔案來比較,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官方網站:

以下均以Linux Mint為例。

安裝Vorbis Tools

如果要安裝Vorbis Tools,可以在終端機下輸入以下指令:
sudo apt-get install vorbis-tools
linux-ogg

Vorbis Tools包含什麼工具?

Vorbis Tools包含了以下幾種工具:
  • ogg123:Ogg的播放器,可以從檔案或是從網路串流播放Ogg。
  • oggdec:Ogg的解碼器。
  • oggenc:Ogg的編碼器。
  • ogginfo:Ogg檔案的資訊顯示器。
  • vcut:剪輯Ogg檔案的工具。
  • vorbiscomment:查看或是編輯Ogg檔案註解的工具。
這篇文章將會著重介紹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上如果要進行解碼,只能使用以下的非官方套件: 使用以下指令可以將APE(或是MAC)格式的音樂檔案轉成Ogg音樂檔:
mac 輸入檔案路徑 - -d | oggenc -q 7 - -o 輸出檔案路徑
mac的-d參數表示要進行解碼(decode)。

Opus轉Ogg

必須要先有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),沒有意義。