ComfyUI Node

TTS WebUI Chatterbox

The ElevenLabs-level clone, dials included

By rsxdalv·Created 10 months ago·Updated 10 months ago· 5
TTS WebUI Chatterbox
    • audio
    • wav_path
    • metadata_json
    textHello
    api_basehttp://127.0.0.1:7778
    api_key
    exaggeration0.50
    cfg_weight0.50
    temperature0.80
    audio_prompt_path
    model_namejust_a_placeholder
    language_iden
    devicecuda
    dtypefloat32
    cpu_offloadfalse
    chunkedfalse
    cache_voicefalse
    desired_length200
    max_length300
    halve_first_chunkfalse
    seed-1
    streamingfalse
    max_new_tokens1000
    max_cache_len1500
    initial_forward_pass_backendeager
    generate_token_backendcudagraphs-manual
    timeout_sec120
    channels_firsttrue
    also_save_wavfalse
    save_prefixtts
    return_metadatatrue

    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 and api_base doesn'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 chunked and check max_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.

    CategoryAudio/TTS

    Inputs (28)

    NameTypeDefaultDescription
    textSTRINGHello
    api_baseSTRINGhttp://127.0.0.1:7778
    api_keyoptSTRING
    exaggerationoptFLOAT0.500–2
    cfg_weightoptFLOAT0.500–2
    temperatureoptFLOAT0.800–2
    audio_prompt_pathoptSTRING
    model_nameoptSTRINGjust_a_placeholder
    language_idoptSTRINGen
    deviceoptSTRINGcuda
    dtypeoptSTRINGfloat32
    cpu_offloadoptBOOLEANfalse
    chunkedoptBOOLEANfalse
    cache_voiceoptBOOLEANfalse
    desired_lengthoptINT2001–4000
    max_lengthoptINT3001–4000
    halve_first_chunkoptBOOLEANfalse
    seedoptINT-1-1–2147483647
    streamingoptBOOLEANfalse
    max_new_tokensoptINT10001–4096
    max_cache_lenoptINT15001–8192
    initial_forward_pass_backendoptSTRINGeager
    generate_token_backendoptSTRINGcudagraphs-manual
    timeout_secoptINT1201–600
    channels_firstoptBOOLEANtrue
    also_save_wavoptBOOLEANfalse
    save_prefixoptSTRINGtts
    return_metadataoptBOOLEANtrue

    Outputs (3)

    NameTypeDescription
    audioAUDIO
    wav_pathSTRING
    metadata_jsonSTRING