手邊有一張 2003 年的現場專輯,CD 抓軌成 FLAC,另外有一份串流平台下載的 320k MP3。兩份檔案時長差不到 0.2 秒,但同一段吉他反饋聽起來就是不太一樣。我想知道差別在哪,於是把兩份都丟進 Spek 看頻譜,再匯出成圖片疊在一起比對。
做法很土:先確認兩份檔案沒有做過音量歸一化,用 ffmpeg 把開頭 30 秒切出來,重採樣到同一個取樣率,再交給 sox 產生頻譜圖。
ffmpeg -ss 00:01:12 -t 30 -i track.flac -ar 44100 -ac 2 seg.flac
ffmpeg -ss 00:01:12 -t 30 -i track.mp3 -ar 44100 -ac 2 seg.wav
sox seg.flac -n spectrogram -o spec_flac.png -x 1200 -y 600
sox seg.wav -n spectrogram -o spec_mp3.png -x 1200 -y 600
切同一段很重要。我一開始直接拿整首跑,結果兩個檔案開頭有幾毫秒的靜音差,圖一疊上去,低頻紋理整個對不齊,看起來像編碼差異,其實只是偏移。改成手動對到同一個小節起點之後,圖才乾淨。
比對的結果很具體:320k MP3 在 16kHz 以上有一條明顯的水平切線,上面幾乎是空的;FLAC 在同一區還看得到鈸的殘響尾巴。但真正讓我意外的是 2kHz 到 5kHz 這一段,MP3 在幾處人聲換氣的位置有輕微的塊狀感,FLAC 沒有。這不是「無損一定比較好」的證明,只是這一份檔案的編碼器選擇留下的痕跡。
代價是這個方法很慢,而且只能看不能聽。頻譜圖漂亮不代表耳朵買單,反過來也一樣。我試過拿它去判斷一張本來就錄得很薄的現場盤,結果兩份圖長得幾乎一樣,差異小到沒有意義。
失效的地方有幾個。第一,如果來源本身就是從 MP3 轉成 FLAC 的假無損,頻譜圖上那條切線會直接出賣它,但反過來,真正的無損被重新取樣過,也可能出現類似的邊界,不能只看圖就下結論。第二,16kHz 以上本來就很多人聽不到,與其盯著那條線,不如回來聽那個換氣。第三,我踩過最大的坑是拿不同母帶版本的檔案比,圖上所有差異其實來自混音,跟編碼一點關係都沒有。
現在我只在懷疑某份檔案來源的時候才跑這個流程,當成一個便宜的檢查,不當成評分標準。
你們比對兩個版本的時候,是切同一段對齊再比,還是直接整首丟進去?我很好奇有沒有人用別的方式處理那個毫秒偏移。


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