Skip to main content
elevenlabs avatar

ElevenLabs Multilingual v2 API

elevenlabs/tts/multilingual-v2

Turn text into natural, expressive speech in 29 languages with ElevenLabs Multilingual v2 voices, with controls for stability, similarity, and style.

0.0015 per second of output video

Model Input

Input

The text to synthesize into speech.

The voice to speak with. The default is Rachel.

Additional Settings

Customize your input with more control.

Min: 0 - Max: 1

Voice stability. Lower is more variable and expressive; higher is steadier and more monotone.

Min: 0 - Max: 1

How closely the output matches the chosen voice's character.

Min: 0 - Max: 1

Style exaggeration. Higher values produce more expressive, exaggerated delivery.

Min: 0.7 - Max: 1.2

Speaking speed. 1 is normal; below 1 is slower, above 1 is faster.

Text that comes before this chunk, used as a continuity hint when synthesizing long content in pieces.

Text that comes after this chunk, used as a continuity hint when synthesizing long content in pieces.

ISO 639-1 language code (e.g. en, es, fr, de, ja) to enforce the synthesis language. Leave unset to let the model infer it.

Controls normalization of text such as numbers and abbreviations before synthesis. 'on' forces it, 'off' reads text exactly as written.

You need to be logged in to run this model and view results.
Log in

Model Output

Output

Loading
Generated in 2.813 seconds
Logs (1 lines)

Model Example Requests

Examples

ElevenLabs Multilingual v2 API

ElevenLabs Multilingual v2 is a sound AI model by elevenlabs. On ModelRunner it runs through a REST API or via MCP from any AI assistant, at $0.0015 per second of audio.

POST https://queue.modelrunner.run/elevenlabs/tts/multilingual-v2

cURL

# Submit a request to the queue. Input fields go at the top level of the
# body. The optional reserved "metadata" object holds your own flat string
# tags — stored on the request, never sent to the model; filter later with
# GET https://queue.modelrunner.run/requests?metadata=<url-encoded JSON>.
curl -X POST https://queue.modelrunner.run/elevenlabs/tts/multilingual-v2 \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Bonjour et bienvenue. Aujourd\u0027hui, nous explorons les capacités multilingues de ce modèle de synthèse vocale.",
    "speed": 1,
    "style": 0,
    "voice": "Charlotte",
    "stability": 0.5,
    "similarity_boost": 0.75,
    "apply_text_normalization": "auto",
    "metadata": {
      "project": "my-project"
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/elevenlabs/tts/multilingual-v2/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/elevenlabs/tts/multilingual-v2/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("elevenlabs/tts/multilingual-v2", {
  input: {
    "text": "Bonjour et bienvenue. Aujourd'hui, nous explorons les capacités multilingues de ce modèle de synthèse vocale.",
    "speed": 1,
    "style": 0,
    "voice": "Charlotte",
    "stability": 0.5,
    "similarity_boost": 0.75,
    "apply_text_normalization": "auto"
  },
});
console.log(result);

Python

import os
import requests

headers = {"Authorization": f"Key {os.environ['MRUN_API_KEY']}"}

submitted = requests.post(
    "https://queue.modelrunner.run/elevenlabs/tts/multilingual-v2",
    headers=headers,
    json={
      "text": "Bonjour et bienvenue. Aujourd'hui, nous explorons les capacités multilingues de ce modèle de synthèse vocale.",
      "speed": 1,
      "style": 0,
      "voice": "Charlotte",
      "stability": 0.5,
      "similarity_boost": 0.75,
      "apply_text_normalization": "auto"
    },
).json()

# Poll submitted["status_url"] until "COMPLETED", then:
result = requests.get(submitted["response_url"], headers=headers).json()

Input parameters

NameTypeRequiredDescription
textstringyesThe text to synthesize into speech.
voiceenumnoThe voice to speak with. The default is Rachel. Default: "Rachel".
stabilitynumbernoVoice stability. Lower is more variable and expressive; higher is steadier and more monotone. Default: 0.5.
similarity_boostnumbernoHow closely the output matches the chosen voice's character. Default: 0.75.
stylenumbernoStyle exaggeration. Higher values produce more expressive, exaggerated delivery. Default: 0.
speednumbernoSpeaking speed. 1 is normal; below 1 is slower, above 1 is faster. Default: 1.
previous_textstringnoText that comes before this chunk, used as a continuity hint when synthesizing long content in pieces.
next_textstringnoText that comes after this chunk, used as a continuity hint when synthesizing long content in pieces.
language_codestringnoISO 639-1 language code (e.g. en, es, fr, de, ja) to enforce the synthesis language. Leave unset to let the model infer it.
apply_text_normalizationenumnoControls normalization of text such as numbers and abbreviations before synthesis. 'on' forces it, 'off' reads text exactly as written. Default: "auto".

Machine-readable: OpenAPI schema · llms.txt

Use ElevenLabs Multilingual v2 from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and ElevenLabs Multilingual v2 becomes a tool your assistant can call directly — it authorizes via OAuth (no API key in config) and runs this model with the run_model tool using the endpoint elevenlabs/tts/multilingual-v2.

MCP client config (Claude Desktop, Cursor)

{
  "mcpServers": {
    "modelrunner": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.modelrunner.run/mcp"]
    }
  }
}

Claude Code

claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp

Then ask your assistant, for example: “Run elevenlabs/tts/multilingual-v2 on ModelRunner to generate sound”. MCP setup guide.

Model Details

Model Details

ElevenLabs Multilingual v2 converts written text into natural, expressive spoken audio and returns a hosted MP3. Pass the text you want spoken and pick a voice by name; the model handles intonation, pacing, and pronunciation, and exposes fine control over stability, similarity, and style. It supports 29 languages with strong accent accuracy and consistent voice identity, making it a strong default for narration, voiceover, audiobooks, IVR/phone prompts, and character dialogue.

## Best for - Narration and voiceover for videos, explainers, and ads - Audiobooks and long-form reading where consistent, clear delivery matters - IVR, phone trees, and automated announcements - Character dialogue and dramatized reads using style control - Multilingual content across 29 languages with accurate accents

## Choose another model when - You want a music track with melody and instrumentation — use a music-generation model - You want generic sound effects or ambience rather than spoken words — use a text-to-audio sound-effects model - You need real-time, ultra-low-latency streaming TTS in a live call — this returns a finished file, not a token stream - You need to transcribe speech into text rather than generate it — use a speech-to-text model

## Tips - Set `voice` to choose the speaker. The default is `Rachel`; other examples include `Aria`, `Roger`, `Sarah`, `Charlie`, `George`, `Callum`, `Charlotte`, `Alice`, `Matilda`, `Will`, `Jessica`, `Brian`, `Lily`, and `Bill`. - Punctuate the input text the way you want it read — commas and periods drive pauses and intonation. - Tune `stability` (0–1, default 0.5) for delivery consistency: lower is more variable and expressive, higher is steadier and more monotone. - Tune `similarity_boost` (0–1, default 0.75) to keep the output close to the chosen voice's character; raise `style` (0–1, default 0) for more expressive, exaggerated delivery.

## Advanced Configuration - `speed` (0.7–1.2, default 1): speaking rate; below 1 is slower, above 1 is faster. - `language_code` (default auto): an ISO 639-1 code (e.g. `en`, `es`, `fr`, `de`, `ja`) that enforces the synthesis language; leave unset to let the model infer it. The model errors if the code is unsupported. - `apply_text_normalization` (`auto`, `on`, `off`, default `auto`): controls normalization of text such as numbers and abbreviations before synthesis. Use `on` to force it, `off` to read text exactly as written. - `previous_text` / `next_text` (default unset): surrounding text from adjacent chunks, used as continuity hints to keep prosody consistent when synthesizing long content in pieces.

To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";

const result = await modelrunner.subscribe("elevenlabs/tts/multilingual-v2", { input: { text: "Welcome to ModelRunner. This is multilingual text to speech.", voice: "Rachel", stability: 0.5, similarity_boost: 0.75, }, }); ```