☁️OpenAI TTS
Turn your LLM's answer into an audio file, in-graph
- audio_path
- audio
Once you've got an LLM generating text inside ComfyUI, the obvious next step for a lot of workflows is: say it out loud. OpenAI TTS is exactly that - it wraps the OpenAI text-to-speech endpoint (or anything that speaks the same API shape via a relay) so a chunk of text coming out of an LLM node becomes an actual audio clip, without leaving the graph. The README's own framing for this pack calls out "one-stop LLM + TTS + ComfyUI workflow" as a use case for streaming/content creators specifically, and this node is the TTS half of that.
Inputs and outputs
The required fields map straight onto OpenAI's TTS API. input_string is the text you want spoken - typically the output of an upstream LLM node, though there's nothing stopping you from wiring in static text for testing. model_name is a two-way enum: tts-1, tuned for speed, or tts-1-hd, tuned for audio quality at the cost of latency - for most workflow use (dubbing an LLM response, not producing a podcast) tts-1 is the one to reach for. voice picks from the six standard OpenAI voices - alloy, echo, fable, onyx, nova, shimmer - which is the full set OpenAI exposes on this endpoint; there's no fine control beyond picking one of the six. is_enable is this pack's usual toggle to bypass the call without deleting the node.
base_url and api_key are optional the same way they are everywhere else in this pack - leave them blank and it falls back to your config.ini defaults, or fill them in on the node to point at a relay or a different account. As with every other API node here, if you're using a relay rather than OpenAI directly, base_url needs to end in /v1/.
Two outputs come back: audio_path, a plain string path to the generated audio file on disk, and audio, ComfyUI's native AUDIO type. The AUDIO output is the one you actually want wired into other ComfyUI audio nodes - save-audio, audio preview, or anything downstream that expects that type - while audio_path is there for cases where you need the raw file location, say to reference it from a workflow-generated report or hand it to a node outside this pack's own type system.
Where it fits
This slots in right after any of this pack's text-generating nodes - the full LLM/API node, Mini Party for quick one-offs, or even the output of a tool-calling agent chain. Text in, spoken audio out, no separate service to stand up. It's a genuinely small node doing one focused job well, which is probably why it's got real click-through in search - people are specifically hunting for "how do I get TTS out of ComfyUI" and this is a direct answer.
Installing it
Ships with the full pack:
- ComfyUI Manager: search "comfyui_LLM_party", install, restart ComfyUI.
- Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/heshengtao/comfyui_LLM_party, thenpip install -r requirements.txtinside your ComfyUI Python environment, restart.
No special local dependencies for this specific node - it's a thin API wrapper, not a local TTS model, so you don't need anything GPU-heavy just for this. If you're only ever going to use API-based nodes like this one, the pack's only_api branch is a leaner install that skips the local-model dependencies entirely.
Common issues
You need a real OpenAI API key with billing set up - TTS is a paid endpoint, and there's no free tier to fall back on if the key is missing or invalid, so an auth error here is almost always exactly that: check the key, and check that it's set somewhere (node or config.ini), not both left blank.
If you're routing through a relay/proxy instead of OpenAI directly via base_url, confirm that relay actually supports the audio/speech endpoint - a lot of OpenAI-compatible relays are built and tested primarily against the chat completions endpoint, and TTS support is inconsistent between them even when chat works fine. If chat-based nodes in this pack work through your relay but this one doesn't, that's the first thing to check, not your own configuration.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| is_enable | BOOLEAN | true | — |
| input_string | STRING | — | |
| model_name | COMBO | tts-1 | 2 options: tts-1, tts-1-hd |
| voice | COMBO | alloy | 6 options: alloy, echo, fable, onyx, nova, shimmer |
| base_urlopt | STRING | — | |
| api_keyopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio_path | STRING | — |
| audio | AUDIO | — |