部落格研究

MP3 會影響扒譜準確率嗎?WAV 與 MP3 實測比較

我們把同一批錄音分別以無損音訊、MP3 和 AAC 送進三個轉譜引擎,並設了一組人耳聽不出差別的對照。結果哪些變了、哪些沒變,以及該上傳哪種檔案。

先說結論

320 kbit/s 的 MP3 不會。2026年10月5日,我們用三個引擎分別轉了同一批錄音的無損版本,以及經過 MP3 和 AAC 編碼再解碼的版本:Spotify 的 Basic Pitch 處理 12 段吉他錄音,一個鋼琴獨奏模型處理 50 段鋼琴演奏,Mirelo 處理一首樂團歌曲。320 kbit/s 的 MP3 讓每個引擎的起音 F1(範圍 0 到 1)最多只變動 0.002,相當於幾千個音符裡只變了寥寥幾個,而且每個檔案的長度精確到取樣點、分毫不差。192 kbit/s 的 MP3 和 256 kbit/s 的 AAC 讓分數最多變動 0.008,升高和降低的次數差不多;AAC 檔案解碼後最多長了 733 個取樣點。

MP3 為什麼會改變音符?

MP3 和 AAC 會丟掉人耳不太容易察覺的細節,主要是緊鄰較大聲響的微弱聲音,以及高頻部分。Basic Pitch 這類模型讀取的是音訊的時頻圖,誰也不能保證它們會像聽眾一樣忽略這些細節。一個落在模型門檻附近的音符,可能因為頻譜的細微變化而出現或消失。

過去的研究顯示影響很小。Urbano 等人發現,位元率從約 160 kbit/s 起,MFCC 特徵在有損編碼下就保持穩定;而反映音級的色度(chroma)特徵幾乎完全不受編解碼器和位元率影響(ISMIR 2014)。他們測的是特徵,不是轉譜得到的音符,所以我們測了音符。

我們也有實際的考量。錄音及其播放音訊的無損副本占了樂譜儲存空間的 77%,我們想改存較小的副本,但前提是準確率絲毫不受影響。

我們怎麼測的

每段錄音都用 FFmpeg 8.1.1 分別編碼(LAME 用 320 或 192 kbit/s 的固定位元率,FFmpeg 內建的 AAC 編碼器用 256 kbit/s),再用讀取上傳檔案的同一套程式碼解碼。對照組把無損音訊改動 0.01 dB——誰也聽不出來——用來顯示完全不經過編解碼器時,各項指標本身會浮動多少。三個引擎的結果都是確定的:相同的輸入一定得到相同的音符。

引擎與錄音
引擎錄音參考標註
Basic Pitch(ScoreStarling 處理單一樂器時的用法)12 段 GuitarSet 錄音(六位演奏者各一段獨奏、一段伴奏),Slakh2100 中一首樂團歌曲的前 60 秒,以及一首我們自己創作並合成的 58 秒樂團作品資料集附帶的標註
Kong 等人的鋼琴獨奏模型25 首鋼琴曲(24 首公共領域樂譜,外加 1 首我們自己寫的),每首以不同的彈性速度演奏兩遍,並以 SoundFont 鋼琴音色加延音踏板合成音訊:共 50 段演奏實際演奏的音符
Mirelo 的 Audio-to-MIDI(a2m-1.1)同一首 Slakh 樂團歌曲的 60 秒片段,只測了無損和 MP3 320這首歌的 MIDI

起音 F1(onset F1)的判定方法是:轉出的音符與參考標註中某個音符的音高相差不超過 50 音分、起點相差不超過 50 毫秒,就算轉對;漏掉的音和多出來的音扣分相同。1.0 為滿分。《AI 扒譜到底有多準?我們實測了一下》一文對這個指標有完整說明。

單一樂器的結果變了嗎?

幾乎沒變。在 12 段吉他錄音上,Basic Pitch 的起音 F1 在每種格式下都保持在 0.761 到 0.764 之間,而立體聲檔案縮小到了 WAV 的 14% 到 23%。

同樣 12 段 GuitarSet 錄音的五種格式:檔案縮小到四分之一甚至更小,起音 F1 卻幾乎沒動。詳細數值見下表。
ScoreStarling 所用的 Basic Pitch 在各格式下的結果(2026年10月5日)
指標無損對照MP3 320AAC 256MP3 192
起音 F1,吉他0.76260.76270.76110.76440.7616
起止 F1,吉他0.52240.52220.52120.52280.5210
起音 F1,Slakh 歌曲0.52040.52100.52040.52400.5227
起音 F1,我們的樂團作品0.71360.71360.71230.70890.7054
找到的音符(共 3,893 個)2,7412,7422,7392,7442,737
其中有變化的音符—1101714
調與標註一致12 段中 10 段12 段中 10 段12 段中 10 段12 段中 10 段12 段中 10 段
速度不變—14 段中 14 段14 段中 14 段14 段中 14 段14 段中 14 段
長度變化(取樣點)—00+16 到 +7330
訊雜比,dB(中位數)—58.453.239.430.3
檔案大小,單聲道 / 立體聲100%100%45% / 23%23% / 17%27% / 14%

無損版本的分數是 0.763,而不是我們 10月3日那篇文章中的 0.744:從 10月4日起,ScoreStarling 把單一樂器寫成一條旋律線,這改變了其中五段獨奏的結果。兩次測試用的都是 Basic Pitch 0.4.0。

鋼琴獨奏呢?

鋼琴模型在每種格式下聽出的音符都一樣。以實際演奏的音符為參照,它的起音 F1 在無損版本上為 0.9427,對照組為 0.9426,MP3 320 為 0.9428,MP3 192 為 0.9433;每種格式下都找到了約 92.2% 的譜面音符。

根據這些音符判斷拍子和小節線的那一步就沒那麼穩定了,但原因不在編解碼器。經過人耳聽不出的對照改動後,50 段演奏裡有 5 段的小節線位置變了;經過 MP3 320 後有 7 段,其中 4 段和對照組是同樣的演奏。這一步對任何改動都很敏感,所以我們把它視為測量本身的雜訊,而不是 MP3 的代價。鋼琴沒有測試 AAC。

整個樂團呢?

我們用 Mirelo 做了一次付費比較,測的是那首 60 秒的樂團歌曲:無損檔案和 MP3 都回傳了 842 個音符和鼓點,其中 829 個(98.5%)的起點與無損版本相差不到 50 毫秒。

Mirelo Audio-to-MIDI 處理一首 60 秒樂團歌曲的結果
指標無損MP3 320
起音 F1,有音高的音符(全曲 703 個)0.67070.6687
鼓的起音 F1(423 個鼓點)0.69830.7023
貝斯 / 吉他 / 鋼琴的起音 F10.455 / 0.681 / 0.8270.471 / 0.678 / 0.832
速度,BPM133.0133.0

為什麼還是有音符變了?

因為輸入只要有任何變化,就會牽動少數剛好卡在模型門檻上的音符。在 Basic Pitch 找到的約 2,740 個音符中,聽不出差別的對照改動了 1 個,MP3 320 改動了 10 個,AAC 改動了 17 個,MP3 192 改動了 14 個,單段錄音裡最多不超過 7 個。五組比較中,MP3 320 有三組略低(低 0.0013 到 0.0020),一組持平,一組略高。AAC 和 MP3 192 在吉他或 Slakh 歌曲上有所上升,在我們合成的樂團作品上有所下降,幅度最多 0.008。如果某種編解碼器真的損害了準確率,應該會在所有測試上都明顯下降,但沒有一種是這樣。

編解碼器確實會改變的,是頭尾的時間。AAC 編碼器會在開頭加入靜音的預置取樣,並把結尾補齊成一個完整的音框;Apple 的文件寫明延遲為 2112 個取樣點。我們的 AAC 檔案解碼後長了 16 到 733 個取樣點。FFmpeg 寫出的 MP3 帶有記錄編碼器延遲的 Xing/LAME 標頭,我們的 MP3 檔案解碼後與原始長度完全一致。當樂譜要和錄音同步播放時,這一點很重要。

