概要
- 125Mパラメータのトランスフォーマー を訓練し、ピアノ演奏のリアルタイム自動補完を実現
- MIDI表現の最適化、データの徹底クリーニング、DPO後処理で大幅な性能向上
- iPhone 15上で108ノート/秒 の速度を達成、ライブ演奏にも十分な性能
- RollTabアプリ として無料公開、MIDIキーボードとiPhone/iPadで利用可能
- 主な課題や工夫点、モデル設計・訓練・評価手法などを詳細解説
ピアノ自動補完AI「RollTab」開発記
- GitHub Copilotのピアノ版 を目指し、MIDIピアノとスマホを接続してAIが演奏続きを自動生成するアイデア
- 14回の実験を経て、実用レベルの品質に到達
- アプリ「RollTab」 として無料公開、MIDIキーボードとiPhone/iPadで利用可能
MIDIファイルとその特徴
- MIDIファイルは音声データではなく、演奏イベントの列 (ノートオン/オフ、ベロシティ、サステインペダル等)で構成
- 複数トラック によるメロディ・コード・ベース・ドラム等の分離
- 本プロジェクトでは ピアノ演奏の継続生成に特化 し、他パートは除去または縮小
音楽のトークナイズ手法
- MIDIイベントをトークン列に変換 してトランスフォーマーに入力
- 単純なNOTE_ON/PITCH/VELOCITY等の組み合わせは 語彙爆発・学習困難
- 文法的な分解表現 (例: [NOTE_ON, PITCH, VELOCITY])で語彙圧縮・構文保証
- ノートオフ漏れ等のドリフト問題 を回避するため、最終的に
- NOTE(pitch, delta_onset, duration, velocity) 形式を採用
- 各ノートで「音高・発音タイミング差分・持続・ベロシティ」を一括で予測
- 1ノート=1トークン で高速生成を実現
サステインペダルの扱い
- サステインペダルイベントは前処理でノート持続に統合
- ペダル押下中に鍵盤離した場合、 ペダル解除までノート持続を延長
- 明示的なペダル情報は失うが、 モデル設計を単純化
データセットとクリーニング
- 主にクラシックのパブリックドメインMIDIを収集
- 数十万曲・3億ノート規模 のデータセット構築
- 多重トラック除去・密度/ピッチ/時間カバレッジでフィルタ
- 転調・テンポ変化を無視した指紋で重複排除
- バージョン違いのグループ分割
- 量より質が重要 で、5倍データ拡張よりクリーニングの方が効果大
モデルアーキテクチャと訓練
- デコーダ専用トランスフォーマー (RMSNorm, rotary埋め込み, SwiGLU, 自己回帰生成)
- 33M/64M/125Mパラメータ の3サイズを比較
- 中型モデルが最もバランス良好
- 各ノートの 5属性(種類・音高・差分・持続・ベロシティ)を個別ヘッドで同時予測
- クロスエントロピー損失 で属性ごとに精度管理
- 音楽継続には唯一の正解がない ため、クロスエントロピーのみでは限界
データ拡張と学習工夫
- グローバル転調・テンポスケーリング・持続/ベロシティ揺らぎ・プロンプトノート欠落 など多様な拡張
- スケジュールドサンプリング で訓練時に一部属性をモデル予測値で置換
- 検証損失は悪化するが、実際の補完品質は向上
評価手法と自動指標
- プロンプト4~32ノートで継続生成を手動評価
- 繰り返しn-gram、ピッチエントロピー、音域、密度、長休符、和音密度 など自動指標も導入
- Gemini 3.5 Flash によるペアワイズ評価で好みデータセット作成
- 継続性(プロンプト追従度) と 音楽的品質(単体の良さ) で分離評価
DPO(Direct Preference Optimization)による後処理
- プロンプトごとに複数継続案を生成→Geminiで良否判定→DPOで好ましい継続を強化学習
- DPO後は69%以上の継続がベースモデルより好ましいと評価
- β値調整でベースモデルからの乖離ペナルティ管理
- 評価者一致ペアのみ採用する「コンセンサス」データセットが最良結果
まとめ・質疑応答
- iPhone 15上で108ノート/秒 の高速生成
- 完全オンデバイス動作 でリアルタイム演奏補完を実現
- RollTabアプリを無料公開、MIDIキーボード所有者は即体験可能
- モデル・訓練・Core ML・失敗談等の質問歓迎