⚙️ ChatterBox TTS Engine
The expressive voice-clone default
- TTS_engine
ChatterBox is the engine this whole suite grew out of, and it's still the one most people reach for first. It's ResembleAI's open 0.5B voice-cloning model - the release that landed with 400+ upvotes on r/StableDiffusion and kicked off a small ecosystem of forks. It clones a voice from a short reference clip and, unusually, gives you an actual expressiveness dial. This node is where you configure it. It doesn't generate anything by itself; it outputs a TTS_ENGINE that you feed into 🎤 TTS Text or 📺 TTS SRT.
Reach for ChatterBox when you want a good English (or one of ~11 community-finetuned languages) voice clone with some emotional range and you don't want to babysit a 9GB model. It's fast, it's expressive, and it's the sensible default before you go chasing the fancier engines.
How it works
Under the hood ChatterBox is a small autoregressive TTS with a separate conditioning path for the reference voice, which is why cloning works from just a few seconds of audio. The reference itself doesn't live on this node - you supply that on the TTS Text side via narrator_voice or a 🎭 Character Voices node. What lives here are the generation settings that shape how it speaks.
The language dropdown picks the model. English is the original ResembleAI weights; the rest (German in three flavors, Italian, French, Russian, Armenian, Georgian, Japanese, Korean, Norwegian) are community finetunes that auto-download on first use, roughly 1GB each.
The inputs and outputs that matter
There are only a handful of widgets and most of them you'll leave alone. The three that actually change the output:
- exaggeration (0.25–2, default 0.5) - ChatterBox's signature control and the reason to pick it over blander engines. It's an emotional-intensity slider. 0.5 is neutral-natural; push it up for drama, but past ~1.0 it starts to distort and rush. This is the knob to play with first.
- cfg_weight (0–1, default 0.5) - how hard it adheres to the reference/conditioning. Higher tracks the voice more tightly but can sound stiff; ResembleAI's own advice is to lower cfg_weight when you raise exaggeration, since high exaggeration already speeds delivery up.
- temperature (0.05–5, default 0.8) - randomness. Leave it near 0.8. High values get you variety and also weird artifacts.
crash_protection_template (default hmm ,, {seg} hmm ,,) is a genuinely useful oddity: ChatterBox can hard-crash on very short segments, so the suite pads each segment with filler around your text ({seg}) to keep it stable. Leave it unless you know why you're changing it. device stays on auto.
The single output is TTS_engine - that's the whole point of the node. Wire it into the TTS_engine input of TTS Text or TTS SRT and do the actual talking there.
Installing it
It ships with TTS Audio Suite. Fastest route: ComfyUI Manager → search TTS Audio Suite → install → restart. Manager runs the pack's install.py, which handles the dependency knots (NumPy, librosa, the perpetually annoying s3tokenizer) and Python 3.13 quirks. Prefer the terminal? cd ComfyUI/custom_nodes && git clone https://github.com/diodiogod/TTS-Audio-Suite.git, then python install.py from inside the folder with your ComfyUI environment active - running install.py matters, a bare pip install -r requirements.txt skips the conflict handling. On Linux install portaudio19-dev libsamplerate0-dev first. The ChatterBox English model (~4.3GB with its stack) downloads itself on first generation into ComfyUI/models/TTS/chatterbox/.
Common issues
- Abbreviations and acronyms come out mangled. This is a known ChatterBox quirk - "AI" gets read as "eye," initialisms get slurred. Spell them phonetically in the text ("A.I." often won't save you; "ay eye" might) or edit them afterward.
- Artifacts and stray noise between phrases. ChatterBox is famous for the occasional glitch or repeated syllable; it's why the community built denoising forks. Keep temperature moderate, don't over-exaggerate, and if it persists, the pack's 🤐 Voice Fixer or a noise-removal pass cleans a lot of it up.
- Crashes on tiny segments. That's what
crash_protection_templateis for - if you stripped it out, put it back. - Reference voice ignored? Remember the clone comes from the TTS Text node, not here. This node only carries settings; if there's no
narrator_voiceor Character Voices feed, you'll get a generic voice.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| language | COMBO | English | ChatterBox language model to use for text-to-speech generation. Local models are preferred over remote downloads. |
| device | COMBO | auto | Device to run ChatterBox model on: • auto: Automatically select best available (MPS on Apple Silicon, CUDA on NVIDIA, XPU on Intel, CPU fallback) • cuda: NVIDIA GPU (requires CUDA-capable GPU) • xpu: Intel GPU (requires Intel PyTorch XPU) • cpu: CPU-only processing (slower) • mps: Apple Metal Performance Shaders (Apple Silicon Macs only) |
| exaggeration | FLOAT | 0.500.25–2 | Speech exaggeration level for ChatterBox. Higher values create more dramatic and expressive speech. |
| temperature | FLOAT | 0.800.05–5 | Controls randomness in ChatterBox generation. Higher values = more creative/varied speech, lower values = more consistent speech. |
| cfg_weight | FLOAT | 0.500–1 | Classifier-Free Guidance weight for ChatterBox. Controls how strongly the model follows the text prompt. |
| crash_protection_template | STRING | hmm ,, {seg} hmm ,, | Custom padding template for short text segments to prevent ChatterBox crashes. ChatterBox has a bug where text shorter than ~21 characters causes CUDA tensor errors. Use {seg} as placeholder for the original text. Examples: '...ummmmm {seg}' (default hesitation), '{seg}... yes... {seg}' (repetition), 'Well, {seg}' (natural prefix), or empty string to disable padding. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| TTS_engine | TTS_ENGINE | — |