ブログリサーチ

MP3は採譜の精度を下げる?WAVと比べて実測

同じ録音をロスレス、MP3、AACにして3つの採譜エンジンにかけ、誰にも聞き取れない変化と比べました。何が動いたのか、どのファイルをアップロードすればよいのか。

執筆
公開日
更新日
長さ
約8分で読めます

先に結論

320 kbit/sなら、採譜は悪くなりません。手元のファイルをそのままアップロードしてください。2026年10月5日に、同じ録音をロスレス音声のまま採譜し、MP3とAACにして戻したものでもう一度採譜しました。エンジンは3つで、ギター録音12本にSpotifyのBasic Pitch、ピアノ演奏50本にピアノソロ用のモデル、バンドの曲1曲に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らは、MFCC特徴量は約160 kbit/sから非可逆圧縮でも安定しており、ピッチクラスを追うクロマ特徴量は、コーデックやビットレートの影響をほとんど受けないことを見いだしました(ISMIR 2014)。彼らが測ったのは特徴量で、私たちが知りたかったのは採譜された音符のほうです。

実務上の理由もありました。録音と、その再生用のロスレスのコピーが、楽譜の保管容量の77%を占めていて、精度が少しも落ちない場合に限って、小さいコピーにしたかったのです。

テストの方法

すべての録音を、FFmpeg 8.1.1で各コーデックに通しました(LAMEは固定の320または192 kbit/s、AACはFFmpeg内蔵のエンコーダーで256 kbit/s)。その後、アップロードされたファイルを読み込むのと同じコードでデコードしました。対照として、誰にも聞き取れない0.01 dBだけロスレス音声を変えたものも用意し、コーデックがまったくなくても測定値がどれだけ動くかを確かめました。3つのエンジンはどれも決定的で、同じ入力からは同じ音符が出ます。

エンジンと録音
エンジン録音正解の音符
Basic Pitch(ScoreStarlingで楽器ひとつの採譜に使っているもの)GuitarSetの録音12本(6人の奏者それぞれのソロと伴奏)、Slakh2100のバンド曲の最初の60秒、私たちが書いて合成した58秒のバンド曲データセットの注釈
Kongらのピアノソロ用モデルピアノ曲25曲(パブリックドメインの楽譜24曲と、私たちが書いた1曲)。それぞれルバートを変えて2回ずつ演奏させ、サウンドフォントのピアノ音源とサステインペダルで音声にした、計50演奏演奏された音符
MireloのAudio-to-MIDI(a2m-1.1)同じ60秒のSlakhのバンド曲、ロスレスとMP3 320のみ曲のMIDI

オンセットF1は、採譜された音符の音高が正解の音符から50セント以内、開始が50 ms以内のとき、その音符を正解と数えます。取りこぼした音符と余分な音符を同じように減点し、1.0が満点です。この指標は、精度に関する記事で詳しく説明しています。

楽器ひとつの場合、何が変わりましたか?

ほとんど変わりませんでした。ギター録音12本では、どの形式でもBasic PitchのオンセットF1は0.761から0.764の間にとどまり、ステレオファイルのサイズはWAVの14%から23%に縮みました。

同じGuitarSet録音12本を5つの形式にしたもの。ファイルは4分の1以下に縮みますが、オンセット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
S/N比、dB(中央値)—58.453.239.430.3
サイズ、モノラル / ステレオ100%100%45% / 23%23% / 17%27% / 14%

ロスレスのスコアは0.763で、10月3日の記事の0.744とは異なります。10月4日以降、ScoreStarlingは楽器ひとつを1つの声部として書くようになり、ソロ5本の結果が変わったためです。どちらも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秒のバンド曲で有料の比較を1回行いました。ロスレスのファイルもMP3も、音符とドラムの打音が842個ずつ返ってきて、そのうち829個(98.5%)は、開始がロスレスの結果から50 ms以内でした。

