0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ComfyUI-AceMusicってなんだ?〜公式が「まだ未対応」と言った機能を全部実装したACE-Step 1.5完全統合ノード〜

0
Posted at

この記事の対象読者

  • ComfyUIで音楽生成ワークフローを構築したい方
  • ACE-Step 1.5のフル機能(Cover、Repaint、Edit等)をComfyUIで使いたい方
  • 画像/動画生成ワークフローに音楽生成を組み込みたいクリエイター
  • Windows環境でPython 3.13+を使っている方

この記事で得られること

  • ComfyUI-AceMusicの独自性: なぜ公式実装ではなくこのノードが必要なのか理解できる
  • 世界初の機能: Cover、Repaint、Edit、Retake機能のComfyUI実装について把握できる
  • モジュラーアーキテクチャ: ウィジェット順序問題を解決した設計思想を学べる
  • 実践的なワークフロー: HeartMuLaとの連携を含む高度な音楽制作パイプラインを構築できる

この記事で扱わないこと

  • ACE-Step 1.5モデル自体の詳細な解説(別記事参照)
  • ComfyUIの基本的な使い方
  • 音楽理論の詳細

1. ComfyUI-AceMusicとの出会い

「ComfyUIでACE-Step 1.5使えるようになったらしいけど、Cover機能とかRepaint機能は対応してないって...マジか」

2026年2月3日、ComfyUI公式ブログが「ACE-Step 1.5がComfyUIで利用可能に」と発表した。しかし、その記事には気になる一文があった。

"ACE-Step 1.5 has a few more tricks up its sleeve. These aren't yet supported in ComfyUI, but we have no doubt the community will figure it out."
(ACE-Step 1.5にはまだいくつかの機能がある。これらはまだComfyUIでサポートされていないが、コミュニティが解決してくれると信じている)

具体的には、Cover(カバー生成)、Repaint(部分再生成)、Extend(延長)といった、ACE-Step 1.5の真価を発揮する機能群が未実装だった。

そこで私は考えた。「じゃあ自分で作るか」と。

ComfyUI-AceMusicを一言で表すなら、「公式が『まだできない』と言った機能を全部載せた完全体」である。ACE-Step 1.5の15種類の機能を、ComfyUIのノードとして完全実装した。しかも、既存実装が抱えていたウィジェット順序問題をモジュラーアーキテクチャで解決し、Windows + Python 3.13+という厳しい環境でも動作するようにした。

ここまでで、ComfyUI-AceMusicがどんな存在なのか、なんとなくイメージできただろうか。次は、この記事で使う用語を整理しておこう。


2. 前提知識の確認

本題に入る前に、この記事で登場する用語を確認しておく。

2.1 ComfyUIカスタムノードとは

ComfyUIの機能を拡張するPythonモジュール。custom_nodesフォルダに配置することで、新しいノードタイプを追加できる。画像生成だけでなく、音声、動画、3Dなど様々な領域のノードが開発されている。

2.2 ACE-Step 1.5のタスク種別とは

ACE-Step 1.5は単純なText-to-Musicだけでなく、以下のタスクをサポートしている。

タスク 説明
Text2Music テキストから音楽を生成
Cover 既存の楽曲を別スタイルでカバー
Repaint 楽曲の特定区間だけを再生成
Extend 楽曲の前後に新しい部分を追加
Edit メロディを保持しながらタグ/歌詞を変更
Retake 同じ設定でバリエーションを生成

2.3 HeartMuLaとは

ComfyUI用の別の音楽生成ノードパック。ComfyUI-AceMusicはHeartMuLaとのAUDIO型互換性を持ち、両者を組み合わせたハイブリッドワークフローが構築可能。

2.4 ウィジェット順序問題とは

ComfyUIでは、ノードのウィジェット(入力フィールド)の順序が内部的に管理されている。多くの設定を1つのノードに詰め込むと、この順序が予期しない動作を引き起こすことがある。モジュラーアーキテクチャはこの問題を回避する設計手法だ。

これらの用語が押さえられたら、ComfyUI-AceMusicの背景を見ていこう。


