FL CosyVoice3 Speaker Clone
The Speaker Clone Node
- model
- audio
This is the node you use once you've met the pack's Save Speaker node and decided you never want to dig up a reference audio file again. Speaker Clone synthesizes speech in a voice that's been saved as a preset - you pick the voice from a dropdown instead of feeding in audio. No waveform, no reference clip, no re-extraction. Type your text, choose your speaker, generate.
It's the zero-shot cloning node minus the "zero-shot" hassle. The regular Zero-Shot Clone needs a reference clip on every run; Speaker Clone pulls the pre-computed speaker features straight from a .pt file on disk. That makes it the node you'd wire into a repeatable pipeline - a character whose lines you generate over and over, a batch of scripts for the same narrator, or any workflow where the voice is fixed and only the text changes. Because the preset is just the saved features, using it is "exactly the same as using that speaker's reference audio for voice clone, same process, same result" - the README's words, and they're accurate.
How it works
On the input side, the node scans ComfyUI/models/cosyvoice/speaker/ for .pt files and exposes them as the speaker_preset dropdown (showing [none] when the directory is empty). At generation time it loads the chosen file, injects the speaker embeddings into the model's frontend, and calls inference_zero_shot via zero_shot_spk_id - the same synthesis path the audio-based clone uses, just fed from disk instead of a live clip. If the dropdown shows [none], it raises a clear error telling you to run Save Speaker first.
There are real guardrails here, and they're the ones that bite people. A preset saved under CosyVoice3 cannot be used with CosyVoice2 and vice versa - the dropdown doesn't know what model made each file, so a mismatch fails at inference. And official CosyVoice spk2info.pt presets (like the bundled ones in CosyVoice-300M-SFT) are not supported at all; the README points you to download the sample audios and re-save them as presets instead.
The inputs that matter
model- the COSYVOICE_MODEL output of the Model Loader, and it must match the model your preset was saved with.text- the line to speak in the preset's voice.speaker_preset- the dropdown of saved voices.speed- 0.5×–2.0×, default 1.0.seed(optional) - default 42,-1for random.text_frontend(optional) - text normalization, on by default; disable for CMU phonemes or special tags like<slow>.
The single output is audio, ready for preview or save.
Installing it
Part of the FL CosyVoice3 pack - install once, all nodes included. ComfyUI Manager: search "FL CosyVoice3", or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_FL-CosyVoice3.git
cd ComfyUI_FL-CosyVoice3
pip install -r requirements.txt
Restart ComfyUI. Expect a heavier-than-usual install (transformers, onnxruntime, openai-whisper) and a ~2GB model download into ComfyUI/models/cosyvoice/ on first load.
Common gotchas
[none]in the dropdown - no presets found. Run Save Speaker once on your reference audio, then restart (the dropdown scans on node creation).- Preset errors after switching models - model-version lock again. Re-save the preset with the model you're currently using.
- Missing the
text_frontendtoggle - leave it on unless you know you need phonemes; off is for special-tag territory. - The dropdown needs a refresh - presets you add while ComfyUI is running won't show up until the node re-creates.
Speaker Clone is the "production" version of voice cloning in this pack. Once your voices are saved, this is the node that makes generating in that voice as easy as picking a name.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COSYVOICE_MODEL | — | |
| text | STRING | Hello, this is my cloned voice speaking. | — |
| speaker_preset | COMBO | 1 options: [none] | |
| speed | FLOAT | 1.000.5–2 | — |
| seedopt | INT | 42-1–2147483647 | — |
| text_frontendopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |