WavTTS Generate
Make any voice say anything you type, no training required
- wavtts_model
- reference_audio
- audio
This is the node that makes WavTTS worth installing. Feed it a short clip of a voice you like, type whatever you want that voice to say, and out comes the speech as a ComfyUI AUDIO tensor. No fine-tuning, no training data, no cloud API. It's zero-shot voice cloning, which is the fancy way of saying "one reference clip in, any text out."
Where it sits in the workflow
WavTTS Generate is the middle of a three-node pipeline. Upstream you have WavTTS Load Model, which gives you the wavtts_model weights (that's the only connection type this node accepts for the model input). Downstream, the single output is plain AUDIO, so it plugs into whatever you use to save or preview audio - ComfyUI has audio nodes in core now, and the VideoHelperSuite save nodes are the usual pick if you want more control. The optional fourth node, WavTTS Whisper Transcribe, can auto-fill the transcript input for you.
How it works
WavTTS is a text-to-speech model that synthesizes 16 kHz waveform directly through a flow-matching / ODE path - there's no intermediate spectrogram stage. The reference clip gets trimmed of silence, resampled to 16 kHz, and capped at 12 seconds. Long text is split into chunks using the same sentence-split plus UTF-8 byte-counting logic as upstream WavTTS, each chunk is generated, and if you set a cross_fade_seconds overlap they're blended back together instead of just butt-joined. That chunking is why the node handles a full paragraph fine instead of choking.
The inputs that matter
You don't need to touch most of these. The ones that actually matter:
- reference_audio (
AUDIO) - a clean clip of the target voice, around 5–12 seconds. Background noise and music are your enemy here. - reference_text (
STRING) - the exact transcript of that clip. This one is required; skip it and generation fails. The name of the pack's Whisper node is not marketing - that's what it's for. - text - what you want synthesized.
- Steps (default 50) and CFG (default 3.0) - quality knobs. More steps = better but slower; CFG follows the text harder but creeps toward unnatural the higher you push it.
- seed -
0is random; a positive value makes the same input reproducible.
Worth knowing about, not necessarily touching: shift (lower it if your reference has background noise), speed (a pace multiplier used for duration estimation), and fixed_total_duration_seconds (set a positive value to force the total length instead of letting the model estimate it).
Install
Same install for the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Saganaki22/WavTTS-ComfyUI.git
cd WavTTS-ComfyUI
python install.py
Or just search WavTTS in ComfyUI Manager and restart. One important quirk: this pack's requirements.txt is intentionally a commented reference - do not run pip install -r requirements.txt. install.py installs the upstream WavTTS package and helpers with --no-deps so the training-only dependency chain (bitsandbytes, datasets, wandb, pydantic pins…) can't wreck your existing ComfyUI environment. Models auto-download to ComfyUI/models/wavtts/ on first use.
Troubleshooting
Garbled or noisy output is the classic complaint, and it's almost always a precision problem - pure FP16/BF16 WavTTS inference can produce non-finite samples. The README's fix, and the one that works: load the FP32 checkpoint with dtype=auto. If your audio is otherwise fine but doesn't sound like the reference, check your transcript - reference_text drives the whole voice-prompting mechanism, and Whisper can mangle an accent. If output is missing or stuttery, you likely have long text without a crossfade; raise cross_fade_seconds a little.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| wavtts_model | WAVTTS_MODEL | Loaded WavTTS model from the WavTTS Load Model node. | |
| reference_audio | AUDIO | Reference speaker audio. Use a clean clip under 12 seconds. | |
| text | STRING | Hello! This is WavTTS running inside ComfyUI. | Text to synthesize. |
| reference_text | STRING | Transcript of the reference audio. Required for WavTTS voice prompting. | |
| Steps | INT | 504–128 | Number of WavTTS sampling steps. Higher can improve quality but is slower. |
| CFG | FLOAT | 3.00–10 | Classifier-free guidance strength. Higher values follow the text harder, but can sound less natural. |
| speed | FLOAT | 1.000.1–3 | Speech pace multiplier used for duration estimation. 1.0 is normal. |
| timestep_mapping | COMBO | power | Sampler timestep schedule. power is the upstream default; sway_sampling enables the EPS/Sway path. |
| timestep_power | FLOAT | 2.00.1–8 | Exponent for power timestep mapping. Only meaningful when timestep_mapping is power. |
| shift | FLOAT | 3.00.1–8 | Flow timestep shift. Lowering this can help if speech contains background noise. |
| cross_fade_seconds | FLOAT | 0.000–2 | Overlap crossfade used only when long text is split into multiple generated chunks. |
| fixed_total_duration_seconds | FLOAT | 0.00–120 | 0 lets WavTTS estimate duration. Positive values force total prompt plus generated duration. |
| seed | INT | 00–2147483647 | 0 is random/unseeded. Positive values make generation repeatable. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |