Elevenlabs Voice Changer

Elevenlabs Voice Changer

Playground

Try it on WaveSpeedAI!

ElevenLabs Voice Changer transforms any audio into speech with a different voice while preserving the original speech patterns and timing. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.

Features

ElevenLabs Voice Changer transforms any audio into speech with a different voice. Upload your audio and select a target voice — the model converts the speech while preserving the original timing, emotion, and delivery. Built on ElevenLabs’ industry-leading voice AI with best-in-class quality.

REST inference API, best performance, no cold starts, affordable pricing.


Why Choose This?

  • High-quality voice conversion Industry-leading voice transformation that maintains natural speech patterns and emotional delivery.

  • Multiple voice options Choose from a variety of pre-built voices to match your content needs.

  • Background noise removal Optional noise reduction to clean up audio before conversion.

  • Fast processing Optimized for quick turnaround with no cold starts.

  • Production-ready API Reliable REST endpoint with predictable per-minute pricing.


Parameters

ParameterRequiredDescription
audioYesSource audio file to transform (upload or URL)
voice_idNoTarget voice for conversion (default: Alice)
remove_background_noiseNoRemove background noise from the audio

How to Use

  1. Upload your audio — drag and drop, paste a URL, or record directly.
  2. Select voice — choose the target voice for conversion.
  3. Enable noise removal (optional) — check to clean up background noise.
  4. Run — submit and download the converted audio.

Pricing

DurationCost
Per minute$0.30
30 seconds$0.15
5 minutes$1.50

Best Use Cases

  • Content Creation — Change voices for podcasts, videos, or audiobooks.
  • Dubbing — Convert speech to different voices for localization.
  • Privacy — Anonymize voice recordings while preserving content.
  • Character Voices — Create distinct character voices for storytelling.
  • Accessibility — Convert speech to preferred voice styles.

Pro Tips

  • Use clean, high-quality source audio for best results.
  • Enable background noise removal if your source has ambient sounds.
  • Shorter clips process faster — split long audio for parallel processing.
  • Test with different voices to find the best match for your content.

Notes

  • Maximum audio duration is 10 minutes per job.
  • For longer content, split into segments and process separately.
  • Supported audio formats include MP3, WAV, and other common formats.

  • ElevenLabs V3 — Generate speech from text with natural-sounding voices.
  • OpenAI Whisper — Transcribe audio to text with high accuracy.

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",
  "voice_id": "Alice",
  "remove_background_noise": false
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/elevenlabs/voice-changer" \
  -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=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 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) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
audiostringYes--URL of the audio file to transform
voice_idstringNoAliceAlice, Aria, Bill, Brian, Callum, Charlie, Charlotte, Chris, Daniel, Eric, George, Jessica, Laura, Liam, Lily, Matilda, River, Roger, Sarah, WillVoice to apply to the audio
remove_background_noisebooleanNofalse-Remove background noise from the audio

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<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.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.