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)

ModelIDQuality / EmotionLatency / Use caseChar limitLangs
Eleven v3 (α)eleven_v3⭐ Highest, dramatic, rich❌ Not realtime; batch, long‑form, dialogue3,00070+
Multilingual v2eleven_multilingual_v2Very high, stableLong‑form narration, stable output10,00029
Flash v2.5eleven_flash_v2_5Good, less nuanced⚡ Ultra‑low latency (~75 ms), cheap40,00032
Turbo v2.5eleven_turbo_v2_5High🎯 Balance of speed/quality (~250–300 ms)40,00032

🌍 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-dotenv

TypeScript/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_KEY
  • Content-Type: application/json
  • Accept: 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 speech in API ref), or
      • WebSocket TTS (/docs/api-reference/websocket / “Generate audio in real time” guide).

Typical realtime flow (Flash/Turbo, not v3):

  1. Create WebSocket connection with auth token.
  2. Send config frame (model, voice, format, latency settings).
  3. 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.
  • 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.