Model Details
Demucs splits a mixed music recording into two finished audio files: the instrumental with the vocal removed, and the isolated vocal itself. Send one audio file; both come back full length at 44.1 kHz, and decoding is ffmpeg-backed so wav, mp3, flac and ogg all work. It runs Hybrid Transformer Demucs (`htdemucs`), trained on MusDB plus 800 songs specifically for music source separation. There is no prompt: the split is fixed, which makes it predictable across a whole catalogue.
## Best for - Removing the lead vocal from a song to make a karaoke or backing track - Pulling an a cappella vocal out of a finished mix to remix or sample - Preparing vocal and instrumental stems for a mashup, cover or DJ edit - Batch-processing a music library into vocal/instrumental pairs - Getting a clean vocal for transcription or lyric alignment
## Choose another model when - You want one named instrument, or any sound you can describe in words — `meta/sam-audio/separate` takes a text prompt and isolates what you name. - You want to clean up a speech recording rather than split music — `rikorose/deepfilternet3` and `elevenlabs/audio-isolation` remove noise instead. - You need drums, bass and the rest as separate files — this endpoint returns only the vocal plus everything else.
## Tips - The output is an array of two URLs, always in the same order: index 0 is the instrumental, index 1 is the isolated vocal. - Give it a full-band mix with the vocal reasonably present — a solo vocal or an instrumental has nothing to separate. - Billed per second of compute time, which grows with the length of the track: a 30-second clip took about 4.5 seconds. - Leave `model` on `htdemucs` unless a result disappoints: `htdemucs_ft` "might be a bit better" but takes four times as long, and costs about four times as much. - Raise `shifts` only if a split sounds unstable: each extra shift re-runs the separation and averages the passes, multiplying time and price.
## Advanced Configuration - `model` picks the separation network; every value returns the same vocal/instrumental pair, so it only trades quality against time and cost. - `clip_mode` handles a track that exceeds full scale: `rescale` (the default) scales the whole signal down, `clamp` hard-clips, `none` leaves it alone.
To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";
const result = await modelrunner.subscribe("meta/demucs", { input: { audio: "https://media.modelrunner.ai/PlbJ07n9klVvKGysT4qdy.wav", model: "htdemucs", output_format: "mp3", }, }); // result.output[0] -> instrumental, result.output[1] -> isolated vocal ```