3. ComfyUI-AceMusicが生まれた背景

3.1 既存実装の限界

2026年2月時点で、ComfyUIにおけるACE-Step実装は以下の状況だった。

実装 ACE-Step版 Cover Repaint Edit Windows 3.13+
ComfyUI公式ネイティブ v1.0 → v1.5 未対応 未対応 未対応 未検証
billwuhao/ComfyUI_ACE-Step v1.0 一部対応 対応 未対応 未検証
ryanontheinside v1.0 未対応 対応 未対応 未検証

公式は2026年2月3日にACE-Step 1.5対応を発表したものの、主要機能の多くが「コミュニティに期待」という状態だった。

3.2 解決すべき課題

私が開発に着手した時点で、以下の課題があった。

  1. 機能の不完全さ: ACE-Step 1.5の真価であるCover、Repaint、Edit、Retake、Extendが使えない
  2. アーキテクチャの問題: 単一ノードに全パラメータを詰め込むことによるウィジェット順序問題
  3. クロスプラットフォーム問題: torchaudioがWindows + Python 3.13+で問題を起こす
  4. 相互運用性の欠如: 他の音楽生成ノード(HeartMuLa等)との連携ができない

背景がわかったところで、ComfyUI-AceMusicの技術的な特徴を見ていこう。


4. 技術的な特徴と独自性

4.1 世界初:ACE-Step 1.5フル機能のComfyUI実装

ComfyUI-AceMusicは、ACE-Step 1.5の全15機能をComfyUIノードとして実装した世界初の実装である。

公式ComfyUI(2026/02/03時点):
  ✅ Text2Music
  ❌ Cover
  ❌ Repaint
  ❌ Extend
  ❌ Edit
  ❌ Retake

ComfyUI-AceMusic:
  ✅ Text2Music
  ✅ Cover
  ✅ Repaint
  ✅ Extend
  ✅ Edit
  ✅ Retake
  ✅ Understand(メタデータ抽出)
  ✅ Create Sample(自然言語からパラメータ生成)
  ✅ LoRA対応

4.2 モジュラーアーキテクチャ

既存の実装が抱えていた「1つのノードに全部詰め込む」問題を、機能ごとにノードを分離することで解決した。

従来の設計 ComfyUI-AceMusicの設計
1ノードに30+パラメータ 機能別に分離
ウィジェット順序問題発生 問題なし
ワークフローが読みにくい 可読性向上

具体的には以下のように分離している。

[Model Loader] → モデル読み込み専用
[Settings] → 生成パラメータ専用
[Lyrics Input] → 歌詞入力専用
[Caption Input] → スタイル記述専用
[Generator] → 生成実行専用

この分離により、各ノードの責務が明確になり、ワークフローの可読性が大幅に向上した。

4.3 クロスプラットフォーム互換性

Windows + Python 3.13+環境では、torchaudioのバックエンドに問題が発生することがある。ComfyUI-AceMusicは、soundfileとscipyを使用することでこの問題を回避している。

# 従来のアプローチ(問題あり)
import torchaudio
audio, sr = torchaudio.load("file.wav")  # Windows 3.13+でエラー

# ComfyUI-AceMusicのアプローチ(問題なし)
import soundfile as sf
audio, sr = sf.read("file.wav")

4.4 HeartMuLa相互運用性

ComfyUI-AceMusicのAUDIO型は、HeartMuLaノードの出力と互換性がある。これにより、以下のようなハイブリッドワークフローが可能になる。

[HeartMuLa生成] → [AceMusic Cover] → [最終出力]

基本概念が理解できたところで、実際にセットアップして動かしてみよう。


5. 実践:実際に使ってみよう

5.1 インストール

ComfyUI Manager経由(推奨)

ComfyUI Managerで「ComfyUI-AceMusic」を検索してインストール。

手動インストール

cd ComfyUI/custom_nodes
git clone https://github.com/hiroki-abe-58/ComfyUI-AceMusic.git
cd ComfyUI-AceMusic
pip install -r requirements.txt

ACE-Step 1.5のインストール

pip install git+https://github.com/ace-step/ACE-Step.git

モデルは初回使用時にHugging Faceから自動ダウンロードされる。

5.2 環境別の設定

以下の3種類の設定を用途に応じて使い分けることを推奨する。

高品質設定(RTX 3090以上)

# 品質重視設定
duration: 120
inference_steps: 50
guidance_scale: 15.0
cpu_offload: false

バランス設定(RTX 3060-3080)

# 速度と品質のバランス
duration: 60
inference_steps: 27
guidance_scale: 15.0
cpu_offload: false

低VRAM設定(8GB以下)

# VRAM節約設定
duration: 30
inference_steps: 15
guidance_scale: 12.0
cpu_offload: true

5.3 基本ワークフロー(Text2Music)

  1. AceMusic Model Loader を追加し、デバイスを cuda に設定
  2. AceMusic Settings を追加し、パラメータを設定
  3. AceMusic Lyrics Input を追加し、歌詞を入力
[Verse]
Walking down the empty street
Thinking about you and me

[Chorus]
We belong together
Now and forever
  1. AceMusic Caption Input を追加し、スタイルタグを入力
pop, female vocal, energetic, bright synthesizer
  1. 全てを AceMusic Generator に接続 → Preview Audio

サンプルワークフローは workflow/AceMusic_Lyrics_v3.json から読み込める。

5.4 実行結果

上記のワークフローを実行すると、以下のような処理が行われる。

[INFO] Loading ACE-Step 1.5 model...
[INFO] Model loaded on cuda
[INFO] Generating audio...
[INFO]   Duration: 120s
[INFO]   Language: en
[INFO]   Inference steps: 27
[INFO] Generation completed in 8.3s
[INFO] Output: 48000Hz, stereo

5.5 よくあるエラーと対処法

エラー 原因 対処法
CUDA out of memory GPUメモリ不足 cpu_offload を有効化、または duration を短くする
ModuleNotFoundError: acestep ACE-Step未インストール pip install git+https://github.com/ace-step/ACE-Step.git
soundfile not found 依存パッケージ不足 pip install soundfile scipy
Model download failed ネットワーク問題 Hugging Faceへのアクセスを確認
torchaudio backend error Windows 3.13+問題 soundfileが正しくインストールされているか確認

5.6 環境診断スクリプト

問題が発生した場合は、以下のスクリプトで環境を診断できる。

#!/usr/bin/env python3
"""
ComfyUI-AceMusic 環境診断スクリプト
実行方法: python check_acemusic.py
"""
import sys

def check_environment():
    """環境をチェックして問題を報告"""
    issues = []
    
    # Python バージョン
    print(f"Python: {sys.version}")
    if sys.version_info < (3, 10):
        issues.append("Python 3.10以上が必要です")
    
    # PyTorch
    try:
        import torch
        print(f"✅ PyTorch: {torch.__version__}")
        if torch.cuda.is_available():
            print(f"✅ CUDA: {torch.version.cuda}")
            vram = torch.cuda.get_device_properties(0).total_memory / 1e9
            print(f"✅ GPU VRAM: {vram:.1f} GB")
        else:
            issues.append("CUDAが利用できません")
    except ImportError:
        issues.append("PyTorchがインストールされていません")
    
    # ACE-Step
    try:
        import acestep
        print("✅ ACE-Step: インストール済み")
    except ImportError:
        issues.append("ACE-Stepがインストールされていません")
    
    # soundfile(torchaudio代替)
    try:
        import soundfile
        print("✅ soundfile: インストール済み")
    except ImportError:
        issues.append("soundfileがインストールされていません")
    
    # scipy
    try:
        import scipy
        print("✅ scipy: インストール済み")
    except ImportError:
        issues.append("scipyがインストールされていません")
    
    # 結果
    print("\n" + "="*50)
    if issues:
        print("❌ 問題が見つかりました:")
        for issue in issues:
            print(f"  - {issue}")
    else:
        print("✅ 環境は正常です!")

if __name__ == "__main__":
    check_environment()

実装方法がわかったので、次は具体的なユースケースを見ていこう。


6. ユースケース別ガイド

6.1 ユースケース1: Cover機能で楽曲スタイル変換

想定読者: 既存の楽曲を別ジャンルにアレンジしたい方

推奨構成: Model Loader → Settings → Cover Node

ワークフロー例:

[Load Audio] ─────────────────┐
                              ↓
[Model Loader] → [Settings] → [AceMusic Cover] → [Preview Audio]
                              ↑
[Caption Input] ──────────────┘
"jazz piano trio, smooth, relaxed"

実際の使用例:

  • ポップスをジャズアレンジに変換
  • ロックをアコースティックバージョンに
  • EDMをオーケストラアレンジに

6.2 ユースケース2: Repaint機能で部分修正

想定読者: 生成した楽曲の一部だけを修正したい方

推奨構成: Model Loader → Settings → Repaint Node

ワークフロー例:

[Load Audio] ─────────────────┐
                              ↓
[Model Loader] → [Settings] → [AceMusic Repaint] → [Preview Audio]
                              ↑
[Time Range: 30-45s] ─────────┘

実際の使用例:

  • サビの一部だけを再生成
  • イントロのみを改善
  • 特定区間のボーカルを修正

6.3 ユースケース3: HeartMuLaとのハイブリッドワークフロー

想定読者: 複数の音楽生成AIを組み合わせたい上級ユーザー

推奨構成: HeartMuLa → AceMusic Cover → 最終出力

ワークフロー例:

[HeartMuLa Generator] ────────┐
                              ↓
[Model Loader] → [Settings] → [AceMusic Cover] → [AceMusic Extend]
                              ↑                         ↓
[Caption: "add orchestral"] ──┘                  [Preview Audio]

実際の使用例:

  • HeartMuLaで生成したベースにACE-Stepでオーケストラを追加
  • 異なるAIの強みを組み合わせたハイブリッド生成
  • A/Bテストによる品質比較

ユースケースを把握できたところで、この先の学習パスを確認しよう。


7. 学習ロードマップ

この記事を読んだ後、次のステップとして以下をおすすめする。

初級者向け(まずはここから)

  1. サンプルワークフローを試す - workflow/AceMusic_Lyrics_v3.json をロード
  2. ACE-Step公式チュートリアル - モデルの設計思想を理解
  3. ComfyUI基礎 - ノードベースワークフローに慣れる

中級者向け(実践に進む)

  1. Cover機能で既存楽曲のスタイル変換を試す
  2. Repaint機能で部分的な品質向上を行う
  3. LoRAを読み込んで特定スタイルを強化

上級者向け(さらに深く)

  1. HeartMuLaとのハイブリッドワークフロー構築
  2. 動画生成ワークフロー(Wan2.1等)との統合
  3. カスタムワークフローの作成と共有

8. まとめ

この記事では、ComfyUI-AceMusicについて以下を解説した。

  1. 世界初の完全実装: 公式が「まだ未対応」としたCover、Repaint、Edit、Retake機能を全て実装
  2. モジュラーアーキテクチャ: ウィジェット順序問題を解決した設計
  3. クロスプラットフォーム対応: Windows + Python 3.13+でも安定動作

私の所感

正直、開発は大変だった。ACE-Step 1.5のコードベースを読み込み、ComfyUIのノードシステムに適合させ、さらにWindows環境での互換性問題を解決する必要があった。

特に苦労したのはtorchaudioの問題だ。Python 3.13+とWindowsの組み合わせでは、torchaudioのバックエンドが正常に動作しないケースがある。これをsoundfileとscipyで置き換えることで解決したが、オーディオ処理のライブラリ互換性は本当に厄介だ。

しかし、その苦労に見合う成果は得られた。公式が「コミュニティに期待」と言った翌日に、その期待に応える実装を公開できたことは、オープンソースコミュニティの一員として誇りに思う。

ComfyUIの音楽生成エコシステムはまだ発展途上だ。画像生成の世界で起きた「Stable Diffusionの民主化」が、音楽生成でも起きつつある。その一翼を担えることを嬉しく思っている。


参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?