DengLi1208's picture
Upload folder using huggingface_hub
6c38ec5 verified

ACE-Step API クライアントドキュメント

Language / 语言 / 言語: English | 中文 | 日本語


本サービスはHTTPベースの非同期音楽生成APIを提供します。

基本的なワークフロー

  1. POST /v1/music/generate を呼び出してタスクを送信し、job_id を取得します。
  2. GET /v1/jobs/{job_id} を呼び出してタスクステータスをポーリングし、statussucceeded または failed になるまで待ちます。
  3. 結果で返された GET /v1/audio?path=... URL から音声ファイルをダウンロードします。

目次


1. タスクステータスの説明

タスクステータス(status)には以下の種類があります:

  • queued:タスクがキューに入り、実行待ちです。この時点で queue_positioneta_seconds を確認できます。
  • running:生成が進行中です。
  • succeeded:生成が成功し、結果は result フィールドにあります。
  • failed:生成が失敗し、エラー情報は error フィールドにあります。

2. 生成タスクの作成

2.1 API 定義

  • URL/v1/music/generate
  • メソッドPOST
  • Content-Typeapplication/jsonmultipart/form-data、または application/x-www-form-urlencoded

2.2 リクエストパラメータ

パラメータ命名規則

APIはほとんどのパラメータで snake_casecamelCase の両方の命名をサポートしています。例:

  • audio_duration / duration / audioDuration
  • key_scale / keyscale / keyScale
  • time_signature / timesignature / timeSignature
  • sample_query / sampleQuery / description / desc
  • use_format / useFormat / format

また、メタデータはネストされたオブジェクト(metasmetadata、または user_metadata)で渡すことができます。

方法 A:JSONリクエスト(application/json)

テキストパラメータのみを渡す場合、またはサーバー上に既に存在する音声ファイルパスを参照する場合に適しています。

基本パラメータ

パラメータ名 デフォルト 説明
caption string "" 音楽の説明プロンプト
lyrics string "" 歌詞の内容
thinking bool false 5Hz LMを使用してオーディオコードを生成するかどうか(lm-dit動作)
vocal_language string "en" 歌詞の言語(en、zh、jaなど)
audio_format string "mp3" 出力形式(mp3、wav、flac)

サンプル/説明モードパラメータ

パラメータ名 デフォルト 説明
sample_mode bool false ランダムサンプル生成モードを有効にする(LM経由でcaption/lyrics/metasを自動生成)
sample_query string "" サンプル生成のための自然言語の説明(例:「静かな夜のための柔らかいベンガルのラブソング」)。別名:descriptiondesc
use_format bool false LMを使用して提供されたcaptionとlyricsを強化/フォーマットする。別名:format

マルチモデルサポート

パラメータ名 デフォルト 説明
model string null 使用するDiTモデルを選択(例:"acestep-v15-turbo""acestep-v15-turbo-shift3")。/v1/models で利用可能なモデルを一覧表示。指定しない場合はデフォルトモデルを使用。

thinkingのセマンティクス(重要)

  • thinking=false
    • サーバーは5Hz LMを使用して audio_code_string を生成しません
    • DiTは text2music モードで実行され、提供された audio_code_string無視します。
  • thinking=true
    • サーバーは5Hz LMを使用して audio_code_string を生成します(lm-dit動作)。
    • DiTはLM生成のコードで実行され、音楽品質が向上します。

メタデータの自動補完(条件付き)

use_cot_caption=true または use_cot_language=true またはメタデータフィールドが欠落している場合、サーバーは caption/lyrics に基づいて5Hz LMを呼び出し、欠落しているフィールドを補完することがあります:

  • bpm
  • key_scale
  • time_signature
  • audio_duration

ユーザー提供の値が常に優先されます。LMは空/欠落しているフィールドのみを補完します。

音楽属性パラメータ

パラメータ名 デフォルト 説明
bpm int null テンポ(BPM)を指定、範囲30-300
key_scale string "" キー/スケール(例:「C Major」、「Am」)。別名:keyscalekeyScale
time_signature string "" 拍子記号(2、3、4、6はそれぞれ2/4、3/4、4/4、6/8)。別名:timesignaturetimeSignature
audio_duration float null 生成時間(秒)、範囲10-600。別名:durationtarget_duration

オーディオコード(オプション)

パラメータ名 デフォルト 説明
audio_code_string string または string[] "" llm_dit 用のオーディオセマンティックトークン(5Hz)。別名:audioCodeString

