curl https://api.iodine.dev/v1/isolate \
-H "Authorization: Bearer $IODINE_API_KEY" \
-F file=@interview.mp3 \
-o interview-voice.wavThe 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 | ||
|---|---|---|
file | required | The recording: WAV, MP3, FLAC or OGG, up to 64 MB and 10 minutes. Split longer recordings. audio works as the field name too. |
format | optional | wav (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-Id | The request's id, like every request. |
X-Audio-Duration | The 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
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)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.