ComfyUI Node

VoxCPM TTS

Give Your ComfyUI Videos a Voice, No API Key Required

By 1038lab·Created 11 months ago·Updated 9 months ago· 42
VoxCPM TTS
  • reference_audio
  • REFERENCE_TEXT
  • AUDIO
modelVoxCPM 1.5
textHello, this is VoxCPM TTS.
reference_text
auto_transcribe_referencefalse
unload_modelfalse
deviceauto
seed-1

You built a workflow that renders a video and now you need it to say something. That's exactly what this node is for: VoxCPM TTS (AILab_VoxCPMTTS) turns a text prompt into actual speech, entirely on your machine. No API, no key, no monthly quota to babysit. It's a clean wrapper around OpenBMB's VoxCPM 1.5 diffusion TTS model, which the community quietly rates as one of the more accurate local options out there - it doesn't get the hype that Kokoro or Qwen TTS get, but people who use it tend to stay.

The genuinely useful part is that it's not just text-to-speech. Feed it a short reference audio clip and it clones the voice, so you can narrate a video in your own voice, dub a character, or make a consistent narrator for a whole batch. There's even a built-in auto-transcriber (faster-whisper) so you don't have to type the reference transcript yourself.

How it works

VoxCPM 1.5 is a ~500M-parameter diffusion model - think of it like a speech sampler instead of an image sampler. It encodes audio into a latent space with an audio VAE and denoises it over a handful of CFG-guided steps. The model auto-downloads from Hugging Face to ComfyUI/models/TTS/VoxCPM1.5/ (~1.2GB) on first run, and stays cached in memory between generations so later runs are fast.

This basic node hides every tuning dial behind sane presets (guidance 2.0, 10 inference steps, 4096 max tokens). The sibling AILab_VoxCPMTTS_Advanced node is the same engine with the knobs exposed - start here, move up when you care.

The inputs that matter

Honestly, there are only two you'll touch most days:

  • text - what you want said. Multiline, so paste a paragraph.
  • model - defaults to VoxCPM 1.5 (44.1kHz output, better quality). VoxCPM 0.5B still exists as an option but outputs a rougher 16kHz; the README basically tells you to ignore it.

The optional inputs cover voice cloning and VRAM management:

  • reference_audio (AUDIO) - a clip of the voice you want to clone. 3–30 seconds of clean speech works best.
  • reference_text - the transcript of that clip. If you leave it empty, flip on auto_transcribe_reference and the node will run faster-whisper to figure it out (that's a separate model download, heads up).
  • unload_model - free the VRAM right after generation if you're short on memory.
  • device - auto picks the best of cuda/mps/cpu. Leave it alone unless it picks wrong.
  • seed - -1 for random, or set it to reproduce a take.

Outputs

The node returns AUDIO - ComfyUI's standard {waveform, sample_rate} dict at 44.1kHz - plus REFERENCE_TEXT, the transcript it used for cloning (handy to wire elsewhere). One gotcha: this pack doesn't ship a save node, so to actually write the file to disk you'll need a Save Audio node from another pack, like VideoHelperSuite (VHS). Wire the AUDIO output into that and you're done.

Installation

Easiest via ComfyUI Manager: search "VoxCPMTTS" and install. Or manually:

cd ComfyUI/custom_nodes/
git clone https://github.com/1038lab/ComfyUI-VoxCPMTTS.git
cd ComfyUI-VoxCPMTTS
pip install -r requirements.txt

Then restart ComfyUI. The heavy dependencies are faster-whisper (for auto-transcription) and wetext (text normalization); the model itself downloads on first use.

Where people get burned

  • Reference audio without a transcript, and auto-transcribe off - the node hard-errors with a ValueError telling you to provide reference_text or enable auto-transcription. It's a clear message, but it surprises everyone once.
  • First-run downloads. You get the 1.2GB TTS model and, if you auto-transcribe, a Whisper "small" model. Don't judge speed on generation one.
  • Long text, metallic tail. A known VoxCPM 1.5 quirk - the tail end of long sentences can get a slightly metallic edge. Keep sentences reasonable, or drop into the Advanced node and nudge guidance down.
  • Memory. If ComfyUI dies with OOM, turn on unload_model, pick cpu, or close that other workflow.

Set VOXCPM_ASR_MODEL=small|medium|large if the auto-transcription gets your reference wrong. For plain narration, this node is about as friction-free as local TTS gets in ComfyUI right now.

Category🧪AILab/🔊TTS/VoxCPMTTS

Inputs (8)

NameTypeDefaultDescription
modelCOMBOVoxCPM 1.5Select VoxCPM model version
textSTRINGHello, this is VoxCPM TTS.Text to synthesize into speech
reference_audiooptAUDIOReference audio for voice cloning
reference_textoptSTRINGText transcript of reference audio (leave empty for auto-transcription)
auto_transcribe_referenceoptBOOLEANfalseIf reference text is empty, auto-run ASR to fill it
unload_modeloptBOOLEANfalseUnload model after generation to free VRAM
deviceoptCOMBOautoDevice to run the model on
seedoptINT-1-1–18446744073709550000Random seed (-1 for random)

Outputs (2)

NameTypeDescription
REFERENCE_TEXTSTRING
AUDIOAUDIO