VieNeu TTS (Voice Clone)
Clone a Vietnamese voice from a 5-second sample
- audio
- filepath
Voice cloning is the harder half of TTS, and this node is the "I have a specific person's voice and I want them to read my script" option inside the ComfyUI-HMT-Ultimate pack. VieNeu TTS (Voice Clone) takes a short reference recording plus its transcript, and makes your Vietnamese text come out in that voice. Same local, no-API setup as the pack's preset-voice node - you just supply the sample instead of picking from a dropdown.
The thing that separates this from the English cloning crowd (Chatterbox, F5-TTS) is the same thing that separates the whole pack: it's Vietnamese-native. If the voice you're cloning speaks Vietnamese, you want a model that knows how Vietnamese tones and diphthongs actually work, not one that learned them as an afterthought. That's this node's lane.
How it works
Both VieNeu TTS nodes share one lazy-loaded engine, so the first run downloads the model weights once and everything after is fast. For cloning, the SDK runs a few seconds of reference audio through an encoder, lifts the speaker identity out of it, and synthesizes your text conditioned on that identity. The key inputs:
text- what you want the cloned voice to say (multiline).ref_audio_path- a path to your reference WAV, on disk. The README recommends 3–5 seconds of clean, single-speaker audio.ref_text- the literal transcript of that reference clip. This matters more than people expect: the model aligns the transcript to the audio to learn the voice, so a wrong transcript means a muddy clone.filename_prefix- output filename stem (vieneu_clonedby default).
Outputs are the same shape as the preset node: an audio value (24 kHz waveform tensor) you can wire into a PreviewAudio node or a lip-sync pipeline, plus a filepath string to the saved WAV in your ComfyUI output folder.
The trap in the default
The default ref_audio_path is examples/audio_ref/example.wav - and that file is not in the repo. The examples folder only ships workflow JSON, no audio. So if you run the node as-is, it dies with FileNotFoundError: Reference audio not found before it does anything. That's the single most common first-run failure with this node, and it's not you. Point it at your own recording and the error disappears.
Installing
Same pack install as the preset node - ComfyUI Manager (search "ComfyUI-HMT-Ultimate") or:
cd ComfyUI/custom_nodes
git clone https://github.com/tuyenhm68/ComfyUI-HMT-Ultimate.git
cd ComfyUI-HMT-Ultimate
python install.py
On Windows that script installs vieneu against a prebuilt llama-cpp-python wheel from the author's index, which is the difference between a two-minute install and an hour of native builds. Restart ComfyUI after.
Getting a clone that doesn't sound like a ghost
Clone quality here is sample-dependent, same as everywhere. Use a clean recording with no background music or reverb, keep it to a few seconds, and make sure ref_text is word-for-word accurate - drop or add a syllable and the accent drifts. Test on short sentences first; the engine handles longer text fine, but a broken reference poisons every generation it feeds.
One honest caveat: there's essentially no community signal on this pack - no threads, no workflow swaps, one maintainer. If you hit a wall, the GitHub issues page is your real support channel. For a specific Vietnamese voice, though, this is the only local ComfyUI option that does the job at all, and it's worth the fiddling.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Đây là giọng nói đã được clone từ mẫu. | — |
| ref_audio_path | STRING | examples/audio_ref/example.wav | — |
| ref_text | STRING | Văn bản tương ứng với audio mẫu. | — |
| filename_prefix | STRING | vieneu_cloned | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| filepath | STRING | — |