生成制御パラメータ

パラメータ名 デフォルト 説明
inference_steps int 8 推論ステップ数。Turboモデル:1-20(推奨8)。Baseモデル:1-200(推奨32-64)
guidance_scale float 7.0 プロンプトガイダンス係数。baseモデルのみ有効
use_random_seed bool true ランダムシードを使用するかどうか
seed int -1 シードを指定(use_random_seed=falseの場合)
batch_size int 2 バッチ生成数(最大8)

高度なDiTパラメータ

パラメータ名 デフォルト 説明
shift float 3.0 タイムステップシフト係数(範囲1.0-5.0)。baseモデルのみ有効、turboモデルには無効
infer_method string "ode" 拡散推論方法:"ode"(Euler、より高速)または "sde"(確率的)
timesteps string null カンマ区切りのカスタムタイムステップ(例:"0.97,0.76,0.615,0.5,0.395,0.28,0.18,0.085,0")。inference_stepsshift をオーバーライド
use_adg bool false 適応デュアルガイダンスを使用(baseモデルのみ)
cfg_interval_start float 0.0 CFG適用開始比率(0.0-1.0)
cfg_interval_end float 1.0 CFG適用終了比率(0.0-1.0)

5Hz LMパラメータ(オプション、サーバー側)

これらのパラメータは5Hz LMサンプリングを制御し、メタデータの自動補完と(thinking=true の場合)コード生成に使用されます。

パラメータ名 デフォルト 説明
lm_model_path string null 5Hz LMチェックポイントディレクトリ名(例:acestep-5Hz-lm-0.6B
lm_backend string "vllm" vllm または pt
lm_temperature float 0.85 サンプリング温度
lm_cfg_scale float 2.5 CFGスケール(>1でCFGを有効化)
lm_negative_prompt string "NO USER INPUT" CFGで使用するネガティブプロンプト
lm_top_k int null Top-k(0/nullで無効)
lm_top_p float 0.9 Top-p(>=1は無効として扱われる)
lm_repetition_penalty float 1.0 繰り返しペナルティ

LM CoT(思考の連鎖)パラメータ

パラメータ名 デフォルト 説明
use_cot_caption bool true LMにCoT推論で入力captionを書き換え/強化させる。別名:cot_captioncot-caption
use_cot_language bool true LMにCoTでボーカル言語を検出させる。別名:cot_languagecot-language
constrained_decoding bool true 構造化されたLM出力のためのFSMベースの制約付きデコーディングを有効にする。別名:constrainedDecodingconstrained
constrained_decoding_debug bool false 制約付きデコーディングのデバッグログを有効にする

編集/参照オーディオパラメータ(サーバー上の絶対パスが必要):

パラメータ名 デフォルト 説明
reference_audio_path string null 参照オーディオパス(スタイル転送)
src_audio_path string null ソースオーディオパス(リペイント/カバー)
task_type string "text2music" タスクタイプ:text2musiccoverrepaintlegoextractcomplete
instruction string auto 編集指示(提供されない場合はtask_typeに基づいて自動生成)
repainting_start float 0.0 リペイント開始時間(秒)
repainting_end float null リペイント終了時間(秒)、-1でオーディオの終端
audio_cover_strength float 1.0 カバー強度(0.0-1.0)。スタイル転送には小さい値(0.2)を使用

方法 B:ファイルアップロード(multipart/form-data)

参照またはソースオーディオとしてローカルオーディオファイルをアップロードする必要がある場合に使用します。

上記のすべてのフィールドをフォームフィールドとしてサポートすることに加えて、以下のファイルフィールドもサポートしています:

  • reference_audio:(ファイル)参照オーディオファイルをアップロード
  • src_audio:(ファイル)ソースオーディオファイルをアップロード

注意:ファイルをアップロードすると、対応する _path パラメータは自動的に無視され、システムはアップロード後の一時ファイルパスを使用します。

2.3 レスポンス例

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "queue_position": 1
}

2.4 使用例(cURL)

基本的なJSONメソッド

curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "アップビートなポップソング",
    "lyrics": "Hello world",
    "inference_steps": 8
  }'

thinking=trueの場合(LMがコードを生成 + 欠落メタを補完)

curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "アップビートなポップソング",
    "lyrics": "Hello world",
    "thinking": true,
    "lm_temperature": 0.85,
    "lm_cfg_scale": 2.5
  }'

説明駆動型生成(sample_query)

curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "sample_query": "静かな夜のための柔らかいベンガルのラブソング",
    "thinking": true
  }'

フォーマット強化(use_format=true)

curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "ポップロック",
    "lyrics": "[Verse 1]\n街を歩いて...",
    "use_format": true,
    "thinking": true
  }'

特定のモデルを選択

curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "エレクトロニックダンスミュージック",
    "model": "acestep-v15-turbo",
    "thinking": true
  }'

カスタムタイムステップを使用

curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "ジャズピアノトリオ",
    "timesteps": "0.97,0.76,0.615,0.5,0.395,0.28,0.18,0.085,0",
    "thinking": true
  }'

thinking=falseの場合(DiTのみ、ただし欠落メタを補完)

curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "ゆっくりとした感情的なバラード",
    "lyrics": "...",
    "thinking": false,
    "bpm": 72
  }'

ファイルアップロードメソッド

curl -X POST http://localhost:8001/v1/music/generate \
  -F "caption=この曲をリミックス" \
  -F "src_audio=@/path/to/local/song.mp3" \
  -F "task_type=repaint"

3. タスク結果の照会

3.1 API 定義

  • URL/v1/jobs/{job_id}
  • メソッドGET

3.2 レスポンスパラメータ

レスポンスには基本的なタスク情報、キューステータス、最終結果が含まれます。

主要フィールド

  • status:現在のステータス
  • queue_position:現在のキュー位置(0は実行中または完了を意味)
  • eta_seconds:推定残り待ち時間(秒)
  • avg_job_seconds:平均ジョブ時間(ETA推定用)
  • result:成功時の結果オブジェクト
    • audio_paths:生成されたオーディオファイルURLのリスト(/v1/audio エンドポイントと併用)
    • first_audio_path:最初のオーディオパス(URL)
    • second_audio_path:2番目のオーディオパス(URL、batch_size >= 2の場合)
    • generation_info:生成パラメータの詳細
    • status_message:簡潔な結果説明
    • seed_value:使用されたシード値(カンマ区切り)
    • metas:完全なメタデータ辞書
    • bpm:検出/使用されたBPM
    • duration:検出/使用された長さ
    • keyscale:検出/使用されたキー
    • timesignature:検出/使用された拍子
    • genres:検出されたジャンル(利用可能な場合)
    • lm_model:使用されたLMモデルの名前
    • dit_model:使用されたDiTモデルの名前
  • error:失敗時のエラー情報

3.3 レスポンス例

キュー中

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "created_at": 1700000000.0,
  "queue_position": 5,
  "eta_seconds": 25.0,
  "avg_job_seconds": 5.0,
  "result": null,
  "error": null
}

実行成功

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "succeeded",
  "created_at": 1700000000.0,
  "started_at": 1700000001.0,
  "finished_at": 1700000010.0,
  "queue_position": 0,
  "result": {
    "first_audio_path": "/v1/audio?path=%2Ftmp%2Fapi_audio%2Fabc123.mp3",
    "second_audio_path": "/v1/audio?path=%2Ftmp%2Fapi_audio%2Fdef456.mp3",
    "audio_paths": [
      "/v1/audio?path=%2Ftmp%2Fapi_audio%2Fabc123.mp3",
      "/v1/audio?path=%2Ftmp%2Fapi_audio%2Fdef456.mp3"
    ],
    "generation_info": "🎵 2つのオーディオを生成\n⏱️ 合計:8.5s\n🎲 シード:12345,67890",
    "status_message": "✅ 生成が正常に完了しました!",
    "seed_value": "12345,67890",
    "metas": {
      "bpm": 120,
      "duration": 30,
      "keyscale": "C Major",
      "timesignature": "4",
      "caption": "キャッチーなメロディのアップビートなポップソング"
    },
    "bpm": 120,
    "duration": 30,
    "keyscale": "C Major",
    "timesignature": "4",
    "genres": null,
    "lm_model": "acestep-5Hz-lm-0.6B",
    "dit_model": "acestep-v15-turbo"
  },
  "error": null
}

4. ランダムサンプル生成

4.1 API 定義

  • URL/v1/music/random
  • メソッドPOST

このエンドポイントは5Hz LM経由でcaption、lyrics、メタデータを自動生成するサンプルモードジョブを作成します。

4.2 リクエストパラメータ

