Migrating Voice Cloning from ElevenLabs to Sarvam
Last updated: September 7, 2026
This guide covers moving cloned voices from ElevenLabs Instant Voice Cloning (IVC) to Sarvam’s Voice Cloning API. For plain text-to-speech with stock voices, start from Migrating Text-to-Speech; the base URL and auth changes below are the same.
In short: re-create each cloned voice once with POST /voices/create (one clean 10-15 second clip in, a svc-{uuid} voice ID out), then swap your synthesis call to POST /voices/clone with that voice_id. ElevenLabs returns raw audio bytes; Sarvam returns JSON with base64 audio you decode. Voice settings like stability and similarity_boost have no dial here - fidelity comes from the clip and built-in quality control.
Quick start
Concept mapping
Step 1: Pick one clean reference clip
ElevenLabs IVC accepts a list of samples and improves with more; Sarvam’s POST /voices/create takes exactly one file per voice. Pick your single cleanest clip:
- 10-15 seconds of continuous speech from the target speaker
- Under 50 MB and 5-60 seconds (hard caps for
POST /voices/create; theref_audiolimits for one-shot cloning viaPOST /voices/cloneare stricter - 10 MB and 30 seconds) - Minimal background noise - there is no server-side cleanup step, so what you upload is what the clone learns from
See Prepare Reference Audio for what makes a good clip.
Step 2: Create the voice once
Before (ElevenLabs)
After (Sarvam)
language is required and must be a BCP-47 code from the supported languages list. The response’s auto-generated transcript is stored with the voice and reused on every synthesis call, which is why ref_text is optional when generating.
SDK equivalents: client.voices.ivc.create(...) on ElevenLabs, client.voiceCloning.createVoice(...) on Sarvam’s sarvamai SDK (Python and TypeScript).
Step 3: Generate speech with the saved voice
Before (ElevenLabs)
After (Sarvam)
Two response-handling changes: Sarvam returns JSON, so decode response.audio from base64, and language_code is required on every synthesis call. Sample rates above 24000 Hz are neural-upsampled; see Choose Audio Formats.
SDK equivalent: client.voiceCloning.textToSpeech({ voiceId, text, language_code }) on Sarvam’s sarvamai SDK.
What Sarvam gives you that ElevenLabs doesn’t
- One-shot cloning.
POST /voices/cloneacceptsref_audiodirectly - clone and synthesize in a single stateless call with nothing stored, handy for per-user or ephemeral voices. - Built-in quality control.
enable_qc(on by default) transcribes the generation back with ASR, scores the character error rate against your text, and retries failing generations before returning anything. - Cross-lingual cloning in one call. Clone a voice once and synthesize across the supported languages by changing
language_code- see Clone Across Languages. - Explicit language targeting. Every request carries a required
language_codeacross 13 Indian languages, so pronunciation and prosody are correct by design rather than auto-detected. - Duration control.
max_audio_durationtargets a fixed output length (use it orpace, not both - sending both returns a 400).
What ElevenLabs has that Sarvam doesn’t
- Professional Voice Cloning - a fine-tuned model tier trained on longer recordings; Sarvam cloning is instant-clip based.
- Multiple samples per clone - Sarvam learns from one clip, so sample selection matters more.
remove_background_noise- clean your clip before uploading.- Voice sharing and library categories.
- Streaming for cloned voices - Voice Cloning is synchronous REST only; for streaming, use stock-voice Text-to-Speech.
Errors and retries
Retry 429, 500, 502, 503, and 504 with exponential backoff. Do not retry 400, 401, 402, 403, 404, or 422 - those indicate problems with the request, auth, or subscription that retrying will not fix. Log the request_id from any failed response; see the FAQ.
Pricing and limits
Synthesis is billed per character of text against the Voice Cloning API; creating, listing, and deleting voices is not billed per character. See Pricing for the current rate. Rate limits for POST /voices/clone are Starter 10 / Pro 50 / Business 500 req/min - see Credits & Rate Limits.