TTS WebUI Preset
The 'just give me a voice' node
- audio
- wav_path
- metadata_json
Every other node in this pack is a per-model wrapper. This one is different: "TTS WebUI Preset" doesn't care which model you're using. It just asks the TTS WebUI server to play a preset - a saved bundle of model, voice, and settings that you set up on the server side - and speaks your text with it. If you've configured a handful of go-to voices in TTS WebUI and just want to grab one without thinking, this is the node.
How it works
Same client-server shape as the whole pack: the node POSTs an OpenAI-style body to http://127.0.0.1:7778/v1/audio/speech, this time with model: "global_preset". The magic all happens server-side - presets are defined in the TTS WebUI server, and this node just names one and says "go."
The inputs that matter
- voice - defaults to
random. If you leavepresetempty, the server uses its default setup with whatever voice you name here. - preset - the name of a preset you've created on the TTS WebUI server. Leave it empty and the node behaves like the server's default voice.
- speed - 0.25 to 4.0, default 1.0.
That's the whole node. Three knobs, all optional, none of them model-specific. That's the point - it's the "I don't want to know which model is under the hood" option.
Outputs
audio (AUDIO) into a preview/save node, wav_path (STRING) when also_save_wav is on, and metadata_json (STRING) with the request details.
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. Dependencies are just requests, numpy, torch - all already in your ComfyUI. There are no model downloads here at all; the preset's model is whatever the server has configured.
When it breaks
- Connection refused: server isn't running on
127.0.0.1:7778, orapi_basepoints at the wrong host. The node appends/v1/audio/speechitself. - Preset not found: the name you typed doesn't match any preset on the server. Presets are case-sensitive server-side things - check the exact name in TTS WebUI's UI.
- Weird voice when you expected a preset:
presetempty means you're getting the server default, andvoice: randommeans exactly that. If you wanted a specific voice, name it or set the preset.
Honestly, this node is a convenience play. If you only ever use one or two voices and don't care about per-model dials, it's the cleanest node in the pack - you can wire a whole workflow around it and never touch a model name. The trade-off is that "random" default will keep surprising you until you configure the server side to your liking.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hello | — |
| api_base | STRING | http://127.0.0.1:7778 | — |
| api_keyopt | STRING | — | |
| voiceopt | STRING | random | — |
| presetopt | STRING | — | |
| speedopt | FLOAT | 1.000.25–4 | — |
| 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 | — |