Zonos Generate
ZonosGenerate Puts Voice Cloning in Your Graph
- sample_audio
- prefix_audio
- emotion
- AUDIO
You've got a script and you want it read back in a voice that isn't a cheerful robot. This is the node for that. Drop a short clip of someone speaking into the graph, type what you want said, and ZonosGenerate clones the voice and generates speech from text at 44 kHz. It's a ComfyUI wrapper around Zyphra's Zonos-v0.1 - the open-weight TTS that r/StableDiffusion spent early 2025 excited about. Two hundred thousand hours of training, clone quality that surprised people, and it runs fully offline once the weights are on disk. It isn't the shiniest TTS anymore - Zonos 2 took the crown in 2026 - but v0.1 still clones a voice convincingly from just a few seconds of audio, which is more than most local options can claim.
How it works
On first run the node downloads the model itself, via HuggingFace, into ComfyUI/models/zonos - not your checkpoints folder, so don't go hunting for it there. Then each generation does the usual Zonos dance: it computes a speaker embedding from your reference clip, uses phonemizer + eSpeak NG to turn your text into phonemes, rolls out audio codes under CFG sampling, and decodes them through Zonos's built-in autoencoder into a wav. The node also splits your text on {voice} markers and generates per-chunk, stitching the segments together - a genuine mitigation for Zonos's known weakness with long text, which degrades into garbled nonsense the longer it goes.
The inputs that matter
You'll mostly touch a handful of these:
- speech - the script. Multiline, so paste away.
- sample_audio + sample_text - the reference clip and a transcript of exactly what's said in it. This is the voice you're cloning. Five to ten seconds of clear, close-mic audio, no music or background noise, works best.
- model_type -
Zyphra/Zonos-v0.1-hybridvs-transformer. Hybrid is the heavier, better-sounding option; transformer is lighter and faster. Both auto-download. - language - a dropdown with ~109 language codes.
- seed - set to
-1for random, or lock it to keep takes consistent. - speed - the author's own tooltip says it all:
>1.0slower,<1.0faster. - emotion - the EMOTION output of
ZonosEmotion. Leave it unwired and Zonos falls back to a neutral vector.
The rest (cfg_scale, min_p, pitch_std, speaking_rate, dnsmos_ovrl, speaker_noised, prefix_audio) are Zonos conditioning knobs. Defaults are fine for a first pass; the only one worth poking early is prefix_audio, which lets you continue from an existing clip instead of starting cold.
The output is a single AUDIO wire - plug it into any node in your graph that saves or plays audio.
Installing it
From ComfyUI Manager, search "ComfyUI-Zonos" and install. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/BuffMcBigHuge/ComfyUI-Zonos
cd ComfyUI-Zonos
git submodule update --init --recursive
pip install -r requirements.txt
git clone https://github.com/Zyphra/Zonos.git
Then restart ComfyUI and hit R to refresh the node list. The pack also needs eSpeak NG for the phonemizer step - on Windows that's an MSI install plus a PHONEMIZER_ESPEAK_LIBRARY=C:\Program Files\eSpeak NG\libespeak-ng.dll environment variable; on Linux it's sudo apt install -y espeak-ng. And yes, the requirements list is a wall: transformers, librosa, torchdiffeq, x_transformers, bitsandbytes, wandb. This is a heavy node, not a utility.
Where people get burned
The #1 complaint on Reddit: "Missing Node Types: ZonosEmotion / ZonosGenerate" even after installing. It's a real, reproducible trap. The pack clones the entire Zyphra/Zonos repo at import time and drags in a mountain of pip deps - if any of that fails silently, the nodes never register. After install, confirm the Zonos folder exists inside the pack, re-run pip install -r requirements.txt and watch for errors, then restart ComfyUI.
Other things to know before you queue:
- The first run downloads roughly 1.5 GB to
ComfyUI/models/zonos. Model loading here isn't Comfy-native, so don't expect to see it in the checkpoint loader. - Long scripts genuinely break Zonos v0.1. Keep paragraphs short; the node's chunking helps but doesn't work miracles.
disable_compilerdefaults totrueon purpose - the author admits the C++ compile step doesn't work yet. Leave it on.- It's tested on Windows only, and you'll want an NVIDIA GPU with CUDA. The README is upfront about all of this.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| speech | STRING | This is what I want to say | — |
| seed | INT | 1 | Seed. -1 = random |
| model_type | COMBO | 2 options: Zyphra/Zonos-v0.1-transformer, Zyphra/Zonos-v0.1-hybrid | |
| language | COMBO | 109 options: af, am, an, ar, as, az, +103 | |
| pitch_std | FLOAT | 200–300 | — |
| speaking_rate | FLOAT | 155–30 | — |
| dnsmos_ovrl | FLOAT | 4.01–5 | — |
| cfg_scale | FLOAT | 2.01–5 | — |
| min_p | FLOAT | 0.150–1 | — |
| speed | FLOAT | 1.00 | Speed. >1.0 slower. <1.0 faster |
| disable_compiler | BOOLEAN | true | Disable PyTorch compiler for better compatibility |
| sample_audioopt | AUDIO | — | |
| sample_textopt | STRING | Text of sample_audio | — |
| prefix_audioopt | AUDIO | Optional audio to continue from | |
| speaker_noisedopt | BOOLEAN | false | Apply denoising to speaker reference |
| emotionopt | EMOTION | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |