FL VoxCPM V2 TTS
Design a voice from a sentence, clone one from a clip — one node, five modes
- reference_audio
- prompt_audio
- Generated Audio
This is the flagship node of the filliptm/ComfyUI-FL-VoxCPM pack, and it's the version worth getting excited about. It runs OpenBMB's VoxCPM2 - 2B parameters, 48kHz "studio" audio, 30 languages - and wraps the whole thing in five modes that range from "read this aloud in a made-up voice" to "recreate this specific person from two audio clips." No API keys, no account; the model downloads to your machine on first run.
The headline feature that the V1 node can't do: Voice Design. You type a sentence describing a voice - "young woman, warm and gentle voice" - into the control box, type what you want said into text, and queue. No reference audio at all. That's the mode the author quietly hides in the example workflow; it's genuinely novel and it works.
The five modes
The mode dropdown decides which inputs you must wire:
- Text to Speech - just
text. The plain V2 voice, no inputs required. - Voice Design -
text+control. A voice invented from a description. The node rejects audio inputs here, so unplug them. - Voice Cloning -
text+reference_audio. Clone from a short clip. - Controllable Cloning -
text+reference_audio+control. Clone the voice, then steer its style/emotion with the description. This is the mode people actually reach for once they try it. - Ultimate Cloning - everything:
reference_audio+reference_text+prompt_audio+prompt_text. Maximum fidelity by giving the model the identity clip and a continuation clip with transcripts. It's the most demanding setup and the most faithful result.
Mechanically, modes that use control just prepend it to the text - the model sees (description)target text - and the audio inputs get written to temp WAV files that V2 consumes by path, then cleaned up. The same retry guard from the V1 node is here: retry_max_attempts/retry_threshold re-roll babbled output.
Inputs that matter
- mode - pick your job first; it decides the rest.
- control - the voice description. The secret ingredient.
- reference_audio / reference_text / prompt_audio / prompt_text - the cloning plumbing. Reference audio is required for any cloning mode;
prompt_text/reference_textare exact transcripts, so pair this node with FL VoxCPM Transcribe. - cfg_value (2.0) and inference_timesteps (10) - same diffusion dials as V1. Lower cfg = more natural, higher = more faithful to the reference.
- lora_name - loads a trained VoxCPM LoRA from
models/loras/VoxCPM/to push a voice further.
Output is Generated Audio (AUDIO), and the node is an output node, so it previews/saves on its own and also feeds downstream audio nodes.
Installation and hardware
Same pack as the rest - Manager → "FL VoxCPM", or the clone + pip install -r requirements.txt routine. The catch with V2 is that it's a 2B model: roughly 10GB VRAM for inference, ~20GB for training, 16GB RAM minimum. If you're on a 12GB card it fits; on less, you're on the V1 node. First run downloads the weights to ComfyUI/models/tts/VoxCPM/, so the console is your friend.
Common issues
- "V1 model - use the V1 node" - you picked a V1 model in
model_name; this node guards against it. - Voice Design says it rejects audio - you left a
reference_audioconnected from a previous mode. Unplug it. - Cloning is off - check your
reference_text/prompt_textare accurate. Wrong transcripts are the number one cloning killer, and the pack's Transcribe node exists precisely to fix that. - Speed complaints - V2 is heavier than V1; if latency is the bottleneck and fidelity isn't, drop to the V1 node.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | VoxCPM2 | Select a VoxCPM V2 model. |
| lora_name | COMBO | None | Select a LoRA from loras/VoxCPM/. |
| mode | COMBO | Voice Design | Generation mode. |
| text | STRING | Hello, this is a test of VoxCPM V2. | Text to synthesize. |
| cfg_value | FLOAT | 2.01–10 | Guidance scale. |
| inference_timesteps | INT | 101–100 | Number of diffusion steps. |
| min_tokens | INT | 21–100 | Minimum audio token length. |
| max_tokens | INT | 204864–8192 | Maximum audio token length. |
| normalize_text | BOOLEAN | true | Enable text normalization. |
| seed | INT | -1-1–18446744073709550000 | Seed for reproducibility. -1 for random. |
| force_offload | BOOLEAN | false | Force VRAM offload after generation. |
| device | COMBO | cpu | Inference device. |
| retry_max_attempts | INT | 30–10 | Max retry attempts for bad output. |
| retry_threshold | FLOAT | 6.02–20 | Audio/text ratio threshold for retry. |
| controlopt | STRING | Voice design instructions, e.g. 'young woman, gentle and sweet voice'. Used in Voice Design and Controllable Cloning modes. | |
| reference_audioopt | AUDIO | V2 voice identity reference audio. Used in Voice Cloning, Controllable Cloning, and Ultimate Cloning. | |
| reference_textopt | STRING | Transcript of reference audio. Used in Ultimate Cloning mode. | |
| prompt_audioopt | AUDIO | Continuation audio. Used in Ultimate Cloning mode. | |
| prompt_textopt | STRING | Transcript of prompt audio. Used in Ultimate Cloning mode. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Generated Audio | AUDIO | — |