Skip to main content
resemble-ai avatar

Chatterbox Multilingual TTS API

resemble-ai/chatterbox/text-to-speech/multilingual

Turn text into natural speech across 23 languages with a language selector and emotion-intensity control.

0.000375 per second of output video

Model Input

Input

The text to synthesize into speech (maximum 300 characters). Supports 23 languages including English, French, German, Spanish, Italian, Portuguese, Hindi, Arabic, Chinese, Japanese, Korean, and more.

Language for speech synthesis. Select the language that matches your text so pronunciation and prosody are correct.

Additional Settings

Customize your input with more control.

Min: 0.25 - Max: 2

Controls speech expressiveness and emotional intensity (0.25-2.0). 0.5 is neutral, higher values increase expressiveness. Extreme values may be unstable.

Min: 0.05 - Max: 5

Controls randomness and variation in generation (0.05-5.0). Higher values create more varied speech patterns.

Min: 0 - Max: 1

Configuration/pace weight controlling generation guidance (0.0-1.0). Use 0.0 for language transfer to mitigate accent inheritance.

Random seed for reproducible results. Set to 0 for random generation, or provide a specific number for consistent outputs.

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

Model Output

Output

Loading
Generated in 6.721 seconds
Logs (1 lines)

Model Example Requests

Examples

Chatterbox Multilingual TTS API

Chatterbox Multilingual TTS is a sound AI model by resemble-ai. On ModelRunner it runs through a REST API or via MCP from any AI assistant, at $0.000375 per second of video.

POST https://queue.modelrunner.run/resemble-ai/chatterbox/text-to-speech/multilingual

cURL

# Submit a request to the queue
curl -X POST https://queue.modelrunner.run/resemble-ai/chatterbox/text-to-speech/multilingual \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "text": "Bonjour et bienvenue. Découvrez la synthèse vocale multilingue, naturelle et expressive, en vingt-trois langues.",
      "voice": "french",
      "cfg_scale": 0.5,
      "temperature": 0.8,
      "exaggeration": 0.5
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

# Poll status_url until "COMPLETED", then fetch the result
curl "https://queue.modelrunner.run/resemble-ai/chatterbox/text-to-speech/multilingual/requests/$REQUEST_ID/status" \
  -H "Authorization: Key $MRUN_API_KEY"
curl "https://queue.modelrunner.run/resemble-ai/chatterbox/text-to-speech/multilingual/requests/$REQUEST_ID" \
  -H "Authorization: Key $MRUN_API_KEY"

JavaScript

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

const result = await modelrunner.subscribe("resemble-ai/chatterbox/text-to-speech/multilingual", {
  input: {
    "text": "Bonjour et bienvenue. Découvrez la synthèse vocale multilingue, naturelle et expressive, en vingt-trois langues.",
    "voice": "french",
    "cfg_scale": 0.5,
    "temperature": 0.8,
    "exaggeration": 0.5
  },
});
console.log(result);

Python

import os
import requests

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

submitted = requests.post(
    "https://queue.modelrunner.run/resemble-ai/chatterbox/text-to-speech/multilingual",
    headers=headers,
    json={"input": {
      "text": "Bonjour et bienvenue. Découvrez la synthèse vocale multilingue, naturelle et expressive, en vingt-trois langues.",
      "voice": "french",
      "cfg_scale": 0.5,
      "temperature": 0.8,
      "exaggeration": 0.5
    }},
).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 (maximum 300 characters). Supports 23 languages including English, French, German, Spanish, Italian, Portuguese, Hindi, Arabic, Chinese, Japanese, Korean, and more.
voiceenumnoLanguage for speech synthesis. Select the language that matches your text so pronunciation and prosody are correct. Default: "english".
exaggerationnumbernoControls speech expressiveness and emotional intensity (0.25-2.0). 0.5 is neutral, higher values increase expressiveness. Extreme values may be unstable. Default: 0.5.
temperaturenumbernoControls randomness and variation in generation (0.05-5.0). Higher values create more varied speech patterns. Default: 0.8.
cfg_scalenumbernoConfiguration/pace weight controlling generation guidance (0.0-1.0). Use 0.0 for language transfer to mitigate accent inheritance. Default: 0.5.
seedintegernoRandom seed for reproducible results. Set to 0 for random generation, or provide a specific number for consistent outputs.

Machine-readable: OpenAPI schema · llms.txt

Use Chatterbox Multilingual TTS from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Chatterbox Multilingual TTS 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 resemble-ai/chatterbox/text-to-speech/multilingual.

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 resemble-ai/chatterbox/text-to-speech/multilingual on ModelRunner to generate sound”. MCP setup guide.

Model Details

Model Details

Chatterbox Multilingual converts written text into natural, expressive spoken audio across 23 languages and returns a hosted WAV. Pick a language with the `voice` selector and it synthesizes your text in that language with correct pronunciation and prosody; supported languages include English, French, German, Spanish, Italian, Portuguese, Hindi, Arabic, Chinese, Japanese, Korean, and more. An `exaggeration` control dials emotional intensity up or down and a `temperature` control varies prosody, so reads can be flat and neutral or lively and expressive. Input is capped at 300 characters per call, making it a good fit for short lines, prompts, notifications, and clip-length narration rather than long-form documents.

## Best for - Generating spoken audio in a specific non-English language (French, Spanish, German, Portuguese, Italian, Hindi, Arabic, Chinese, Japanese, Korean, and more) - Short multilingual voice lines for apps, games, agents, and notifications - Localized voice-over for clips and social content where the language must match the script - Expressive reads where you want to control emotional intensity per language

## Choose another model when - You want zero-shot voice cloning from your own reference recording in English — use the English sibling `resemble-ai/chatterbox/text-to-speech`, which exposes a dedicated reference-audio input - You need to synthesize long passages in one call — this endpoint caps input at 300 characters, so split longer text or use a long-form TTS model - You want a large library of named, pre-built speaker voices rather than a language selector — use a catalog-voice TTS model - You need music, sound effects, or ambience rather than spoken words — use a music- or sound-generation model - You need to transcribe speech into text rather than generate it — use a speech-to-text model

## Tips - Set `voice` to the language of your `text` so pronunciation is correct; mismatched language and text degrades quality. - Keep each call within the 300-character limit; break longer scripts into sentence-sized chunks and stitch the audio. - Raise `exaggeration` for more dramatic, emotional delivery; keep it near the 0.5 default for calm, measured reads. - Punctuate your input the way you want it read — commas and periods drive pauses and intonation.

## Advanced Configuration - `temperature` (0.05-5.0, default 0.8): sampling temperature. Lower is steadier and more predictable; higher adds variation to prosody and delivery. - `cfg_scale` (0.0-1.0, default 0.5): guidance/pace weight. Higher values track the prompt more closely; set it to 0.0 for cleaner cross-language transfer to reduce accent inheritance. - `seed` (0 = random): set a fixed integer to make a generation reproducible.

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

const result = await modelrunner.subscribe("resemble-ai/chatterbox/text-to-speech/multilingual", { input: { text: "Bonjour et bienvenue sur ModelRunner. Cette voix a ete generee en francais.", voice: "french", exaggeration: 0.5, }, }); ```