60秒のバンド曲1曲でのMirelo Audio-to-MIDI
指標ロスレスMP3 320
オンセットF1、音高のある音符(曲中703音)0.67070.6687
ドラムのオンセットF1(423打)0.69830.7023
ベース / ギター / ピアノのオンセットF10.455 / 0.681 / 0.8270.471 / 0.678 / 0.832
テンポ(BPM)133.0133.0

なぜ一部の音符が変わったのですか?

入力にどんな変更を加えても、モデルのしきい値すれすれにある数個の音符は動きます。Basic Pitchが検出した約2,740音のうち、聞き取れない対照で動いたのは1音、MP3 320で10音、AACで17音、MP3 192で14音で、1本の録音で7音を超えることはありませんでした。MP3 320は、5つの比較のうち3つでごくわずかに低く(0.0013〜0.0020)、1つは同じ、1つはごくわずかに高くなりました。AACとMP3 192は、ギターとSlakhの曲では上がり、私たちが合成したバンド曲では下がり、その幅は最大0.008でした。精度を本当に損なうコーデックなら、どこでもはっきり下がるはずですが、そうなったものはありませんでした。

コーデックが実際に変えるのは、両端のタイミングです。AACエンコーダーは先頭に無音のプライミングサンプルを加え、末尾をフレームの区切りまで埋めます。Appleは2112サンプルの遅延を文書で示しています。私たちのAACファイルは、デコードすると16〜733サンプル長くなりました。FFmpegはエンコーダー遅延を記録するXing/LAMEヘッダー付きでMP3を書き出すので、私たちのMP3ファイルは、デコードすると元の長さにぴったり戻りました。楽譜を録音に合わせて再生するときには、これが重要になります。

どのファイルをアップロードすればよいですか?

  • 手元にあるファイルです。先にWAVをMP3に変換しても得るものはなく、MP3をWAVに戻しても失われたものは戻りません。
  • 圧縮が必要なら、320 kbit/sのMP3が、S/N比で元の音にもっとも近く、長さも正確に保たれました。
  • 低いビットレートは測っていません。測定は192 kbit/sまでなので、お使いの録音アプリが何で保存するかを確認してください。
  • 形式よりも録り方のほうがはるかに重要です。聴きたいパートがひとつだけはっきり聞こえること、リバーブが少ないこと、BGMがないこと。確認すべき点は、ボイスメモのガイドにまとめています。

ScoreStarlingは現在、この方針で動いています。2026年10月5日から、WAV、AIFF、FLACのアップロードは320 kbit/sのMP3として保管し、そのコピーから採譜します。これでステレオ録音はWAVの23%のサイズで保管できます。MP3、M4A、Ogg、動画のファイルは届いたまま保管するので、MP3を楽譜に変換するときも、お手元のファイルをそのままアップロードしてください。

このテストからわからないこと

  • Mireloではバンド曲1曲だけで、ピアノは録音ではなく合成した音です。
  • 歌は含みません。実際に録音したテイクは非公開で、すでにAACファイルだったため、ロスレスの基準としては使えませんでした。
  • 形式ごとにエンコーダーは1種類で、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の差が、3つの異なるエンジンのどれでも0.002以内でした。録音機器や編集ソフトが出力したファイルをそのままアップロードし、先に変換しないでください。192 kbit/sのMP3と256 kbit/sのAACファイルも、差は0.008以内でした。それより低いビットレートはテストしていません。

MP3のビットレートを下げると、音符は変わりますか?

ごくわずかに変わり、良くなる方向にも悪くなる方向にも動きます。192 kbit/sでは、14本の録音で、正解と一致した約2,740音のうち14音が変わりました。320 kbit/sでは10音、聞き取れない音量変更では1音です。オンセットF1の変化は、192 kbit/sで最大0.008、320 kbit/sで最大0.002でした。192 kbit/s未満のビットレートは測っていません。

AACファイルがWAVより少し長くなるのはなぜですか?

AACエンコーダーは、先頭に無音のプライミングサンプルを加え、末尾をフレームの区切りまで埋めるためです。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、動画のアップロードは、そのまま保管します。

MP3を楽譜に変換