Friday, February 09, 2007

Foobar2000: Replay Gain

聽音樂經常會碰到一種問題,由於個人習慣的關係,常會把不同專輯的歌,混合在同一個播放清單中,這樣一起播放比較方便。但每首歌呈現出來的聲音大小都不一樣,於是某些歌變得相對小聲或是相對大聲,這時為了讓每首歌盡量一樣大聲,所以必須經常性的手動調整聲音的大小。Replay Gain就是用來解決這種惱人的問題,筆者會在本文中介紹實作的方法。

關於Replay Gain的技術資訊,在Wikipedia英文版中文版有更詳盡的說明,本文中並不針對技術層面做太多解釋。簡單來說,先使用軟體計算每首歌響度期望響度的差值,而期望響度通常設為89dB聲壓,即得到增益(Gain),然後再分別存至每個檔案的metadata中。當遇到支援Replay Gain的播放程式時,會先檢查音樂檔案中的metadata是否包含Replay Gain訊息,若偵測到則會自動調整播放程式的音量輸出,使音量增加或減少至指定響度。

整個過程中,只是在音樂檔的metadata中附加Replay Gain訊息,並未對原始聲音做任何調整。這意味著若不再使用此功能,或想還原成原來的響度時,也只需清除metadata中的Replay Gain訊息。傳統方法中,需要重新編碼聲音檔案,此時對原始的聲音資訊已經造成傷害;若想要復原成先前的狀態也不可能,因為原始的聲音資訊已經不存在。

使用此功能時,必須要有軟體的支援才行,若軟體不認得Replay Gain的metadata時,則Replay Gain不會起任何作用。目前在Windows中,foobar2000Winamp有支援此功能,而foobar2000在官方安裝檔內就有包含具有此功能的Plug-in,Winamp則需要額外安裝外掛程式來支援此功能。foobar2000可以播放和製作Replay Gain所需的資訊,且支援音軌增益(Track Gain)專輯增益(Album Gain)兩種模式,再加上程式本身體積小、執行速度快、介面簡單,使得它成為筆者最常用的音樂播放軟體。Winamp需透過外掛的支援,且似乎只有播放功能而沒有製作功能,筆者對Winamp較無研究,所以這部分有待其它人補充。

接下來筆者用foobar2000來實作此功能,過程極為簡單!本例使用v0.9.1版,各版本的操作方法大致上相同,新版或舊版的選項有些許出入的部分,請自行修正成相對應的選項。

首先開啟foobar2000,並放入您會同時一起聽的歌曲。放置完成後,按下Ctrl+A全選所有歌曲,或只選擇您想要處理的歌曲,再按下右鍵並選擇下圖選擇的選項。在本例中是一起處理所有的歌曲,也就是音軌增益(Track Gain)模式,您可以自行測試其它選項。


Fig. 1: Scan per-file track gain (Click to enlarge)


若您的歌曲本身含有別人先前寫入的Replay Gain資訊,則會看到下圖的對話框,若您需保留先前資訊的按「否」,而本例選擇寫入新資訊則需按「是」。若原先歌曲未含Replay Gain資訊,則不會出現此對話框。


Fig. 2: ReplayGain info already existed (Click to enlarge)


接著會出現下圖的視窗,中間顯示目前整體處理的進度。下排的文字從左至右,分別是經過的時間估計完成所需的總時間目前一秒相當於幾倍的播放速度,如71倍的意思是1秒的時間等於讀取71秒的音樂。


Fig. 3: ReplayGain scan in progress (Click to enlarge)


處理完成後會看到下圖的視窗,裡面會列出處理的結果。其中Gain和Peak值會出現在Album或Track,決定在之前選擇的模式。按下Update file tags後,Replay Gain資訊會寫入至相對應的檔案中。


Fig. 4: Scan result (Click to enlarge)


軟體操作的部分到這裡結束,再來就是您享受成果的時候了。在不同的曲子間切換時,聽聽看有沒有和之前不一樣呢?

No comments: