ComfyUI Node

Voice Clone

Make any voice say anything, locally, with no API key

By Sean-Bradley·Created 11 months ago·Updated 7 months ago· 9
Voice Clone
  • voice_embedding
  • AUDIO
textHello, and welcome to my course teaching how to generate images, video and audio using Comfy U-I. This is amazing stuff, so lets get started.
seed0
exaggeration0.40
temperature0.80
cfg_weight0.70
min_p0.05
top_p0.95
repetition_penalty1.2
disable_watermarkfalse

Voice Clone is the node that finally makes TTS feel like part of the image/video workflow instead of a separate tool you tab out to. You type text, optionally feed it a few seconds of someone talking, and it synthesizes speech that actually sounds like that someone. The whole thing runs on your GPU - no ElevenLabs subscription, no API key, no "credit exhausted" emails at 2am.

It's built on Resemble AI's Chatterbox, a zero-shot TTS model, wrapped into a single ComfyUI node by Sean Bradley (the same Sean Bradley behind the ComfyUI Virtual Webcam and a pile of other nodes, and yes, the node's default text is a plug for his course - change it). Chatterbox has a solid reputation in the community as one of the better open voice-cloning models, and it's the go-to fix when people complain about tinny generated voices in video workflows - the KB's LTX-2 notes specifically point to Chatterbox TTS as the voice-cloning workaround on top of LTX audio.

What it does

You give it text, it gives you an AUDIO waveform of that text being spoken. The voice comes from the optional voice_embedding input: drop any audio clip into it and the model embeds that speaker's timbre, then regenerates your text in that voice. Leave it empty and you get the model's default voice. That's the whole loop - text in, someone's voice, audio out.

The inputs that matter

Most of the fields are sampler knobs you'll tweak once and forget. The ones a beginner actually touches:

  • text - what gets spoken. Multiline, so paragraphs are fine.
  • voice_embedding - your cloning reference. A few seconds of clean, single-speaker audio works better than a noisy clip.
  • exaggeration - prosody. Crank toward 2.0 for dramatic reading, drop to 0.25 for flat, dry narration. Default 0.4 is already fairly neutral.
  • disable_watermark - set to true if you want the output unwatermarked (more on that below).

Behind the scenes there's also seed, temperature, cfg_weight (how hard it sticks to the text), min_p, top_p, and repetition_penalty. Defaults are sane; only dig in if you're getting robotic delivery or loops.

Output is a 24 kHz AUDIO tensor, so it wires straight into anything ComfyUI that eats audio - a save node, a video muxer, or the Detect Watermark node that ships in this same pack.

How it works

Chatterbox is a multi-stage model: a voice encoder builds a speaker embedding from your reference, a text encoder conditions on your prompt, and a decoder generates the waveform. The node handles all the plumbing - writing your voice_embedding to a temp wav, seeding every RNG in sight, loading the model. By default the output is watermarked with PerTh, an invisible watermark; disable_watermark swaps in a no-op watermarker.

Install

Two routes, same result:

  • ComfyUI Manager: search "ComfyUI Voice Clone" and install.
  • Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Sean-Bradley/ComfyUI-Voice-Clone.git

then pip install -r ComfyUI/custom_nodes/ComfyUI-Voice-Clone/requirements.txt (on Windows portable, that's python_embeded\python -m pip install ...), and restart ComfyUI.

The step people skip is the models. It needs five files - conds.pt, s3gen.safetensors, t3_cfg.safetensors, tokenizer.json, ve.safetensors - dropped into ComfyUI/models/tts/chatterbox/ from Sean-Bradley's HF repo. The node hard-codes that path relative to wherever you launch ComfyUI, so keep the standard folder layout or it silently can't find them.

Gotchas

  • It reloads the whole model on every run. There's no caching in the node, so first generation (and each one after) pays a load cost. On a GPU it's tolerable; on CPU, brew coffee.
  • Dependency pileup. The requirements pull in diffusers, librosa, omegaconf, conformer - the classic ComfyUI dependency-hell situation. If another node breaks after installing, it's probably a version clash.
  • The device is auto-detected (CUDA → MPS → CPU), so Mac users get MPS for free, just slower.
  • Watermark is on by default. If you're hearing artifacts in the output, try disable_watermark and see if that was it.
CategorySBCODE

Inputs (10)

NameTypeDefaultDescription
textSTRINGHello, and welcome to my course teaching how to generate images, video and audio using Comfy U-I. This is amazing stuff, so lets get started.
seedINT0
exaggerationFLOAT0.400.25–2
temperatureFLOAT0.800.15–2
cfg_weightFLOAT0.700.05–1
min_pFLOAT0.050–1
top_pFLOAT0.950–1
repetition_penaltyFLOAT1.21–2
disable_watermarkBOOLEANfalse
voice_embeddingoptAUDIO

Outputs (1)

NameTypeDescription
AUDIOAUDIO