Skip to main content
deezer avatar

Spleeter API

deezer/spleeter

Split a song into an instrumental backing track and an isolated vocal in a single call, charged as one flat price per track instead of per minute of audio.

segmentation

Model Input

Input

URL of the track to split. Built for a full-band music mix with the lead vocal present - a solo vocal, or a track that is already instrumental, has nothing to separate. WAV and MP3 sources both decode. Keep it to a single song: runs up to 3.5 minutes are verified and about five minutes is the practical ceiling. An over-long file FAILS the whole request - sometimes with no error message at all - rather than returning a shortened result; a failed request is not charged.

You need to be logged in to run this model and view results.
Log in

Model Output

Output

Loading
Loading
Generated in 8.767 seconds
Logs (1 lines)

Model Example Requests

Examples

Spleeter API

Spleeter is a audio-to-audio AI model by deezer. On ModelRunner it runs through a REST API or via MCP from any AI assistant, at $0.0025 per audio clip.

POST https://queue.modelrunner.run/deezer/spleeter

cURL

# Submit a request to the queue. Input fields go at the top level of the
# body. The optional reserved "metadata" object holds your own flat string
# tags — stored on the request, never sent to the model; filter later with
# GET https://queue.modelrunner.run/requests?metadata=<url-encoded JSON>.
curl -X POST https://queue.modelrunner.run/deezer/spleeter \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "audio": "https://media.modelrunner.ai/4aDfffFe0jPK0ANuVnrOQ.wav",
    "metadata": {
      "project": "my-project"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/deezer/spleeter/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/deezer/spleeter/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("deezer/spleeter", {
  input: {
    "audio": "https://media.modelrunner.ai/4aDfffFe0jPK0ANuVnrOQ.wav"
  },
});
console.log(result);

Python

import os
import requests

headers = {"Authorization": f"Key {os.environ['MRUN_API_KEY']}"}

submitted = requests.post(
    "https://queue.modelrunner.run/deezer/spleeter",
    headers=headers,
    json={
      "audio": "https://media.modelrunner.ai/4aDfffFe0jPK0ANuVnrOQ.wav"
    },
).json()

# Poll submitted["status_url"] until "COMPLETED", then:
result = requests.get(submitted["response_url"], headers=headers).json()

Input parameters

Input parameters of Spleeter
NameTypeRequiredDescription
audiostring (uri)yesURL of the track to split. Built for a full-band music mix with the lead vocal present - a solo vocal, or a track that is already instrumental, has nothing to separate. WAV and MP3 sources both decode. Keep it to a single song: runs up to 3.5 minutes are verified and about five minutes is the practical ceiling. An over-long file FAILS the whole request - sometimes with no error message at all - rather than returning a shortened result; a failed request is not charged.

Machine-readable: OpenAPI schema · llms.txt

Use Spleeter from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Spleeter becomes a tool your assistant can call directly — it authorizes via OAuth (no API key in config) and runs this model with the run_model tool using the endpoint deezer/spleeter.

MCP client config (Claude Desktop, Cursor)

{
  "mcpServers": {
    "modelrunner": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.modelrunner.run/mcp"]
    }
  }
}

Claude Code

claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp

Then ask your assistant, for example: “Run deezer/spleeter on ModelRunner to generate audio”. MCP setup guide.

Model Details

Model Details

Spleeter splits a song into two finished audio files: the accompaniment (the full mix with the lead vocal removed) and the isolated vocal itself. Send one audio URL; there is nothing else to configure and no prompt. It is a purpose-built vocal remover rather than a general stem splitter, and it bills as one flat charge per track instead of per minute of audio.

## Best for - Making a karaoke or backing track by stripping the lead vocal from a song - Pulling an a cappella vocal out of a finished mix to remix or sample - Preparing a vocal and instrumental pair for a mashup, cover or DJ edit - Batch-processing a music library at a fixed, predictable cost per track

## Choose another model when - You need a full-bandwidth split: this model was trained on spectrograms up to 11 kHz, so detail above that is missing from both stems; `meta/demucs` returns 44.1 kHz stems. - You need drums, bass and other instruments separately, or one sound you can name — `meta/sam-audio/separate` isolates a target you describe in words. - You need to separate something longer than a song: a DJ set or a podcast fails here rather than being shortened. Split the audio into song-length parts first.

## Tips - Send a full-band mix with the vocal present: a solo vocal or an instrumental track has nothing to separate. - The result is an array of two URLs: index 0 is the accompaniment, index 1 is the isolated vocal. - WAV and MP3 sources both decode; the two stems always come back as WAV at the source's own sample rate.

## Limitations - Content above 11 kHz is discarded rather than attenuated, so both stems sound duller than the source on bright material. - Exactly two stems, fixed: vocal and everything else. There is no way to request a drums/bass/other split. - Verified up to a 3.5-minute track; about five minutes is the practical ceiling, and an over-long file fails the whole request — sometimes with no error message — rather than returning a shortened result. - The first call after a quiet period can take about two minutes to start; later calls return in a few seconds.

To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("deezer/spleeter", { input: { audio: "https://media.modelrunner.ai/PlbJ07n9klVvKGysT4qdy.wav", }, }); // result.output[0] -> accompaniment (instrumental), result.output[1] -> isolated vocal ```