VoxCPM Generate Audio Advanced
One node, every VoxCPM mode — the swiss-army knife for when you've outgrown the split nodes
- model
- prompt_audio
- reference_audio
- audio
VoxCPM Generate Audio Advanced is the whole pack compressed into one node. Where the other four generation nodes each hard-wire a mode - TTS here, voice design there, two flavors of cloning - this one exposes every input and lets how you fill the sockets decide what happens. Text alone? Plain TTS. Text plus a control instruction? Voice design. Add a reference clip? Cloning. It's the node you build a workflow around once you understand the modes, and the node that will happily confuse you if you don't.
The mode map (this is the whole node)
- text only → multilingual TTS
- text + control_instruction → voice design
- text + reference_audio → cloning
- text + reference_audio + control_instruction → controllable cloning
- text + prompt_audio + prompt_text → continuation cloning
- text + prompt_audio + prompt_text + reference_audio → the strongest advanced setup, continuation plus a timbre anchor
Everything funnels through the same generation path, so the inputs are the union of the specialized nodes: control_instruction (the (description) style prefix), optional reference_audio and prompt_audio sockets, optional prompt_text, then the shared generation set - cfg_value (0–10, default 2), inference_timesteps (1–100, default 10), max_len (raise if audio cuts off), normalize, denoise. Output is a single audio socket.
Where it shines and where it bites
It shines in one place specifically: a large workflow where you're switching modes programmatically or don't want five near-identical nodes cluttering the graph. One node, one text field, swap the connections. If you're templating workflows or driving audio from a script, this is the one you wire.
It bites the same way every kitchen-sink node bites: leaving a socket dangling silently changes the mode. Plug in prompt_audio but forget prompt_text and the node errors out - the source explicitly requires them as a pair. Plug in a reference_audio you stopped thinking about and suddenly your "plain TTS" is cloning a voice you forgot was connected. That's why the README's advice is the right advice: learn the specialized nodes first, then graduate to this one. It's not smarter, it's denser.
Setup and troubleshooting
Same pack install as everything else: ComfyUI Manager (search "ComfyUI-VoxCPM") or git clone https://github.com/starsFriday/ComfyUI-VoxCPM.git into custom_nodes, pip install -r requirements.txt, and the openbmb/VoxCPM2 model into models/VoxCPM2. Heavy requirements, Python 3.10–3.13, CUDA ≥ 12.
The three errors you'll actually meet: prompt_text requires prompt_audio (or the reverse) - they travel as a pair; audio cutting off mid-sentence - raise max_len; a mode that's not what you intended - disconnect everything and reconnect deliberately, because the mode is defined by which sockets are filled, not by anything you click. The node has no mode selector, and that's both the feature and the trap.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | VOXCPM_MODEL | — | |
| text | STRING | 你好,这是一个 VoxCPM ComfyUI 节点测试。 | — |
| control_instruction | STRING | — | |
| cfg_value | FLOAT | 2.00–10 | — |
| inference_timesteps | INT | 101–100 | — |
| max_len | INT | 409664–65536 | — |
| normalize | BOOLEAN | false | — |
| denoise | BOOLEAN | false | — |
| prompt_audioopt | AUDIO | — | |
| reference_audioopt | AUDIO | — | |
| prompt_textopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |