Seedream 5.0 Pro está no ar | Experimente no Gerador de Imagens →

ACE Step Audio Outpaint

wavespeed-ai /

ACE-Step Audio Outpaint generates seamless start or end extensions that match the original, ideal for intros, outros and longer tracks. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

audio-to-audio
Entrada

Ocioso

$0.0002por execução·~5000 / $1

ExemplosVer todos

Modelos relacionados

README

ACE-Step Audio Outpaint

Extend your audio tracks seamlessly with AI-powered music generation. Upload any audio clip and let the model generate new content before or after it — perfectly matching the style, rhythm, and mood of your original track.

Why It Sounds Great

  • Style-aware generation: Uses tag-based guidance to match genres like lofi, hiphop, trap, drum and bass, and more.
  • Seamless transitions: Generated audio blends naturally with your original track without abrupt cuts or mismatched beats.
  • Bidirectional extension: Extend audio at the beginning, end, or both directions simultaneously.
  • Lyrics support: Optionally provide lyrics to guide vocal generation in extended sections.
  • Reproducible results: Use the seed parameter to recreate exact outputs or explore variations.

Parameters

ParameterRequiredDescription
audioYesSource audio file (upload or public URL).
tagsYesComma-separated style tags to guide generation (e.g., "lofi, hiphop, chill, trap").
extend_before_durationNoSeconds to generate before the original audio. Default: 0.
extend_after_durationNoSeconds to generate after the original audio. Default: 30.
lyricsNoOptional lyrics to guide vocal generation in extended sections.
seedNoRandom seed for reproducibility. Use -1 for random.

How to Use

  1. Upload your audio — drag and drop or paste a public URL.
  2. Add style tags — describe the genre and mood (e.g., "lofi, hiphop, chill").
  3. Set extension duration:
  • Use extend_after_duration to add time at the end.
  • Use extend_before_duration to add time at the beginning.
  1. Add lyrics (optional) — provide text if you want vocals in the extended section.
  2. Set seed (optional) — use -1 for random, or a specific number for reproducible results.
  3. Run — click the button and wait for generation.
  4. Download — preview and save your extended audio.

Pricing

Per-second billing based on total output duration.

MetricCost
Per second$0.0002

Billing Formula

Total cost = (original audio duration + extend_before_duration + extend_after_duration) × $0.0002

Examples

OriginalExtend BeforeExtend AfterTotal DurationTotal Cost
60s0s30s90s$0.018
90s10s30s130s$0.026
120s0s60s180s$0.036
180s30s30s240s$0.048

Best Use Cases

  • Music Production — Extend loops, intros, or outros for full-length tracks.
  • Content Creation — Generate longer background music for videos and podcasts.
  • DJ & Remix Work — Create extended mixes or seamless transitions between tracks.
  • Game & Media Audio — Produce adaptive music that can loop or extend dynamically.
  • Songwriting — Explore new directions by extending existing ideas with AI assistance.

Pro Tips for Best Results

  • Use descriptive, specific tags — "lofi, hiphop, jazzy, chill, piano" works better than just "music".
  • For consistent style, keep the original audio and extension durations balanced.
  • Experiment with different seeds to find the perfect variation.
  • When using lyrics, match the syllable count and rhythm to the expected musical phrasing.
  • Start with shorter extensions (15-30s) to test the style match before generating longer segments.

Notes

  • If using a URL, ensure it is publicly accessible. A preview player in the interface confirms successful loading.
  • Processing time scales with total output duration.
  • For best results, use clean source audio with consistent tempo and style.
Nota:Este site utiliza modelos de IA fornecidos por terceiros.

Ace Step Audio Outpaint API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/wavespeed-ai/ace-step/audio-outpaint with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Ace Step Audio Outpaint below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
    "tags": "example",
    "extend_before_duration": 0,
    "extend_after_duration": 30,
    "seed": -1
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/ace-step/audio-outpaint" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/wavespeed-ai/ace-step/audio-outpaint";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
        "tags": "example",
        "extend_before_duration": 0,
        "extend_after_duration": 30,
        "seed": -1
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
    "tags": "example",
    "extend_before_duration": 0,
    "extend_after_duration": 30,
    "seed": -1
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/wavespeed-ai/ace-step/audio-outpaint", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Ace Step Audio Outpaint API — Frequently asked questions

What is the Ace Step Audio Outpaint API?

Ace Step Audio Outpaint is a WaveSpeedAI model for AI inference, exposed as a REST API on WaveSpeedAI. ACE-Step Audio Outpaint generates seamless start or end extensions that match the original, ideal for intros, outros and longer tracks. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Ace Step Audio Outpaint API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/wavespeed-ai/ace-step-audio-outpaint.

How much does Ace Step Audio Outpaint cost per run?

Ace Step Audio Outpaint starts at $0.000 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Ace Step Audio Outpaint accept?

Key inputs: `audio`, `seed`, `extend_after_duration`, `extend_before_duration`, `lyrics`, `tags`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/wavespeed-ai/ace-step-audio-outpaint.

How long does Ace Step Audio Outpaint take to generate?

Median end-to-end generation time on WaveSpeedAI is around 193 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Ace Step Audio Outpaint outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (WaveSpeedAI). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

ACE Step Audio Outpaint | AI Voice Conversion API | WaveSpeedAI