Nodes/ComfyUI_RH_VoxCPM/RunningHub VoxCPM Generate Speech
ComfyUI Node

RunningHub VoxCPM Generate Speech

Voice design, cloning, or ultimate cloning

By RH-RunningHub·Created 4 months ago·Updated 2 months ago· 0
RunningHub VoxCPM Generate Speech
  • model
  • reference_audio
  • audio
control_instruction
textHello, this is a test.
cfg_value2.0
inference_steps10
seed0
ultimate_clonefalse
reference_audio_text
normalize_textfalse
denoise_referencefalse
max_len4096
retry_badcasetrue

This is the node you'll actually live in. RunningHub VoxCPM Generate Speech takes the model wire from Load Model, a line of text, and - depending on what you fill in - makes a brand-new voice from a description, clones a real one, or continues an existing clip mid-sentence. VoxCPM is OpenBMB's tokenizer-free TTS, and it's the quiet underdog of the local voice-cloning corner: the community consistently reports it more accurate than Chatterbox and less prone to skipping words in long passages, even though it rarely gets the hype the bigger names do.

You wire its audio output into any node that eats ComfyUI AUDIO - a save-audio node, a video/lipsync pipeline, or the reference input of another VoxCPM node.

Three modes, one node

The mode is decided by two inputs: reference_audio and ultimate_clone.

  • Voice design - leave reference_audio empty and write a description in control_instruction, like "a warm young woman" or "a gruff middle-aged man, slow pace." The model invents a voice from the description alone. This is the most fun and the least talked about.
  • Controllable cloning - plug in a reference clip, keep ultimate_clone off, and use control_instruction to steer emotion and pacing while the timbre stays glued to the reference.
  • Ultimate cloning - reference audio plus ultimate_clone on plus an exact reference_audio_text transcript. The model treats the clip as a spoken prefix and continues it, which reproduces every vocal quirk. control_instruction is ignored here.

The one thing to internalize: ultimate cloning demands a correct transcript, and the node won't auto-transcribe for you. That's deliberate. The author's own note says an incorrect ASR transcript can change the spoken content, so it errors out instead of guessing. Paste the exact words from the clip.

The knobs that matter

The rest of the inputs are the same family you know from diffusion: cfg_value (guidance, default 2.0), inference_steps (the LocDiT flow-matching steps, default 10 - the low default is the point, VoxCPM is fast), and seed for reproducibility. Two worth caring about beyond those:

  • retry_badcase (default on) - re-generates once if the output comes back structurally broken (silence, clipped garbage). Keep it on; it's cheap insurance.
  • denoise_reference (default off) - runs the reference clip through the optional ZipEnhancer denoiser before cloning. Turn it on if your sample has background music or hiss. It needs speech_zipenhancer_ans_multiloss_16k_base downloaded, or the node will tell you to fetch it.

normalize_text is off by default, and in practice you'll leave it off. max_len (default 4096) caps token length; raise it for very long paragraphs.

Getting the model in place

The node needs the base model before anything else:

cd ComfyUI/custom_nodes
git clone https://github.com/RH-RunningHub/ComfyUI_RH_VoxCPM.git
cd ComfyUI_RH_VoxCPM && pip install -r requirements.txt
hf download openbmb/VoxCPM2 --local-dir ComfyUI/models/voxcpm/VoxCPM2

Restart ComfyUI after the clone, and again the model folder needs to be in models/voxcpm/. The README ships a basic workflow in examples/ that strings Load Model → Generate Speech → save, and you can't do better than starting there.

What trips people up

Two things. First, the FunASR + transformers dependency stack this pack pulls in is the classic audio-in-ComfyUI pain point - if other nodes break after install, that's why. Second, don't expect VoxCPM1.5's quirks to carry over to VoxCPM2: 1.5 had a known metallic drift at the end of long sentences, and the 2B model largely fixed it. If you're evaluating this node and your first clip sounds off, try VoxCPM2 before blaming your settings. And if you just want a fast, good-enough voice with zero setup, this whole pack is arguably overkill - but for cloning a specific voice locally, it's genuinely in the conversation.

CategoryRunningHub/VoxCPM

Inputs (13)

NameTypeDefaultDescription
modelVOXCPM_MODEL
control_instructionSTRING
textSTRINGHello, this is a test.
cfg_valueFLOAT2.00.1–5
inference_stepsINT101–50
seedINT00–18446744073709550000
reference_audiooptAUDIO
ultimate_cloneoptBOOLEANfalse
reference_audio_textoptSTRING
normalize_textoptBOOLEANfalse
denoise_referenceoptBOOLEANfalse
max_lenoptINT409664–8192
retry_badcaseoptBOOLEANtrue

Outputs (1)

NameTypeDescription
audioAUDIO