パラメータ名 デフォルト 説明
thinking bool true LM経由でオーディオコードも生成するかどうか

4.3 レスポンス例

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "queue_position": 1
}

4.4 使用例

curl -X POST http://localhost:8001/v1/music/random \
  -H 'Content-Type: application/json' \
  -d '{"thinking": true}'

5. 利用可能なモデルの一覧

5.1 API 定義

  • URL/v1/models
  • メソッドGET

サーバーにロードされている利用可能なDiTモデルのリストを返します。

5.2 レスポンス例

{
  "models": [
    {
      "name": "acestep-v15-turbo",
      "is_default": true
    },
    {
      "name": "acestep-v15-turbo-shift3",
      "is_default": false
    }
  ],
  "default_model": "acestep-v15-turbo"
}

5.3 使用例

curl http://localhost:8001/v1/models

6. 音声ファイルのダウンロード

6.1 API 定義

  • URL/v1/audio
  • メソッドGET

パスで生成されたオーディオファイルをダウンロードします。

6.2 リクエストパラメータ

パラメータ名 説明
path string URLエンコードされたオーディオファイルパス

6.3 使用例

# ジョブ結果のURLを使用してダウンロード
curl "http://localhost:8001/v1/audio?path=%2Ftmp%2Fapi_audio%2Fabc123.mp3" -o output.mp3

7. ヘルスチェック

7.1 API 定義

  • URL/health
  • メソッドGET

サービスのヘルスステータスを返します。

7.2 レスポンス例

{
  "status": "ok",
  "service": "ACE-Step API",
  "version": "1.0"
}

8. 環境変数

APIサーバーは環境変数で設定できます:

変数 デフォルト 説明
ACESTEP_API_HOST 127.0.0.1 サーバーバインドホスト
ACESTEP_API_PORT 8001 サーバーバインドポート
ACESTEP_CONFIG_PATH acestep-v15-turbo プライマリDiTモデルパス
ACESTEP_CONFIG_PATH2 (空) セカンダリDiTモデルパス(オプション)
ACESTEP_CONFIG_PATH3 (空) 3番目のDiTモデルパス(オプション)
ACESTEP_DEVICE auto モデルロードデバイス
ACESTEP_USE_FLASH_ATTENTION true flash attentionを有効化
ACESTEP_OFFLOAD_TO_CPU false アイドル時にモデルをCPUにオフロード
ACESTEP_OFFLOAD_DIT_TO_CPU false DiTを特にCPUにオフロード
ACESTEP_LM_MODEL_PATH acestep-5Hz-lm-0.6B デフォルト5Hz LMモデル
ACESTEP_LM_BACKEND vllm LMバックエンド(vllmまたはpt)
ACESTEP_LM_DEVICE (ACESTEP_DEVICEと同じ) LMデバイス
ACESTEP_LM_OFFLOAD_TO_CPU false LMをCPUにオフロード
ACESTEP_QUEUE_MAXSIZE 200 最大キューサイズ
ACESTEP_QUEUE_WORKERS 1 キューワーカー数
ACESTEP_AVG_JOB_SECONDS 5.0 初期平均ジョブ時間推定
ACESTEP_TMPDIR .cache/acestep/tmp 一時ファイルディレクトリ

エラー処理

HTTPステータスコード

  • 200:成功
  • 400:無効なリクエスト(不正なJSON、フィールドの欠落)
  • 404:ジョブが見つからない
  • 415:サポートされていないContent-Type
  • 429:サーバービジー(キューが満杯)
  • 500:内部サーバーエラー

エラーレスポンス形式

{
  "detail": "問題を説明するエラーメッセージ"
}

ベストプラクティス

  1. thinking=true を使用 してLM強化生成で最高品質の結果を得る。

  2. sample_query/description を使用 して自然言語の説明から素早く生成。

  3. use_format=true を使用 してcaption/lyricsがあるがLMに強化してもらいたい場合。

  4. ジョブステータスのポーリング は適切な間隔(例:1-2秒ごと)で行い、サーバーの過負荷を避ける。

  5. avg_job_seconds を確認 してレスポンスで待ち時間を推定。

  6. マルチモデルサポートを使用 するには ACESTEP_CONFIG_PATH2ACESTEP_CONFIG_PATH3 環境変数を設定し、model パラメータで選択。

  7. 本番環境 では常に適切なContent-Typeヘッダーを設定して415エラーを回避。