MP3 ファイルを AI に投げると、ものの数分で楽譜の PDF が出てくる。— 「ふつうに便利だな」と感じてもらえるなら嬉しいのですが、その裏では実に興味深い機械学習の処理が走っています。筆者は AI Gakufu を実装する過程で何度も内部挙動をログに出して眺めてきました。この記事では、音声から楽譜への変換が具体的にどのステップで何をしているのかを、非エンジニアの方にも分かるレベルで解説します。
そもそも「音を楽譜にする」とはどんな作業か
まずはAIの話を抜きにして、音楽家が「耳コピ」するときに何をしているのかを振り返ります。
音楽家は音を聞きながら、次のような3つのレイヤーを同時に頭の中で作り上げています。
- 音高(ピッチ)の識別:これは C4 だ、これは E4 だ、という認識
- タイミングと長さの把握:いつ鳴り始めて、どれくらい伸びたのか
- 記譜の決定:五線譜の上にどう書くか(臨時記号、リズム割、声部分けなど)
この3つの工程は、人間でもそれなりに訓練が必要で、プロでも1曲の完全採譜に何時間もかかります。AIによる自動採譜は、この工程を数十秒〜数分に圧縮しようという挑戦です。
Basic Pitch — Spotify が公開した音声→MIDI 変換モデル
AI Gakufu が採用している音声→MIDI の変換エンジンは、Spotify が2022年にオープンソースで公開した「Basic Pitch」というモデルです。音楽ストリーミング最大手が社内で使っていた技術を無償公開したもので、軽量・高速でありながら既存の商用モデルに匹敵する精度を持っています。
Basic Pitch の特徴
- モデルサイズが小さい:約 17MB と非常にコンパクト。CPU でも実用速度で動く
- 楽器を選ばない:ピアノ・ギター・ボーカル・管楽器など幅広く対応
- 和音対応:同時に複数の音が鳴っていても分離して検出できる(ポリフォニック対応)
- ピッチベンド対応:スライドやビブラートなど微妙な音高変化も検出
パイプラインを1ステップずつ見てみる
AI Gakufu の内部処理は、ざっくり4つの段階に分かれます。
ステップ1:音声ファイルを WAV に統一する(ffmpeg)
アップロードされたファイルは MP3 や M4A など様々ですが、まず全部 16bit・22050Hz・モノラルの WAV にリサンプリングされます。これは Basic Pitch が期待する入力形式に合わせるためです。ここでは ffmpeg というツールを使っています。
余談:22050Hz は一見低いサンプリングレートに見えますが、人が耳コピする周波数帯(おおよそ 100Hz〜3000Hz)を捉えるには十分で、むしろ処理が軽くなるため AI には好都合です。
ステップ2:音声を周波数の絵に変換する(CQT スペクトログラム)
ここが音楽 AI ならではの工夫です。一般的な音声 AI では FFT(高速フーリエ変換)でスペクトログラムを作ることが多いのですが、Basic Pitch は Constant-Q Transform(CQT, コンスタント・Q変換)という手法を使います。
FFT は周波数を等間隔で区切るのですが、音楽のピッチはオクターブごとに倍々になる指数関数的なものです。FFT は低音域の分解能が粗く、高音域では細かすぎるというミスマッチが起きます。CQT は対数スケールで周波数を区切るため、どのオクターブでも同じ精度で音高が見えます。
この時点で、音声は縦軸=音高、横軸=時間という、まさに楽譜に似た2次元画像になります。
ステップ3:AI(CNN)が音符を検出する
得られた CQT スペクトログラム画像を、CNN(畳み込みニューラルネットワーク)で解析します。学習済みモデルが、画像の中から「この時刻・この音高で、音が鳴っている/鳴っていない」を予測します。
さらに Basic Pitch は3種類の出力を同時に行います。
- Note onset(ノートの始まり):音の立ち上がりタイミング
- Note activation(ノートが鳴っている期間):音の持続時間
- Pitch contour(ピッチの揺らぎ):ビブラートやスライドなど連続的な音高変化
この3つを組み合わせることで、精度の高い MIDI データが得られます。
ステップ4:MIDI データを楽譜に組版する(LilyPond)
MIDI は「いつ・どの音を・どれくらい鳴らすか」という演奏情報ですが、楽譜に必要な情報は少し違います。楽譜は視覚的に読みやすい記号のレイアウトでなければなりません。音符の連桁(八分音符を線でつなぐ)、小節線、拍子、クレフ選択、音声(右手と左手の分離)など、「音を書き下すための美的な判断」が必要です。
ここで登場するのが LilyPond です。LilyPond は1996年から開発されているオープンソースの楽譜組版エンジンで、c4 d4 e4 f4 のような簡単な記法から、プロフェッショナル品質の楽譜 PDF を生成できます。
AI Gakufu では、pretty_midi で MIDI をパースしたあと、各音符を LilyPond 記法に変換し、LilyPond のコマンドを呼び出して PDF を生成しています。
ピアノ譜とギター譜を分岐させる工夫
MIDI には単なる「音高」しか入っていません。これをピアノ譜にするには右手/左手に分ける必要があり、ギター譜にするには演奏可能な音域に収める必要があります。AI Gakufu では以下のシンプルなルールを採用しています。
- ピアノ:MIDI ノート番号60(中央C)以上は高音部譜表、未満は低音部譜表
- ギター:MIDI ノート番号 40〜76(ギターの実用音域)にマッピングし、TAB譜も同時に生成
AI の得意・不得意
パイプライン全体像が見えると、AIがなぜこの曲は得意で、あの曲は苦手なのかが見えてきます。
得意な音源
- ソロピアノ、ソロギター
- 音が明瞭なアコースティック楽器
- 中テンポ(60〜120 BPM)
- 和音が3〜4和音までの構成
苦手な音源
- 厚みのある EDM、オーケストラ
- 強いエフェクト(ディストーション、リバーブ過多)
- ボーカルのメリスマ(音が滑らかに動く部分)
- ドラムなど打楽器の多い曲
なぜ完璧ではないのか
100%の精度で音声を楽譜化することは、現時点の AI では不可能です。理由は大きく3つあります。
- 音声信号自体があいまい:複数の楽器が同じ周波数帯で重なると、物理的に分離不能な瞬間がある
- 記譜にはプロの判断が要る:8分音符の連結、声部分け、臨時記号の選択などは文脈依存
- 学習データの限界:Basic Pitch は汎用モデルなので、あらゆるジャンルで同じ精度は出せない
それでも、2020年代前半までは不可能だった作業が、今や無料で数分で実行できるという事実は、音楽制作の民主化という観点で大きな変化です。
まとめ
AI Gakufu の内部では、「音声 → CQT画像 → CNN で音符検出 → MIDI → LilyPond で組版 → PDF」という流れで楽譜が生成されています。各工程で使っているライブラリは全てオープンソースで、運営者は主にそれらをつなぎ合わせる Web アプリとして実装しています。
仕組みが見えれば、次に何を試したくなるかが変わります。たとえば「インスト版で再生成してから楽譜化する」といった工夫は、CNN がボーカルに弱いことを知っていれば自然と思いつきます。ぜひご自身の楽曲で、AIの挙動を観察してみてください。