Nodes/ComfyUI-DN-VoxCPM/VoxCPM Audio Reference
ComfyUI Node

VoxCPM Audio Reference

Clone a voice from a five-second clip with VoxCPM Audio Reference

By DekaNear·Created 9 months ago·Updated 9 months ago· 1
VoxCPM Audio Reference
  • model
  • prompt_audio
  • audio
textThis is a test of voice cloning with VoxCPM.
prompt_text
cfg_value2.0
inference_timesteps10
normalizefalse
denoise_promptfalse

This is the node the pack is built around. Give VoxCPM Audio Reference a short clip of someone speaking, the transcription of that clip, and a line of new text, and you get speech in that voice - same timbre, same delivery, without the eleven-minute ElevenLabs-style pipeline or an API key. The name says "reference" rather than "clone" but make no mistake, this is zero-shot voice cloning, and it's the reason to install this pack at all.

VoxCPM itself is OpenBMB's diffusion-based, tokenizer-free TTS, and it's one of those models the community keeps rediscovering. Against the usual suspects in the knowledge base - Chatterbox for quality, Kokoro for speed - VoxCPM gets described as fast, accurate, and less prone to skipping words on longer text. It also tends to be "the often forgotten model," which means you're getting a genuinely good clone engine that most tutorials skip. This pack is just a thin, friendly wrapper around it.

How it works

The node writes your prompt_audio to a temp WAV, hands the path plus your prompt_text to the model, and returns a ComfyUI AUDIO dict at the model's native sample rate. The temp file is cleaned up after every run, so there's no litter.

The inputs that matter:

  • model - from the pack's VoxCPM Model Loader node (same pack, first tab of the menu).
  • text - what you want said in the cloned voice.
  • prompt_audio - your reference clip as AUDIO, usually from VoxCPM Load Audio.
  • prompt_text - the transcription of that clip. Required; the node throws if it's empty. This is where the ASR node earns its keep.
  • cfg_value (1–3, default 2) and inference_timesteps (4–30, default 10) - the standard diffusion dials. More timesteps means cleaner speech and a longer wait; 2.0/10 is a good starting point.
  • denoise_prompt - cleans up a noisy reference. Defaults to off; flip it on if your clip has background hiss.

Output is a single audio (AUDIO) that wires straight into VoxCPM Save Audio, or anywhere else that eats AUDIO.

The recipe

[VoxCPM Load Audio] (my_voice.wav) → [VoxCPM ASR Recognition]
        │                                   │
        └──────────────┬────────────────────┘
[VoxCPM Model Loader] → [VoxCPM Audio Reference]
                              ↓
                      [VoxCPM Save Audio]

Keep the reference 3–10 seconds, clean and single-speaker. A bad reference is the number one cause of bad clones - the model can only imitate what it can hear.

Installing it

cd ComfyUI/custom_nodes/
git clone https://github.com/DekaNear/ComfyUI-DN-VoxCPM.git
cd ComfyUI-DN-VoxCPM
pip install -r requirements.txt

Restart ComfyUI, or install via Manager by searching "DN VoxCPM". First run downloads the VoxCPM 1.5 model from HuggingFace through the Model Loader - it's a real diffusion model, so budget a few minutes and a few GB of disk before the first clone.

Where people get burned

  • The prompt_text has to match the clip. If you feed it a transcription of different words, the clone drifts. Run ASR, don't trust memory.
  • Cross-language clones carry an accent. People report cloning from English and getting an accent when generating other languages. Expected behavior, not a bug.
  • Long text can go metallic. VoxCPM 1.5 has a known tendency to sound slightly metallic toward the end of long utterances. Shorter lines, or accept it.
CategoryDN-VoxCPM

Inputs (8)

NameTypeDefaultDescription
modelVOXCPM_MODEL
textSTRINGThis is a test of voice cloning with VoxCPM.
prompt_audioAUDIO
prompt_textSTRING
cfg_valueFLOAT2.01–3
inference_timestepsINT104–30
normalizeBOOLEANfalse
denoise_promptBOOLEANfalse

Outputs (1)

NameTypeDescription
audioAUDIO