Elevenlabs Audio Isolation API Documentation
Playground
Try it on WaveSpeedAI!ElevenLabs Audio Isolation isolates speech from background noise to produce clearer dialogue, interviews, voice recordings, podcasts, and other speech-focused audio workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
ElevenLabs Audio Isolation separates speech from background noise to produce cleaner, more intelligible voice recordings. Upload an audio file containing dialogue or spoken content, and the model reduces surrounding noise while preserving the speech for interviews, voiceovers, meetings, and other dialogue-focused workflows.
It is designed specifically for speech isolation rather than music stem separation.
Why Choose This?
-
Speech isolation
Extract clearer spoken audio from recordings with background noise. -
Dialogue cleanup
Improve interviews, conversations, narration, and other speech-focused recordings. -
Simple workflow
Only an input audio file is required. -
Long-audio support
Process recordings up to60minutes. -
Large-file support
Accept audio files up to500 MB.
Parameters
| Parameter | Required | Description |
|---|---|---|
| audio | Yes | Audio file provided by upload or direct URL. Maximum input size: 500 MB. Maximum processed duration: 60 minutes. |
How to Use
- Provide an audio recording — Upload a file or supply a direct audio URL.
- Submit — Run the speech-isolation process.
- Retrieve the result — Preview and download the cleaned audio.
Pricing
Pricing is based on the processed input audio duration.
The rate is $0.11 per input minute, charged proportionally to duration.
| Input Duration | Price |
|---|---|
| 30 seconds | $0.055 |
| 1 minute | $0.11 |
| 5 minutes | $0.55 |
| 10 minutes | $1.10 |
| 30 minutes | $3.30 |
| 60 minutes | $6.60 |
Only the first 60 minutes of input audio are processed and billed.
Best Use Cases
- Interviews — Reduce environmental noise around spoken dialogue.
- Voiceovers — Clean recordings captured outside controlled studio environments.
- Meetings and presentations — Improve speech clarity in recorded conversations and talks.
- Creator content — Clean dialogue for videos, podcasts, tutorials, and social content.
- Field recordings — Reduce distracting background sound around recorded speech.
- Post-production — Prepare cleaner dialogue before editing, mixing, or further processing.
Pro Tips
- Use recordings where speech is reasonably audible above the surrounding noise.
- Cleaner source recordings generally produce stronger isolation results.
- Heavy overlap between speech and loud background sounds may limit how completely the noise can be removed.
- Use the isolated output as a cleaner starting point for voice editing, mixing, or enhancement.
- Supply a direct audio-file URL rather than a webpage containing an embedded player.
Notes
audiois the only required parameter.- Maximum input size is
500 MB. - Up to the first
60minutes of audio are processed and billed. - This endpoint is designed to isolate speech from background noise.
- It is not intended to separate music into vocals, drums, instruments, or other stems.
- Output quality depends on the source recording and the amount of overlap between speech and background noise.
Related Models
- ElevenLabs Voice Changer — Transform the voice in an existing recording.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3"
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/elevenlabs/audio-isolation" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body \
"${RESULT_URL}" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}")
RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
case "${STATUS}" in
completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
failed|cancelled|timeout|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
*) sleep 2 ;;
esac
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| audio | string | Yes | - | 1 ~ unlimited characters · pattern: ^https?:// | Audio file URL. Upload or supply a direct URL. Maximum input: 500 MB and 1 hour. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Output values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.status | string | Task status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses. |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.status | string | Status: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses |
| data.created_at | string | ISO timestamp of when the request was created |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |