Voice isolator

POST /v1/isolate. Send a recording, get just the voice back, with music and background noise removed.

bash
curl https://api.iodine.dev/v1/isolate \
  -H "Authorization: Bearer $IODINE_API_KEY" \
  -F file=@interview.mp3 \
  -o interview-voice.wav

The response is the audio itself: just the voice, as mono 44.1 kHz WAV, with music and background noise removed.

Use it to clean up a recording before cloning a voice from it, to tidy podcasts and voice-overs, or to take the music out from under someone speaking. To try it without writing code, open the console's Voice isolator: upload or record audio, hear the original and the result side by side, and download it, at the same price.

Request

Multipart form fields:

Field
filerequiredThe recording: WAV, MP3, FLAC or OGG, up to 64 MB and 10 minutes. Split longer recordings. audio works as the field name too.
formatoptionalwav (default; 16-bit) or mp3 (192 kb/s).

The response's Content-Type is audio/wav or audio/mpeg. Its headers also include:

Header
X-Request-IdThe request's id, like every request.
X-Audio-DurationThe recording's length in seconds, which is what you're billed for.

/v1/audio-isolation is the same endpoint at ElevenLabs' path, and it accepts their audio field name.

Examples

python
import os, requests

with open("interview.mp3", "rb") as f:
    r = requests.post(
        "https://api.iodine.dev/v1/isolate",
        headers={"Authorization": f"Bearer {os.environ['IODINE_API_KEY']}"},
        files={"file": f},
        data={"format": "mp3"},
    )
r.raise_for_status()
open("interview-voice.mp3", "wb").write(r.content)
javascript
const form = new FormData();
form.append("file", new Blob([await fs.promises.readFile("interview.mp3")]), "interview.mp3");
const res = await fetch("https://api.iodine.dev/v1/isolate", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.IODINE_API_KEY}` },
  body: form,
});
await fs.promises.writeFile("interview-voice.wav", Buffer.from(await res.arrayBuffer()));

What it removes, and what it doesn't

  • Music under speech: removed, even when it's loud.
  • Background noise: fans, traffic, hum, hiss.
  • Echo isn't removed: the voice comes back sounding like the room it was recorded in. Record somewhere soft-furnished if that matters.

If several people talk at once, you get all of their voices back: it keeps voices and removes everything else, but it doesn't pick one speaker. Singing counts as voice, so it's kept.

Pricing

$0.001 per minute of audio ($0.06 an hour), measured from the recording you send, to the millionth of a dollar. Requests that fail on our side cost nothing. It draws on the same credit balance as text to speech, and shows in the console's usage as isolate.

Your audio

Recordings are processed in memory on our own servers and never stored, whatever your Zero Data Retention setting; we keep only the request's metadata (length, cost). See Billing and data.