Chatterbox · Text to Speech
The open-weights TTS everyone clones voices with, no install
- reference_audio_url
- audio
- task id
Why you'd reach for it
Chatterbox is the model that dragged local text-to-speech up to ElevenLabs-adjacent quality: a 0.5B Llama-backbone TTS from Resemble AI, MIT-licensed, with zero-shot voice cloning from a few seconds of reference audio and an emotion dial that was unusual for an open model when it landed in May 2025. The catch is local installs - another venv, another set of weights, another CUDA-shaped afternoon.
This node runs the same model on SpicyAPI's servers for $0.036 per run. In practice it's the "I need a voice for this talking-head clip right now" node, and it's the top half of the canonical local pipeline the KB describes: TTS makes the audio, an audio-driven avatar makes the face move. Here you get the first half without the environment work.
How it works
You write the script, the node sends it to resemble-ai/chatterbox-v1/text-to-speech, and a 24 kHz mono WAV comes back as a ComfyUI AUDIO - the same {"waveform", "sample_rate"} dict any native audio node produces. Wire it to Save Audio, or straight into a Lip Sync or Talking Avatar node. Nothing runs on your GPU, and the pack ships no dependencies at all.
Inputs you actually touch
text - up to 1,000 characters of English, read exactly as written. The tooltip is blunt and worth believing: spell sounds out, because tags like [laugh] are read aloud rather than performed. If you need "hmm" or a sigh, write the letters.
exaggeration - 0.5 default, 0 flat to 1 dramatic. This is the knob people love about Chatterbox. Push it to 0.7–0.8 for character reads; leave it near 0.5 for narration, because high exaggeration also means less predictable pacing.
temperature - 0.05 to 2, default 0.7. Variation between takes. Raise it slightly if every read sounds identical and flat; drop it toward 0.4 if the delivery wanders off-script in an unusable way.
guidance_scale - 0.1 to 1, default 0.5. How closely the read follows the text's natural pacing. The default is right most of the time; nudging it up tightens the timing on long sentences.
reference_audio_url (optional, AUDIO) - a short clip of the voice to imitate, and the reading takes on its timbre. This is the zero-shot cloning path, and 5–10 seconds of clean speech is the sweet spot; noisy references drag the result down.
Outputs: audio (AUDIO) and task id (STRING). Note the output tooltip - several results can come back in one batch, and Save Audio writes one file each.
Install
Manager → search SpicyAPI, or:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart, then set your key in Settings > SpicyAPI (or export SPICY_API_KEY on a server) and restart once more so the node list is built from your account. Needs Python 3.10+ and a ComfyUI new enough to ship the V3 node API; the pack adds no pip dependencies, which is genuinely rare in the audio-node space.
Common issues
No SpicyAPI key is set- the key goes in Settings, not on the node, and it's never written into your workflow or PNG metadata, so sharing a graph is safe.- Truncated or refused text - you're over 1,000 characters, or you've pasted text in another language. Base Chatterbox is English-first; the multilingual v3 is a different (local) release.
- "It's charging me to re-run the same graph." It isn't: seeds start fixed, so a re-queue returns the first result. You only pay for a new seed or edited text.
- Cancelling doesn't refund. Cancel stops you waiting; if the job finishes on SpicyAPI's side it's charged and the result sits in your console for up to 14 days.
- Cloned voices and consent. Chatterbox is MIT with no content restrictions, which is exactly why the whisper of non-consensual cloning follows it around. Clone your own voice, or get permission.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Up to 1,000 characters of English, read exactly as written. Spell sounds out; tags are read aloud. | |
| exaggeration | FLOAT | 0.500–1 | How emotional the reading is, from 0 (flat) to 1 (dramatic). |
| temperature | FLOAT | 0.700.05–2 | Variation between takes, from 0.05 to 2. |
| guidance_scale | FLOAT | 0.500.1–1 | How closely the reading follows the text's natural pacing, from 0.1 to 1. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
| reference_audio_urlopt | AUDIO | Optional clip of the voice to imitate; the reading takes on its timbre. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | Several results come back as a batch; Save Audio writes one file each. |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |