FL Chatterbox VC
Make an existing recording sound like someone else
- input_audio
- target_voice
- audio
- message
All the other nodes in this pack synthesize speech from text. This one takes speech that already exists and re-voices it. FL Chatterbox VC is voice conversion: you feed it an audio clip of someone talking and a target voice, and it re-renders the content in the target's voice - same words, same pacing, same delivery, different person. It's the trick the TTS nodes can't do: turn a recording you already have into a different speaker without re-typing a word.
Where does that actually matter? You've recorded a voice-over, but the client decided they want it in a different voice - no re-recording. Or you've generated a TTS line with the default voice and wish you'd cloned your reference instead - pipe the generated audio through VC with your target voice and you're done. Or you're localizing: generate the narration once, then re-voice it per character. The mechanism is the same Chatterbox conditioning the rest of the pack uses, but aimed at transforming rather than generating.
How it works. Chatterbox's voice encoder extracts a speaker embedding from your target_voice clip, and the model re-synthesizes the input_audio conditioned on that embedding - essentially the same three-stage stack (tokenizer + text-to-token transformer + S3Gen vocoder) operating on existing speech instead of fresh text. This is also the lightest node of the five: the VC model only needs s3gen.pt and conds.pt from the ResembleAI/chatterbox HuggingFace repo, which download into ComfyUI/models/chatterbox/chatterbox_vc/ on first run. No exaggeration, no CFG, no language list - the only knobs are the seed and the device toggles.
Inputs and outputs. Bare-bones, which is refreshing:
input_audio(requiredAUDIO) - the recording you want converted.target_voice(requiredAUDIO) - the voice to sound like.seed- reproducibility.use_cpu/keep_model_loaded- the usual toggles.
Outputs: audio (AUDIO) with the converted speech, plus the pack-standard message status string. Give target_voice a clean, reasonably long clip - the code paths don't enforce a hard minimum here the way the TTS nodes do, but a 5–6+ second, noise-free reference gives the encoder far more to work with.
Install. ComfyUI Manager and search "FL ChatterBox", or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-ChatterBox
cd ComfyUI_Fill-ChatterBox
pip install -r requirements.txt
Same shared requirements as the rest of the pack (librosa, transformers, diffusers, s3tokenizer, soundfile, …). The optional resemble-perth watermarking is commented out of requirements.txt because it breaks on Python 3.12+ - leave it out.
Gotchas. Voice conversion quality tracks reference quality, so garbage in, garbage out. The 40-second-per-generation cap applies to the input clip too - chunk long recordings. And a fair warning: converting a voice you don't own is exactly the kind of thing that gets people in trouble, so only re-voice material you have the rights to. Technically it's the easiest node in the pack to get running - the real question is what you do with it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| input_audio | AUDIO | — | |
| target_voice | AUDIO | — | |
| seed | INT | 00–4294967295 | — |
| use_cpuopt | BOOLEAN | false | — |
| keep_model_loadedopt | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| message | STRING | — |