TTS WebUI StyleTTS2
The style-transfer TTS with the four dials
- audio
- wav_path
- metadata_json
StyleTTS2 sits in a slightly different lane than the cloning models in this pack. It's built around style transfer: it learns the speaking style - rhythm, intonation, prosody - from a reference speaker and applies it to new text. That makes it a favorite for narration where you want consistent, characterful delivery rather than a strict voice clone. It's an older model than Chatterbox or F5-TTS, but it's still around because its style control is genuinely good and it's cheap to run.
How it works
Same client-server shape as every node in this pack: the node POSTs an OpenAI-style body to your TTS WebUI server at http://127.0.0.1:7778/v1/audio/speech with model: "styletts2", and the server does the synthesis. StyleTTS2 blends a reference speaker's style with diffusion-based prosody generation, and this node exposes exactly the four controls that matter for that blend.
The inputs that matter
- alpha (0–1, default 0.3) - how much the reference speaker's style diffuses into the output. Low = neutral delivery, higher = the reference's character comes through.
- beta (0–1, default 0.7) - the overall style transfer strength. Where alpha shapes which style, beta decides how much it's applied at all.
- diffusion_steps (default 5) - the number of diffusion refinement steps on the prosody. More steps = smoother, more natural prosody, slower. 5 is a good default; drop it if you're iterating fast.
- embedding_scale (0–5, default 1.0) - how strongly the reference's embedding influences generation. Crank it to exaggerate the reference's identity.
Outputs
audio (AUDIO) into a preview or save node, wav_path (STRING) when also_save_wav is on, and metadata_json (STRING) with the request details and WAV stats.
Installing it
ComfyUI Manager → search "TTS WebUI API nodes for ComfyUI", or:
cd ComfyUI/custom_nodes
git clone https://github.com/rsxdalv/ComfyUI-TTS-Webui
then restart. The pack's only dependencies are requests, numpy, torch - already in your ComfyUI. StyleTTS2's model files download into the TTS WebUI server, not this node.
When it breaks
- Connection refused: the server isn't up on
127.0.0.1:7778. Start TTS WebUI and load StyleTTS2 there; if it's remote, fixapi_base(the node appends/v1/audio/speechitself). - First request times out: model load or download on the server. Raise
timeout_sec(max 600). - Output sounds flat or too "robotic": that's
alpha/betatoo low ordiffusion_stepstoo low - this model rewards a few more diffusion steps more than most.
One honest note: this node's inputs assume the server has a reference speaker/voice configured - there's no audio_prompt_path field here like the cloning nodes have. The style comes from whatever voice the server is set up with. If your TTS WebUI server's StyleTTS2 has no reference loaded, you'll get the model's default voice, which defeats the point.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hello | — |
| api_base | STRING | http://127.0.0.1:7778 | — |
| api_keyopt | STRING | — | |
| alphaopt | FLOAT | 0.300–1 | — |
| betaopt | FLOAT | 0.700–1 | — |
| diffusion_stepsopt | INT | 51–200 | — |
| embedding_scaleopt | FLOAT | 1.000–5 | — |
| timeout_secopt | INT | 1201–600 | — |
| channels_firstopt | BOOLEAN | true | — |
| also_save_wavopt | BOOLEAN | false | — |
| save_prefixopt | STRING | tts | — |
| return_metadataopt | BOOLEAN | true | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| wav_path | STRING | — |
| metadata_json | STRING | — |