Eleven v3 = latest flagship TTS / dialogue model. Not for real-time/agents; use for high‑quality, emotional, multi‑speaker audio.
🧠 Model overview
- Eleven v3: most expressive, emotional, context‑aware TTS/dialogue
- Best for: complex characters, audiobooks, emotional dialogue, narrative UX
- Not ideal for: ultra‑low‑latency / interactive agents (use Flash v2.5 / Turbo v2.5)
🧪 Flagship TTS models (for context)
| Model | ID | Quality / Emotion | Latency / Use case | Char limit | Langs |
|---|---|---|---|---|---|
| Eleven v3 (α) | eleven_v3 | ⭐ Highest, dramatic, rich | ❌ Not realtime; batch, long‑form, dialogue | 3,000 | 70+ |
| Multilingual v2 | eleven_multilingual_v2 | Very high, stable | Long‑form narration, stable output | 10,000 | 29 |
| Flash v2.5 | eleven_flash_v2_5 | Good, less nuanced | ⚡ Ultra‑low latency (~75 ms), cheap | 40,000 | 32 |
| Turbo v2.5 | eleven_turbo_v2_5 | High | 🎯 Balance of speed/quality (~250–300 ms) | 40,000 | 32 |
🌍 Eleven v3 languages (high level)
- 70+ languages: includes
eng, deu, fra, spa, ita, jpn, kor, cmn, rus, por, ara, hin, ... - See docs for full list (Afrikaans → Welsh, including most major European + Asian langs).
🔐 Auth & SDK basics
Env var (recommended):
ELEVENLABS_API_KEY="<your_api_key_here>"Python:
pip install elevenlabs python-dotenvTypeScript/Node:
npm install @elevenlabs/elevenlabs-js dotenv🗣️ Core task: create speech with Eleven v3 (REST)
Endpoint
POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id}- Or the newer global TTS convert endpoint (see “Create speech” in API docs) with
model_id: "eleven_v3".
Headers
xi-api-key: $ELEVENLABS_API_KEYContent-Type: application/jsonAccept: audio/mpeg(or any supported audio output)
Minimal JSON body (Eleven v3)
{
"text": "Your line of dialogue goes here.",
"model_id": "eleven_v3",
"voice_settings": {
"stability": 0.5,
"similarity_boost": 0.75
}
}🐍 Python SDK – Eleven v3 TTS
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs
from elevenlabs.play import play
import os
load_dotenv()
client = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
audio = client.text_to_speech.convert(
text="The first move is what sets everything in motion.",
voice_id="JBFqnCBsd6RMkjVDRZzb", # any compatible voice
model_id="eleven_v3", # ⬅️ key part
output_format="mp3_44100_128",
)
play(audio)🟦 TypeScript SDK – Eleven v3 TTS
import { ElevenLabsClient, play } from "@elevenlabs/elevenlabs-js"
import { Readable } from "stream"
import "dotenv/config"
const elevenlabs = new ElevenLabsClient()
const audio = await elevenlabs.textToSpeech.convert("JBFqnCBsd6RMkjVDRZzb", {
text: "The first move is what sets everything in motion.",
modelId: "eleven_v3", // ⬅️ key part
outputFormat: "mp3_44100_128",
})
const reader = audio.getReader()
const stream = new Readable({
async read() {
const { done, value } = await reader.read()
if (done) this.push(null)
else this.push(value)
},
})
await play(stream)🔊 Streaming & realtime options (v3 context)
- Eleven v3
- Not designed for agents / realtime.
- Use normal convert endpoints; run multiple generations and let user pick.
- Realtime / low latency
- Prefer Flash v2.5 or Turbo v2.5 with:
- HTTP streaming endpoints (
convert-as-stream,stream speechin API ref), or - WebSocket TTS (
/docs/api-reference/websocket/ “Generate audio in real time” guide).
- HTTP streaming endpoints (
- Prefer Flash v2.5 or Turbo v2.5 with:
Typical realtime flow (Flash/Turbo, not v3):
- Create WebSocket connection with auth token.
- Send config frame (model, voice, format, latency settings).
- Stream partial text; receive audio chunks; play/buffer.
🎭 Text to Dialogue with Eleven v3
- Eleven v3 powers the Text to Dialogue capability (multi‑speaker conversations).
- Use cases
- Complex character scenes, podcasts, story games, conversational cut‑scenes.
- API
- See “Create dialogue” / “Stream dialogue” endpoints in API ref.
- Use
model_id: "eleven_v3"and provide:- Rich input text with multiple speakers.
- Optional tags for emotions, sound effects, pauses.
Prompt structure (conceptual):
[SFX: soft rain in the background]
Alice (thoughtful): I never expected the city to sound this quiet.
Bob (light, joking): That is because you turned off your notifications for once.🧬 Voices for Eleven v3
List available voices:
GET https://api.elevenlabs.io/v1/voices
Design / generate voices from text prompt:
POST https://api.elevenlabs.io/v1/text-to-voice/create-previews- Send descriptive text (age, tone, accent, style) and review returned previews.
Tips
- Use consistent voice IDs across all v3 generations for a character.
- For large projects (audiobooks, games), maintain a simple voice registry mapping.
🧾 Prompting Eleven v3 – key tips
- Write clean, well‑punctuated text.
- Use stage directions and inline tags sparingly, but clearly:
- Emotions: “[angry]”, “[whispering]”, “[excited]”.
- Scene cues: “[crowded cafe background]”, “[inside a car, engine humming]”.
- Prefer shorter segments (1–3 paragraphs) per request for control.
- For long scripts:
- Chunk text logically by scene.
- Keep speaker naming consistent.
- Consider a small normalization/pre‑processing step in your app.
🚦 When not to use Eleven v3
- Tight latency budgets (voice agents, live calls, games with fast turn‑taking).
- Very long single requests (respect 3k character limit; chunk instead).
Pick instead:
- Flash v2.5 → max speed and cost efficiency.
- Turbo v2.5 → good quality + low latency.
- Multilingual v2 → stable long‑form narration across many langs.
✅ Quick checklist for integrating Eleven v3
- API key in env + SDK installed.
- Decide primary model:
- Dialogue/characters ⇒
eleven_v3. - Long‑form narration ⇒ often
eleven_multilingual_v2.
- Dialogue/characters ⇒
- Choose voices and create/curate a small voice library.
- Implement a wrapper in your app:
speakWithV3(text, voiceId, options)→ handles chunking + retries.
- Add prompt templates per use‑case (narration, dialogues, trailers, etc.).
- Log parameters + prompts for successful generations for future reuse.