Skip to main content
resemble-ai avatar

Chatterbox HD TTS API

resemble-ai/chatterboxhd/text-to-speech

Turn text into high-definition speech with nine named voices or a cloned voice, plus an optional 48kHz upscale toggle for higher-fidelity audio.

0.0006 per second of output video

Model Input

Input

The text to synthesize into speech.

The named voice to speak the text. If a reference clip is provided in audio_url it overrides this setting; if both are left unset a random voice is used.

Optional reference recording for zero-shot voice cloning. Provide a clean, single-speaker clip to clone that voice; it overrides the voice selection. Leave unset to use the named voice.

Additional Settings

Customize your input with more control.

Min: 0.25 - Max: 2

Emotion and intensity exaggeration. Higher values produce more dramatic, expressive delivery; lower values are calmer and more measured.

Min: 0 - Max: 1

Classifier-free guidance weight controlling the conditioning factor. For expressive or dramatic speech, try lower values (e.g. ~0.3) and increase exaggeration to around 0.7 or higher. If the reference speaker has a fast speaking style, lowering cfg to around 0.3 can improve pacing.

When true, the generated audio is upscaled to 48kHz for higher quality at the cost of longer generation time. When false, the audio is 24kHz.

Min: 0

Random seed for reproducibility. Set a fixed integer to repeat a generation; 0 uses a random seed.

Min: 0.05 - Max: 5

Sampling temperature controlling the randomness of generation. Lower is steadier and more predictable; higher adds variation to prosody and delivery.

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

Model Output

Output

Loading
Generated in 19.716 seconds
Logs (1 lines)

Model Example Requests

Examples

Chatterbox HD TTS API

Chatterbox HD 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.0006 per second of video.

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

cURL

# Submit a request to the queue
curl -X POST https://queue.modelrunner.run/resemble-ai/chatterboxhd/text-to-speech \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "cfg": 0.5,
      "seed": 0,
      "text": "Every great story deserves a voice that feels real. This narration was cloned from a single short reference clip.",
      "voice": "Aurora",
      "audio_url": "https://media.modelrunner.ai/bdEwW2y7tWSqSET7laHIL.wav",
      "temperature": 0.8,
      "exaggeration": 0.5,
      "high_quality_audio": false
    }
  }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

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

JavaScript

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

const result = await modelrunner.subscribe("resemble-ai/chatterboxhd/text-to-speech", {
  input: {
    "cfg": 0.5,
    "seed": 0,
    "text": "Every great story deserves a voice that feels real. This narration was cloned from a single short reference clip.",
    "voice": "Aurora",
    "audio_url": "https://media.modelrunner.ai/bdEwW2y7tWSqSET7laHIL.wav",
    "temperature": 0.8,
    "exaggeration": 0.5,
    "high_quality_audio": false
  },
});
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/chatterboxhd/text-to-speech",
    headers=headers,
    json={"input": {
      "cfg": 0.5,
      "seed": 0,
      "text": "Every great story deserves a voice that feels real. This narration was cloned from a single short reference clip.",
      "voice": "Aurora",
      "audio_url": "https://media.modelrunner.ai/bdEwW2y7tWSqSET7laHIL.wav",
      "temperature": 0.8,
      "exaggeration": 0.5,
      "high_quality_audio": false
    }},
).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 named voice to speak the text. If a reference clip is provided in audio_url it overrides this setting; if both are left unset a random voice is used. Default: "Aurora".
audio_urlstring (uri)noOptional reference recording for zero-shot voice cloning. Provide a clean, single-speaker clip to clone that voice; it overrides the voice selection. Leave unset to use the named voice.
exaggerationnumbernoEmotion and intensity exaggeration. Higher values produce more dramatic, expressive delivery; lower values are calmer and more measured. Default: 0.5.
cfgnumbernoClassifier-free guidance weight controlling the conditioning factor. For expressive or dramatic speech, try lower values (e.g. ~0.3) and increase exaggeration to around 0.7 or higher. If the reference speaker has a fast speaking style, lowering cfg to around 0.3 can improve pacing. Default: 0.5.
high_quality_audiobooleannoWhen true, the generated audio is upscaled to 48kHz for higher quality at the cost of longer generation time. When false, the audio is 24kHz. Default: false.
seedintegernoRandom seed for reproducibility. Set a fixed integer to repeat a generation; 0 uses a random seed. Default: 0.
temperaturenumbernoSampling temperature controlling the randomness of generation. Lower is steadier and more predictable; higher adds variation to prosody and delivery. Default: 0.8.

Machine-readable: OpenAPI schema · llms.txt

Use Chatterbox HD TTS from Claude & Cursor (MCP)

Point Claude Code, Claude Desktop, Cursor, or any MCP client at the ModelRunner MCP server and Chatterbox HD 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/chatterboxhd/text-to-speech.

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

Model Details

Model Details

Chatterbox HD converts written text into natural, expressive spoken audio and returns a hosted WAV. It ships nine ready-to-use named voices (`Aurora`, `Blade`, `Britney`, `Carl`, `Cliff`, `Richard`, `Rico`, `Siobhan`, `Vicky`), and it can also clone a voice zero-shot: supply a short reference recording via `audio_url` and it speaks your text in that voice with no training or enrollment step. Its distinguishing feature over the standard Chatterbox tier is fidelity — set `high_quality_audio` to `true` and the output is upscaled to 48kHz (slower to generate, higher quality) instead of the default 24kHz. `exaggeration` dials emotional intensity, making it a strong pick for character dialogue, narration in a chosen voice, and expressive reads where a flat, neutral TTS would fall short.

## Best for - High-fidelity voice-over and narration where 48kHz output quality matters - Picking a distinct, ready-made voice from the nine named options without cloning - Cloning a specific voice from a short reference clip for character dialogue or narration - Expressive, emotionally-shaded reads with adjustable intensity - Prototyping a custom voice quickly with no training or enrollment step

## Choose another model when - You need speech in a non-English language with a language selector — use the multilingual Chatterbox variant - You want to convert an existing recording into a different voice rather than synthesize from text — use a speech-to-speech voice changer - You want a music track with melody and instrumentation — use a music-generation model - You need to transcribe speech into text rather than generate it — use a speech-to-text model

## Tips - Choose a `voice` from the nine named options for a consistent, repeatable result; leaving both `voice` and `audio_url` unset picks a random voice, so set one for deterministic output. - To clone a voice, pass `audio_url` with a clean, single-speaker reference clip — it overrides `voice`. - Set `high_quality_audio: true` for a 48kHz upscale when fidelity matters and the extra latency is acceptable; keep it `false` (24kHz) for faster, cheaper reads. - Punctuate the input text the way you want it read — commas and periods drive pauses and intonation.

## Advanced Configuration - `exaggeration` (0.25–2.0, default 0.5): emotion and intensity exaggeration. Higher is more dramatic; lower is calmer and more measured. - `cfg` (0.0–1.0, default 0.5): classifier-free guidance weight. For expressive or dramatic speech, try lower values (~0.3) and raise `exaggeration` to ~0.7+. If the reference speaker talks fast, lowering `cfg` to ~0.3 can improve pacing. - `temperature` (0.05–5.0, default 0.8): sampling temperature. Lower is steadier and more predictable; higher adds variation to prosody and delivery. - `seed` (default 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/chatterboxhd/text-to-speech", { input: { text: "Welcome to ModelRunner. This is high-definition text to speech.", voice: "Aurora", high_quality_audio: true, }, }); ```