Guides

Separation

Split a mixed soundtrack into dialogue, music and effects, or a song into instrument, vocal and speech stems. Every separation model takes one audio asset and returns audio tracks.

Start from the Quickstart

This guide assumes the flow in Quickstart already works — upload an asset, create a job, collect results. What follows is what is specific to separation: choosing models, tiers, and reading multi-track output.

Choosing a model

Every alias carries its family as a prefix, and Models lists them all with the track each one produces.

  • dme_* — dialogue, music and effects from a mixed soundtrack. Built for dubbing, localization and post-production.
  • stem_* — individual instrument and vocal stems from music: vocal, drum, bass, guitars, piano.
  • karaoke_* — the two-way vocal / accompaniment split, tuned for karaoke rather than multi-stem work.
  • denoise_* — clean speech separated from background noise.

Each alias produces exactly one track. Ask for several tracks by naming several aliases, and you can mix families in the same job.

Tiers

DME models take an optional tier. It is a processing profile, not a strict quality rank: premium applies an additional refinement pass where supported, standard is faster and more cost-conscious, and results are source-dependent — compare them on representative material when the choice matters. Supported tiers are per model and listed in Models.

A tier can accept less than its model

A tier runs its own model, so it can be narrower than the alias it sits under — the live tier of dme_dialogue_remove_vocals_v1 takes mono and stereo only, while the model itself accepts 5.1. The Models page flags each of these under the model.

Several tracks in one job

Targets run independently and complete at their own pace, so a webhook fires per target rather than once per job. Pass a tier only on the models that take one.

Create the job
# One job, several tracks — each target runs independently
curl -X POST "https://api.dev.developers.gaudiolab.io/v1/jobs" \
  -H "x-api-key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "assetId": "as_7f3a9c",
    "targets": [
      { "model": "dme_dialogue_v1", "tier": "premium",  "formats": ["wav"] },
      { "model": "dme_music_v1",    "tier": "standard", "formats": ["wav"] },
      { "model": "dme_effects_v1",  "tier": "standard", "formats": ["wav"] },
      { "model": "karaoke_vocal_v1", "formats": ["wav"] },
      { "model": "stem_bass_v1",     "formats": ["wav"] }
    ],
    "webhookUrl": "https://my.app/hooks/separation"
  }'

Reading the output

Each completed target carries output keyed by track name, then by format. The targetKey is what identifies a target across webhooks and polls — it includes the tier, because the same model at two tiers is two targets.

Completed job
{
  "jobId": "job_91b2e0",
  "status": "completed",
  "linksExpireAt": "2026-06-10T12:00:00Z",
  "targets": [
    {
      "targetKey": "dme_dialogue_v1:premium",
      "model": "dme_dialogue_v1",
      "tier": "premium",
      "status": "completed",
      "output": { "dialogue": { "wav": "https://cdn/.../dialogue.wav" } }
    },
    {
      "targetKey": "stem_bass_v1",
      "model": "stem_bass_v1",
      "status": "completed",
      "output": { "bass": { "wav": "https://cdn/.../bass.wav" } }
    }
  ]
}

Download links expire

Output links are valid for 48 hours. Re-fetching the job refreshes them, but download and store the files in your own storage as soon as a target completes.

Separation models render wav. Input formats, sample rates and 5.1 handling are covered in Audio formats.