技術 約3分で読めます

ACE-Step:ローカルで動く音楽生成AI基盤モデルを調べた

ACE-Stepとは

ACE-Stepは、オープンソースの音楽生成基盤モデル。「音楽版Stable Diffusion」を標榜していて、テキストプロンプトから楽曲を生成できる。

特徴的なのは速度。A100で最大4分の楽曲を約20秒で生成できる。LLMベースの音楽生成(SunoやUdioの内部実装に近いとされるもの)と比較して約15倍速いとのこと。

Apache 2.0ライセンスで、GitHubで3,800スター以上を獲得している。

アーキテクチャ

技術的には以下の組み合わせ:

  • Deep Compression AutoEncoder (DCAE): Sana由来の音声圧縮
  • 軽量Linear Transformer: 高速な推論を実現
  • Flow-matching: 拡散モデルの一種
  • MERT / m-hubert: 学習時のセマンティックアライメント

画像生成AIでいうところのVAE + U-Net + CLIPの構成に近い考え方。

主な機能

基本機能

  • 最大4分の楽曲生成
  • 19言語対応(日本語含む主要10言語で強いパフォーマンス)
  • ボーカル、インストゥルメンタル両対応
  • 多様なジャンル・スタイル

制御機能

機能説明
Variationsノイズミックスでバリエーション生成
Repainting特定セクションだけ再生成
Lyric editingメロディ/伴奏を保持したまま歌詞変更
Audio extension楽曲の延長

LoRA対応

  • Lyric2Vocal: ボーカル生成特化
  • Text2Samples: 楽器サンプル生成
  • RapMachine: ラップ特化

LoRAの学習コードも公開されているので、自分で追加学習することも可能。

インストール

前提条件

  • Python 3.10以上
  • NVIDIA GPU(CUDA)またはApple Silicon

手順

git clone https://github.com/ace-step/ACE-Step.git
cd ACE-Step
pip install -e .

モデルは初回起動時に ~/.cache/ace-step/checkpoints に自動ダウンロードされる。

macOSの場合

Apple Siliconではbfloat16が使えないため、起動時にフラグが必要:

acestep --port 7865 --bf16 false

使い方

Gradio UIの起動

acestep --port 7865

ブラウザで http://localhost:7865 にアクセスするとUIが表示される。

主なオプション

オプション説明
--checkpoint_pathカスタムモデルのパス
--torch_compile最適化有効(要triton)
--cpu_offloadVRAM節約モード
--bf16bfloat16使用(macOSはfalse必須)
--share公開Gradioリンク生成

プロンプトの書き方

歌詞とスタイルを分けて指定する形式:

[verse]
ここに歌詞を書く
La la la

[chorus]
サビの歌詞

スタイル指定は別フィールドで「J-pop, female vocal, energetic」のように書く。

ハードウェア別パフォーマンス

公式ベンチマーク(27ステップ、バッチサイズ1):

GPUリアルタイム倍率1分の曲を生成
RTX 409034.48x1.74秒
A10027.27x2.20秒
RTX 309012.76x4.70秒
M2 Max2.27x26.43秒

M1 Max 64GBでの予想

M2 Maxで26秒/分なので、M1 Maxでは30秒前後と予想される。メモリ64GBは余裕で足りる。

リアルタイムの2〜3倍速程度なので、4分の曲を2分弱で生成できる計算。実用レベル。

SunoやUdioとの比較

項目ACE-StepSuno/Udio
実行環境ローカルクラウド
コスト電気代のみサブスク
商用利用Apache 2.0要確認
カスタマイズLoRA対応不可
品質発展途上高品質

ローカルで動くメリットは大きい。特に商用利用やカスタマイズ性を重視する場合は検討の価値あり。

品質面ではSunoやUdioにはまだ及ばないという評価が多い。V1.5が開発中とのことなので、今後に期待。

今後の展開

公式ロードマップによると:

  • 完了: 学習コード、LoRA学習、RapMachine、技術レポート
  • 予定: ACE-Step V1.5、ControlNet学習、Singing2Accompaniment

ControlNet対応が来れば、メロディを指定して伴奏を生成するような使い方もできるようになりそう。