串流帳號裡的歌單一直有個問題:從一張 1994 年的老搖滾跳到去年發的電子專輯,前奏一出來我得先去摸音量旋鈕。我手邊的本地庫大概 600 張專輯、約 8000 個檔案,主要是 FLAC,少數是十幾年前留下來的 320k MP3。播放端是 foobar2000 加一個客廳用的樹莓派串流,兩邊都想解決,於是決定跑一次 ReplayGain。
第一步是先確認標籤現況。很多檔案本来就帶 RG,但來源不一,有的是專輯增益、有的是單曲增益,還有一些是舊版 foobar 寫的。我用 ffmpeg 掃一遍,把有 RG 標籤的檔案列出來,避免重複計算:
find /music -type f \( -name '*.flac' -o -name '*.mp3' \) -print0 \
| xargs -0 -n1 sh -c 'ffprobe -v quiet -show_entries format_tags -of json "$0" \
| grep -q replaygain && echo "$0"'
清掉舊標籤後,我用 loudgain 重算,重點是專輯模式,讓同張專輯內的相對動態保留:
loudgain -s e -k -a -o a -d /music/某專輯/*.flac
-a 是專輯增益,-k 保留峰值資訊,-s e 用 EBU R128 的響度目標。跑完 600 張大概花了三個多小時,樹莓派上更慢,所以我是先在桌機算完再把檔案同步過去。
為什麼不直接用單曲增益?因為我大部分的聆聽是整張專輯從頭放到尾。單曲模式會把每首歌拉到同一個響度,代價是專輯裡原本刻意安排的安靜段落、連續曲之間的起伏全部被抹平。我試過一次,某張現場專輯的 applause 和下一首開頭的落差變得很怪,聽起來像被壓成一個平面。專輯模式讓同一張專輯共用一個增益值,代價是跨專輯還是會有落差,但那個落差我寧可手動調。
會失效的地方比我想的多。第一,串流端不一定吃 RG 標籤,樹莓派上的某些播放器只讀自己的資料庫欄位,得另外設。第二,MP3 的 RG 標籤寫法有 REPLAYGAIN_TRACK_GAIN 和舊式 RG_RADIO 之類的分歧,換播放器就可能讀不到。第三,我踩過最大的坑是合輯:一張 20 首歌的合輯,專輯模式會把所有歌綁在一起,但裡面本來就有幾首是從不同來源拼進來的,響度基準根本不一樣,結果反而更糟。後來我對合輯改成逐曲模式,其他維持專輯模式。
現在客廳音響聽老搖滾不用再摸旋鈕了,但跨專輯的落差還在。想問的是:你們在處理合輯或精選輯時,是逐曲歸一,還是乾脆不碰、留給播放端的音量正規化?


0 条评论
还没有评论,写下第一条。