該上傳哪種檔案?

  • 手上有什麼就傳什麼。先把 WAV 轉成 MP3 得不到任何好處,把 MP3 轉回 WAV 也找不回任何東西。
  • 如果一定要壓縮,320 kbit/s 的 MP3 在訊雜比上最接近原始檔案,而且長度完全不變。
  • 低位元率沒有測過。我們只測到 192 kbit/s,所以請留意你的錄音 App 儲存的是什麼格式和位元率。
  • 錄音品質遠比格式重要:一個清楚的聲部,殘響少,沒有背景音樂。要檢查哪些地方,請見《如何把語音備忘錄轉成樂譜》。

ScoreStarling 已經據此做了調整:從 2026年10月5日起,上傳的 WAV、AIFF 或 FLAC 檔案會儲存為 320 kbit/s 的 MP3,並用這份副本轉譜,立體聲錄音的儲存空間因此降到 WAV 的 23%。MP3、M4A、Ogg 和影片檔案則保留原檔。

這次測試的侷限

  • Mirelo 只測了一首樂團歌曲;鋼琴用的是合成音訊,不是真實錄製的鋼琴。
  • 沒有測人聲。我們手上的真實錄音屬於私人錄音,而且本來就是 AAC 檔案,沒辦法作為無損參照。
  • 每種格式只用了一個編碼器,也沒有測低於 192 kbit/s 的位元率。
  • 起音 F1 只說明音符有沒有被聽出來,不說明寫出的樂譜好不好讀。

參考資料

  1. What Is the Effect of Audio Quality on the Robustness of MFCCs and Chroma Features?——Urbano、Bogdanov、Herrera、Gómez 和 Serra,ISMIR 2014
  2. GuitarSet 1.1.0——Xi、Bittner、Pauwels、Ye 和 Bello,Zenodo(CC BY 4.0)
  3. Slakh2100——Manilow、Wichern、Seetharaman 和 Le Roux,Zenodo(CC BY 4.0)
  4. A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation——Bittner 等人,Spotify,2022(Basic Pitch)
  5. High-resolution Piano Transcription with Pedals by Regressing Onset and Offset Times——Kong、Li、Song、Wan 和 Wang,2020
  6. mir_eval.transcription——mir_eval 文件
  7. FFmpeg formats: the mp3 muxer——FFmpeg 文件
  8. TN2258: AAC Audio, Encoder Delay and Synchronization——Apple

常見問題

扒譜該上傳 WAV 還是 MP3?

都可以。在我們 2026年10月5日的測試中,用三個不同的引擎轉譜,320 kbit/s 的 MP3 與其來源 WAV 的起音 F1 相差都不超過 0.002。錄音裝置或編輯軟體給你什麼檔案,就直接上傳,不用轉檔。192 kbit/s 的 MP3 和 256 kbit/s 的 AAC 相差在 0.008 以內;更低的位元率沒有測試。

MP3 位元率更低,音符會變嗎?

會變幾個,有升有降。在 14 段錄音約 2,740 個比對成功的音符中,192 kbit/s 時有 14 個發生變化,320 kbit/s 時有 10 個,而一次人耳聽不出的音量改動也讓 1 個變了。起音 F1 在 192 kbit/s 時最多變動 0.008,在 320 kbit/s 時最多變動 0.002。低於 192 kbit/s 的位元率沒有測量。

為什麼 AAC 檔案會比 WAV 稍長一點?

AAC 編碼器會在開頭加入一段靜音的預置取樣(priming samples),並把結尾補齊成一個完整的音框(frame);Apple 的文件寫明預置延遲為 2112 個取樣點。如果播放器或解碼器沒有把它們裁掉,音訊就會稍長一些。在我們的測試中,AAC 檔案解碼後長了 16 到 733 個取樣點。FFmpeg 寫出、帶有 Xing/LAME 標頭的 MP3,解碼後長度完全一致。

ScoreStarling 會把我的 WAV 轉成 MP3 嗎?

會。從 2026年10月5日起,上傳的 WAV、AIFF 或 FLAC 檔案會儲存為 320 kbit/s 的 MP3(也就是本文測試的設定),並用這份副本轉譜。上傳的 MP3、M4A、Ogg 和影片則保留原檔。

帶來任何音樂帶走一份樂譜