Nodes/ComfyUI-VoxCPM/Load VoxCPM Model
ComfyUI Node

Load VoxCPM Model

The node every VoxCPM workflow starts with (and the two toggles that trip people up)

By starsFriday·Created 5 months ago·Updated 5 months ago· 8
Load VoxCPM Model
    • model
    model_nameVoxCPM2
    load_denoiserfalse
    optimizefalse

    This is the boring node that makes everything else in ComfyUI-VoxCPM possible, so get it right once and you never think about it again. It loads OpenBMB's VoxCPM2 voice model into memory and hands a single VOXCPM_MODEL object to any of the five generation nodes in this pack. No model object, no audio - every VoxCPM workflow starts here by design.

    The whole thing is a wrapper around the official VoxCPM2 inference code, which the pack bundles inside the plugin directory. You don't need a separate checkout of the upstream repo; the only external asset is the model itself, sitting in your ComfyUI models folder. That's a real simplification, and worth appreciating before you hit the dependency list below.

    The inputs that matter

    • model_name - a dropdown of model folders it found on disk. Default is VoxCPM2, which resolves to ComfyUI/models/VoxCPM2. It also scans the legacy models/VoxCPM path, so old layouts keep working.
    • load_denoiser - off by default. Flip it on only if you plan to use the denoise option on a generation node with noisy reference audio. It pulls a speech-enhancement model (ZipEnhancer, from ModelScope) - an extra download and dependency you don't need for plain text-to-speech.
    • optimize - off by default. This enables torch.compile plus a warmup pass, which speeds up repeated inference. Leave it off for your first run; it's a known source of startup slowness and version-specific pain, and it's not worth debugging alongside your first install.

    One subtlety in the source: the model is cached per combination of (model_name, load_denoiser, optimize). Flip any of the toggles and it tears down the old model and reloads - so if your second run suddenly stalls for a minute, that's a deliberate reload, not a hang.

    Installing it (and its model)

    Install the pack via ComfyUI Manager (search "ComfyUI-VoxCPM") or manually:

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

    That requirements file is heavy - torch, torchaudio, transformers, librosa, funasr, modelscope, wetext and friends. The README wants Python 3.10–3.13, torch ≥ 2.5, CUDA ≥ 12. This is the usual "audio bolted onto ComfyUI" tax the ecosystem is known for; if you already run other audio packs, expect dependency roulette.

    Then download the model, which is the part people forget:

    huggingface-cli download openbmb/VoxCPM2 --local-dir ./models/VoxCPM2
    

    Run that from your ComfyUI root. It should contain at least config.json, model.safetensors, tokenizer.json, tokenizer_config.json, special_tokens_map.json, and audiovae.pth.

    Troubleshooting

    • Empty dropdown / "Cannot find model" - the model folder is missing or incomplete. Check models/VoxCPM2 actually has config.json plus a weights file.
    • Import error for voxcpm - the bundled source usually handles this, but if you see it, your install of the Python deps broke somewhere. Re-run the requirements install.
    • normalize or load_denoiser fails - you're missing optional deps the README names explicitly: wetext, inflect, regex, modelscope.

    Start simple: model loaded with both toggles off, one TTS node attached, confirm audio comes out. Turn on optimize and load_denoiser only when the plain path already works. Nothing in this node is magic, and the less magic on the table the easier the debugging.

    Categoryaudio/VoxCPM

    Inputs (3)

    NameTypeDefaultDescription
    model_nameCOMBOVoxCPM21 options: VoxCPM2
    load_denoiserBOOLEANfalse
    optimizeBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    modelVOXCPM_MODEL