世界を動かす技術を、日本語で。

HNに表示: 125Mモデルをトレーニングして、デバイス上でピアノの自動補完を実現しました

2026年8月20日原文(simedw.com)

概要

  • 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・失敗談等の質問歓迎

Hackerたちの意見

そういうのいいね!メロディを弾くと、ちゃんとした3~4パートの伴奏を作ってくれるやつがあったら最高だな。できればバロックスタイルで。さらに、音楽編集ソフトに適した形式でファイルに書き出せたら、もっと嬉しい!

面白いアイデアだね。ピアノを弾き始めると、ジャズバンドのベースとドラムが入ってくる感じ。

これに対する初期の試みが、2009年のマイクロソフトのソングスミスだったね。メロディ(たいていはマイクで録音したやつ)を取り込んで、その周りに伴奏を作ろうとするんだけど、リアルタイムでは全然なかった。メロディに対するリアルタイムのオーケストレーションに近いのは、アレンジャーキーボードくらいだけど、左手はコード進行を担当しなきゃいけないんだよね。

これは自然な次のステップって感じだね。シンプルなメロディから始めて、システムがプレイスタイルに合わせて残りを埋めてくれるなら、完全な曲をゼロから作るよりも、実験にはずっと役立ちそう。

でも、これは信じられないくらい難しい挑戦だね。メロディだけから、全体のバックトラック(基本的なコード以外の意味のある形で)を作るには、すごく主観的な選択がたくさん必要になるし、ランダム生成じゃ良い結果にはならないと思う。やっぱり、私たちの耳は意図的で芸術的な創造性を好むからね。

フランソワ・パシェのコンティニュエーターを思い出すな(2003年に遡る、階層的マルコフモデルを使ったやつ)。

音楽の著作権訴訟を避けるために、あらゆるメロディをアルゴリズムで生成するプロジェクトを思い出した。

ああ、MIDIファイルね。昔はインターネットから現実的にダウンロードできる音楽の唯一のタイプだったし、ダイヤルアップモデムのせいで、すごい早起きしないと電話代がえらいことになってたよね。

MIDIは今でもプロの音楽制作で広く使われてるよ。昔はシンセサイザーの音があまり良くなかったから、ちょっとダサい音だったけど。

MODファイルをダウンロードしてたのを覚えてる。MIDIよりちょっと大きかったけど、音は良かった。PCを持ってたけど、アミガのやつだった気がする。

これは素晴らしいプロジェクトだと思うし、HNっぽいね。コメントが成果物に集中してるのが不思議だな。もっと多くのことを学んだし、面白い体験をしたはずなのに。投稿で触れられてなかったと思うんだけど、データの大きさはどれくらいだったの?事前学習と事後学習に使ったサンプル数は?

フィン・エリゼの始まりを聞いて、そこから全然違う方向に行くのは、意外と不安になるね。

Hacker Newsで議論の続きを見る