Nodes/ComfyUI-HMT-Ultimate/VieNeu TTS (Preset Voice)
ComfyUI Node

VieNeu TTS (Preset Voice)

A Vietnamese TTS node that actually speaks your language

By tuyenhm68·Created 8 months ago·Updated 8 months ago· 2
VieNeu TTS (Preset Voice)
    • audio
    • filepath
    textXin chào, tôi là VieNeu TTS.
    voicedefault
    filename_prefixvieneu_tts
    custom_voice_id

    If your narration has to be in Vietnamese, this is the ComfyUI node you've been looking for. VieNeu TTS (Preset Voice) turns Vietnamese text into speech using a stack of built-in Vietnamese voices, entirely on your own machine - no API, no key, no account. It's the flagship node of the ComfyUI-HMT-Ultimate pack, a small wrapper around the VieNeu-TTS SDK by Ha Manh Tuyen. It lives in the HMT Ultimate/Audio category.

    Here's why it exists. Almost every open TTS you hear people talk about - Kokoro, Chatterbox, F5-TTS - is English-first, with multilingual support tacked on. VieNeu is the opposite: it's a Vietnamese voice engine first, and that's its whole reason for being. If you're doing Vietnamese narration, character dialogue, or dubbing, you don't need to fight a generic model's accent; you pick a native voice and go.

    How it works

    The pack wraps the vieneu Python SDK, which ships a two-stage backbone-plus-codec model. The first time you actually use any node in the pack, it downloads the model weights (this is a one-time download, not something that happens at ComfyUI startup - the engine is a lazy singleton shared by all three nodes). If you have a CUDA GPU it runs on that; otherwise it quietly falls back to CPU, which works but is slow.

    You'll notice the voice dropdown is already populated with 21 choices - names like Minh Đức, Phạm Tuyên, Trúc Ly, Ngọc Linh - because the node asks the SDK for the live voice list when it's created. That has a side effect worth knowing: dragging this node onto the canvas can trigger the first model download right then, not when you hit "Queue". First run feels frozen; it's just downloading.

    The inputs that matter

    Only three, and one of them is optional:

    • text - your Vietnamese text, multiline. The default is the polite "Xin chào, tôi là VieNeu TTS."
    • voice - one of the 21 preset voices, default being a neutral pick. Test a few; the named ones are quite distinct.
    • filename_prefix - just the output filename stem (vieneu_tts by default). The saved file becomes {prefix}_{voicename}.wav.
    • custom_voice_id - optional string. If you fill it in, it overrides the dropdown. Handy if you grabbed an exact voice ID from the VieNeu List Voices node, since the dropdown shows friendly names.

    It outputs a proper ComfyUI audio (waveform tensor at 24 kHz - wire it into a PreviewAudio node to hear it, or feed it to a lip-sync/avatar pipeline) and a filepath string pointing at the saved WAV in your output folder. The WAV is written to disk with collision handling, so re-runs don't clobber each other.

    Installing it

    The easiest path is ComfyUI Manager - search "ComfyUI-HMT-Ultimate" and hit install. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/tuyenhm68/ComfyUI-HMT-Ultimate.git
    cd ComfyUI-HMT-Ultimate
    python install.py
    

    That install.py does the real work: it detects whether you're on ComfyUI Portable (it finds python_embeded) and installs vieneu plus numpy/torch/scipy. On Windows it pulls a prebuilt llama-cpp-python wheel from the author's own index - llama-cpp-python is the dependency that refuses to build from source, so that extra index URL is the thing that saves you. Then restart ComfyUI.

    Where people get burned

    Two things, mostly. First, the README's own clone command has a placeholder URL (https://github.com/your-repo/...) - copy the real repo URL above, not the README. Second, the first run's model download is genuinely large and there's no progress bar in the console to comfort you; just let it finish. And if the SDK fails to enumerate voices at node creation, the dropdown falls back to a short hardcoded list - don't panic, the full set still works if you use the right IDs.

    Honest take: this is a niche pack maintained by one person, with basically zero community discussion - you're early. If you need Vietnamese TTS locally inside ComfyUI, there isn't a more direct option. For anything in English, reach for Kokoro or Chatterbox instead; that's not this node's job.

    CategoryHMT Ultimate/Audio

    Inputs (4)

    NameTypeDefaultDescription
    textSTRINGXin chào, tôi là VieNeu TTS.
    voiceCOMBOdefault21 options: default, Minh Đức, Phạm Tuyên, Thái Sơn, Xuân Vĩnh, Thanh Bình, +15
    filename_prefixSTRINGvieneu_tts
    custom_voice_idoptSTRING

    Outputs (2)

    NameTypeDescription
    audioAUDIO
    filepathSTRING