TTS WebUI Chatterbox
The ElevenLabs-level clone, dials included
- audio
- wav_path
- metadata_json
Resemble AI's Chatterbox 0.5B is the model that ended Kokoro's reign as the community's open-source TTS darling. The early verdict was genuinely giddy: "genuinely on ElevenLabs level if not better," great voice cloning, and the main complaint was that it's slower than F5-TTS - around 4–7 seconds per generation on a 4090 versus F5's sub-2. If you want the best-sounding open weights TTS you can run, this is the node you want, and it's also the one with the most knobs in the whole pack.
How it works
Like every node here, it's a thin client: it POSTs an OpenAI-style body to your TTS WebUI server at http://127.0.0.1:7778/v1/audio/speech with model: "chatterbox", and the server does the actual generation. Chatterbox is a decoder-based model, so there are real token-generation settings hiding in here - most of them are server-side, and you can ignore them until you need them.
The inputs that matter
- audio_prompt_path - the reference audio for voice cloning. This is where Chatterbox earns its reputation; give it a short clip of a voice and it'll match it well.
- exaggeration (0–2, default 0.5) and cfg_weight (0–2, default 0.5) - the two dials that control how emotive and how "prompt-locked" the output is. Crank exaggeration for drama, drop it for flat narration.
- temperature (default 0.8) - the usual randomness knob.
- language_id (default
en) - the language Chatterbox generates in. - seed - default -1 for random, or set it for reproducible takes.
The rest - chunked, desired_length/max_length, halve_first_chunk, streaming, max_new_tokens, max_cache_len, cache_voice, device, dtype, cpu_offload, and the two *_backend fields - are advanced generation settings that map onto Chatterbox's own inference knobs. You will almost certainly not touch most of them. chunked is the one worth knowing: it splits long text into chunks, which is what you want for longform narration so the model doesn't run out of context.
Outputs
audio (AUDIO) for a preview/save node, wav_path (STRING) when also_save_wav is on, metadata_json (STRING) with request details and WAV stats.
Installing it
ComfyUI Manager → search "TTS WebUI API nodes for ComfyUI", or:
cd ComfyUI/custom_nodes
git clone https://github.com/rsxdalv/ComfyUI-TTS-Webui
then restart. The pack only needs requests, numpy, torch - nothing to pip install, nothing to download here. Chatterbox's weights download into the TTS WebUI server on first load.
When it breaks
- Connection refused: the server isn't running on
127.0.0.1:7778, or it's on another machine andapi_basedoesn't point at it. - First call blows past the timeout: Chatterbox 0.5B is a real model - first load can take a while. Raise
timeout_sec(max 600). - Cloned voice sounds off: Chatterbox wants clean reference audio; a noisy or multi-speaker clip will clone badly regardless of settings.
- Long text gets cut or degrades: turn on
chunkedand checkmax_length.
Worth repeating: this node is the reason to run this pack at all for quality-first work. The trade-off is speed and VRAM - if you need quick iteration, Kokoro is the lighter option.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hello | — |
| api_base | STRING | http://127.0.0.1:7778 | — |
| api_keyopt | STRING | — | |
| exaggerationopt | FLOAT | 0.500–2 | — |
| cfg_weightopt | FLOAT | 0.500–2 | — |
| temperatureopt | FLOAT | 0.800–2 | — |
| audio_prompt_pathopt | STRING | — | |
| model_nameopt | STRING | just_a_placeholder | — |
| language_idopt | STRING | en | — |
| deviceopt | STRING | cuda | — |
| dtypeopt | STRING | float32 | — |
| cpu_offloadopt | BOOLEAN | false | — |
| chunkedopt | BOOLEAN | false | — |
| cache_voiceopt | BOOLEAN | false | — |
| desired_lengthopt | INT | 2001–4000 | — |
| max_lengthopt | INT | 3001–4000 | — |
| halve_first_chunkopt | BOOLEAN | false | — |
| seedopt | INT | -1-1–2147483647 | — |
| streamingopt | BOOLEAN | false | — |
| max_new_tokensopt | INT | 10001–4096 | — |
| max_cache_lenopt | INT | 15001–8192 | — |
| initial_forward_pass_backendopt | STRING | eager | — |
| generate_token_backendopt | STRING | cudagraphs-manual | — |
| timeout_secopt | INT | 1201–600 | — |
| channels_firstopt | BOOLEAN | true | — |
| also_save_wavopt | BOOLEAN | false | — |
| save_prefixopt | STRING | tts | — |
| return_metadataopt | BOOLEAN | true | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| wav_path | STRING | — |
| metadata_json | STRING | — |