DanceGAIOsuGAI の仕組み

OsuGAI の仕組み

OsuGAI は曲から osu! standard の譜面セット (mapset)を作り、プレイフィールドにヒットサークル、スライダー、スピナーを配置します。曲全体を計画し、リズムと配置を生成して結果を検査します。本ページは 2026 年 10 月 30 日公開の v3.0 を説明します。

このページの内容
  1. 01音楽を理解する
  2. 02曲全体を計画する
  3. 03リズムとオブジェクト
  4. 04配置と幾何処理
  5. 05ダウンロード前の検査

v3.0 の測定概要

学習譜面数
157,209
モデルのパラメータ数
~77M
学習計算量
~78 GPU·h
較正テストの平均星評価誤差
0.28★
妥当性テストに合格した譜面
36 / 36
Flower Dance・6 難易度・T4
79 s

星評価のテストは 3 曲、4 目標、各目標 1 シードで実施し、2 曲は学習データに含まれます。別の妥当性テストでは 3 シードを使いました。小規模な検証であり、全般的な品質保証ではありません。

音楽を理解する

Beat This が拍と小節頭を検出し、独自のタイミンググリッド処理で BPM とオフセットに変換します。変拍速にも対応します。MERT-v1-95M の音楽特徴を拍ごとに揃え、学習譜面にも同種のグリッドを使います。静かな導入、終奏、フェードアウトを検出し、無音部分を空けます。

Beat This · MERT-v1-95M

曲全体を計画する

約 5.9Mパラメータのガウス拡散プランナーが、オブジェクトを置く前に曲全体を区間ごとに記述します。音楽と指定条件から難易度、スタイル、休憩を同時に計画し、サビを密に、静かな間奏を休みにできます。

リズムとオブジェクト

主モデルは押下と解放、オブジェクト種別、スライダーの折り返し、新コンボ、休憩、スライダー速度を生成します。MaskGIT 型の非自己回帰 Transformer で、左から順に書くだけでなく譜面全体を数回修正します。リズムを生成・整形してから詳細と速度を加えます。

配置と幾何処理

約 71Mパラメータの共有ネットワークが、同じ音楽理解をリズムと配置に使います。制約ソルバーがオブジェクトをプレイフィールド内に収め、必要な長さにスライダー曲線を合わせ、速度変化を書き込みます。正しく構築できない難易度は壊れたファイルを出さず失敗扱いにします。24,000 回のストレステストでこの経路は使われませんでした。

調整できる項目

★1~★10 の目標を選び、難易度ごとに設定できます。9 本のスタイル調整はスライダー、角度、間隔、リズム、aim、speed などを扱います。譜面設定は CS、AR、OD、HP、スライダー速度です。モデルは CS、AR、OD、速度を読み、HP はファイルに記録します。選んだ難易度は一つの mapset として同時生成します。

指定する星評価は目標値で、完成した譜面には実測値を表示します。

ダウンロード前の検査

近すぎる押下や短すぎる長押しを修正し、無音中のオブジェクトを除去して幾何を検査します。osu! のアルゴリズムで測った星評価を難易度名に使います。テストでは osu!lazer で譜面を解析します。同一の曲、設定、シードによる 10 回の生成で、バイト単位で同一の .osu が得られました。

学習データ

学習には 157,209 譜面を使用し、ranked・approved・loved の 132,032 譜面と、ranked 外から補った高難度 25,177 譜面で構成します。基礎データには約 56Mオブジェクトがあります。高難度選集はギミック譜面、AI 生成譜面、検証・テスト曲と一致する曲を除外します。同じ曲の全難易度と音源版を同じ分割に置き、2026 年に ranked された 200 曲を学習に使わない盲検用に確保しています。

学習方法

プランナーと主ネットワークをゼロから学習しました。主ネットワークは約 103 万ステップで、ranked データから始め、高難度譜面を加え、最後は星評価を均等化した抽出を行います。プランナーは 60,000 ステップです。RTX 4070 Ti SUPER 1 枚で主モデル約 68 GPU 時間、プランナー約 10 GPU 時間を使いました。検証損失だけでなく生成譜面を見てチェックポイントを選びます。

測定したこと

下表の較正テストで平均絶対誤差は 0.28 星でした。小規模な較正確認であり、未知の曲への性能を示すものではなく、★9~★10 も未検証です。別の 3 曲・4 目標・3 シードのテストでは 36 譜面すべてが有効でした。最終評価では、生成直後に 1,000 オブジェクト当たり 3.9 件あったリズム問題を整形処理で除去しました。

較正テスト・v3.0・各目標 1 シード
★Flower DanceRiver Flows in YouFREEDOM DiVE
21.921.892.38
43.633.904.61
65.495.536.02
88.278.108.38

24 譜面のテストで、人間の休憩の 50% を検出し、休憩時間の 35% をカバーしました。生成した休憩の約 60% が人間の休憩と一致しました。正しい計画を与えると 24 中 23 譜面で休憩数が一致しました。この測定は公開版プランナーと以前のネットワークによるもので、公開システム全体の評価ではありません。

生成開始から遊べる譜面まで

ブラウザーが音源をデコードして正規化し、アップロードします。曲ごとにタイミングと音楽特徴を一度抽出し、各難易度を計画して一つの GPU バッチで生成します。整形、星評価、パッケージ化を経て、曲と背景付きの .osz を出力します。以下は実運用の NVIDIA T4 による Flower Dance の測定例で、待ち時間の保証ではありません。

実運用 T4 の所要時間・Flower Dance
リクエスト時間
1 難易度21–32 s
3 難易度42 s
4 難易度54 s
6 難易度・自動配分79 s
9 難易度116 s

v3.0 で変わったこと

v2.0 はリズムと配置に別モデルを使っていました。v3.0 は一つのネットワークを共有し、学習譜面を 10,428 から 157,209 に増やし、休憩計画、可変スライダー速度、難易度別のスタイルと設定を追加しました。T4 の Flower Dance 記録は v2.0 が 4 難易度で 72 秒、v3.0 が 6 難易度で 79 秒です。処理量が異なるため速度比にはなりません。

既知の制約

  • 小規模な較正テストでは ★4~★6 は低め、★8 は少し高めでした。★9~★10 は対象外です。
  • 人間の休憩の約半分を見落とし、生成した休憩の位置が不適切な場合もあります。
  • 特に低難度でスピナーが多すぎる曲があります。スライダー形状は意図的に単純です。
  • 長く速い曲では小さなタイミング誤差が終盤のずれにつながることがあります。
  • 新コンボは固定ルールです。独自ヒットサウンド、kiai、ストーリーボードは生成しません。
  • 構造が有効でも、楽しさや良い設計は保証されません。生成譜面はプレイと練習向けで、ranked 用ではありません。

今後の取り組み

休憩配置、全星評価範囲の較正、スライダー形状、生成速度を改善していきます。v3.0 の盲検結果とスライダー自己交差の測定はまだ公開していません。TaikoGAI と CatchGAI は今後の製品です。

関連する技術記事

OsuGAI で譜面を作る