VRGDG VoxCPM2 Voice Clone / TTS
Local Voice Cloning Inside ComfyUI, With a Modes Menu
- reference_audio
- prompt_audio
- audio
- saved_audio_path
- sample_rate
- status
VoxCPM is the open-weights speech model that's been quietly winning the "actually good local TTS" crowd, and VRGDG_VoxCPM2Generate wraps it for ComfyUI with a modes menu that covers everything from plain text-to-speech to serious voice cloning. It's part of the VRGameDevGirl pack, which means it's aimed at the music-video pipeline - clone a voice for your AI singer, generate narration, or just have a character say something new in an existing voice. No API key, no cloud, no per-character fee. It's all local.
The node loads the model with VoxCPM.from_pretrained(...) on first run, so your first generation is really a model download. Once it's cached, it's fast - the community's verdict on VoxCPM is "really fast, very accurate," and it handles far more than English.
The modes menu (this is the whole game)
- text_to_speech - plain TTS, no voice reference. The
textfield is what it says. - voice_design - zero-shot styled speech guided by your wording alone. No reference clip needed, you steer the character through your prompt text.
- prompt_continuation - continue speaking from a prompt clip; give it
prompt_audioplus the exactprompt_text. - controllable_clone - the easiest real voice clone. Feed a clean 10–30 second single-speaker reference clip and it talks in that voice.
- ultimate_clone - the strongest clone. Same idea, but you must also provide the exact transcript in
prompt_text; matching the words closely matters.
The inputs that matter
- text - what you want the model to say. For cloning modes this is the new target speech, not a transcript of the reference.
- reference_audio / reference_audio_path - your speaker reference. Clean, single speaker, 10–30 seconds is the sweet spot the tooltip asks for.
- prompt_text - required for
prompt_continuationandultimate_clone: the exact transcript of the prompt/reference clip. - cfg_value - CFG strength, default 2.0. Lower sounds looser, higher sounds more forced. 2.0 is a genuinely good start.
- inference_timesteps - default 10. Higher is slightly better, notably slower.
- max_len - if long text gets cut off, raise it. Costs VRAM and time.
- retry_badcase - on by default; auto-reruns obviously bad generations up to
retry_badcase_max_times(default 3). Slower but much more reliable.
Outputs: audio (the AUDIO tensor), saved_audio_path (a WAV written to ComfyUI/output/VRGDG_AudioFiles/, prefix from save_filename_prefix), sample_rate, and a status string.
Install
The pack install plus the VoxCPM dependency:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl
pip install -r requirements.txt # includes voxcpm, transformers, torchaudio
Or search vrgamedev in ComfyUI Manager. First run downloads the model - give it time. device defaults to auto (CUDA if available), and the tooltip is blunt: CUDA is strongly recommended. This is not a CPU-friendly node.
Common issues
- First run "hangs": model download. Watch the console.
- Cloned voice doesn't sound right: the reference clip is the weak link. Hiss, room tone, or a second speaker wreck cloning - the
load_denoiseroption exists precisely to clean up noisy source clips before cloning. - Bad generations that don't retry: check
retry_badcaseis on and the threshold (retry_badcase_ratio_threshold) is at its default - don't touch that one unless you're tuning. - Accent bleeding / language quirks: community reports say it's a strong multi-language model but can carry an accent from your reference. That's a feature when you want it, a bug when you don't - use a neutral, clean reference.
One honest note: VoxCPM2's own ecosystem is young, so expect occasional rough edges, and the model card should be your second read after this page. But for fully local, genuinely good voice cloning with no API in the loop, this is one of the better nodes you can drop into a ComfyUI graph today.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hello from VoxCPM2. | What you want the model to say. For cloning modes, this is the new target speech, not the transcript of your reference clip. |
| mode | COMBO | text_to_speech | Choose how VoxCPM2 should speak: - text_to_speech: regular TTS with no voice reference. - voice_design: zero-shot styled speech guided by your wording alone. - prompt_continuation: continue from a prompt clip using prompt_audio plus prompt_text. - controllable_clone: easiest voice clone. Provide a clean reference clip. - ultimate_clone: strongest cloning mode. Provide a reference clip and the exact transcript in prompt_text. |
| device | COMBO | auto | auto picks CUDA when available and falls back to CPU. CUDA is strongly recommended for VoxCPM2. |
| cfg_value | FLOAT | 2.00–20 | Classifier-free guidance strength. A good starting point is 2.0. Lower can sound looser; higher can sound more forced. |
| inference_timesteps | INT | 101–200 | Number of inference steps. 10 is a solid default. Higher may improve quality slightly but is slower. |
| load_denoiser | BOOLEAN | false | Optional cleanup for noisy prompt or reference audio before cloning. Useful if your source clip has hiss, room noise, or light background noise. |
| normalize_text | BOOLEAN | false | Normalize text before generation. Can help with number/date expansion and cleaner pronunciation on some inputs. |
| retry_badcase | BOOLEAN | true | Retry obviously bad generations automatically. This can improve reliability but may take longer. |
| retry_badcase_max_times | INT | 31–10 | Maximum retry attempts when retry_badcase is enabled. |
| retry_badcase_ratio_threshold | FLOAT | 6.01–20 | Bad-case threshold for retry logic. Leave this alone unless you are tuning generation behavior. |
| min_len | INT | 21–128 | Minimum generated audio token length. Usually safe to leave at the default. |
| max_len | INT | 409632–16384 | Maximum generated token length. Increase if long text is getting cut off. Higher values can use more VRAM and time. |
| save_filename_prefix | STRING | voxcpm2 | Base name for the saved WAV file in ComfyUI/output/VRGDG_AudioFiles. |
| reference_audioopt | AUDIO | Speaker reference for voice cloning. Use a clean single-speaker clip, ideally 10 to 30 seconds. | |
| reference_audio_pathopt | STRING | Speaker reference for voice cloning. Use a clean single-speaker clip, ideally 10 to 30 seconds. | |
| prompt_audioopt | AUDIO | Prompt/continuation audio. Use this for prompt_continuation, or for ultimate_clone when you want the model to match a specific spoken example. | |
| prompt_audio_pathopt | STRING | Prompt/continuation audio. Use this for prompt_continuation, or for ultimate_clone when you want the model to match a specific spoken example. | |
| prompt_textopt | STRING | Exact transcript of the prompt/reference clip. Required for prompt_continuation and ultimate_clone. Match the spoken words as closely as possible. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| saved_audio_path | STRING | — |
| sample_rate | INT | — |
| status | STRING | — |