ElevenLabs TTS Node
Studio-grade voices, but it's a paid API in a thin wrapper
- AUDIO
If you've been voice-acting your ComfyUI videos with whatever local TTS node you found on GitHub, this is the upgrade that actually sounds like a human. ElevenLabs TTS Node is a wrapper around ElevenLabs' cloud text-to-speech API, and it drops the result straight into ComfyUI's AUDIO system so you can narrate an animated workflow without leaving the graph.
Set expectations first: it does not run a model locally, it needs zero VRAM, and it calls a paid web API over the internet. You pay per character of generated audio against ElevenLabs credits, and you need an API key. The trade is that you get ElevenLabs' voice quality plus their whole library of premium and cloned voices - including celebrity impressions and your own clones - which is the entire point of reaching for this over a free local node.
How it works
Under the hood it's two HTTP calls. When you add the node, it fetches the public voice list from api.elevenlabs.io/v1/voices and builds the voice dropdown from it - each entry is Name (voice_id), and the node parses the id back out at generate time. That list is cached for an hour. When you run it, it POSTs to /v1/text-to-speech/{voice_id} with your key, the text, a model id, and your voice settings, then takes the returned audio bytes, decodes them with torchaudio, and reshapes them into the 3D waveform + sample rate dict that ComfyUI's AUDIO type expects. The AUDIO output wires straight into ComfyUI's audio preview/save nodes or the audio port on a VideoHelperSuite Video Combine.
The inputs that matter
- api_key - your ElevenLabs key, required. Keep it out of any workflow you share; it's a literal secret pasted into a widget.
- text - the lines to speak. It has a default of "Hello, how are you?" and that default will get spoken if you forget to type anything. Wire the optional input_text input instead if you want to feed text from another node (a prompt switcher, an LLM node); it takes priority over the text box.
- voice / model - the dropdowns. Voices come from your account; models are hardcoded to
eleven_multilingual_v2,eleven_english_sts_v2, andeleven_turbo_v2. - stability (default 0.5) controls how steady vs. expressive the delivery is - lower for emotion, higher for consistency. similarity_boost (0.8) and use_speaker_boost (on) tune how closely it matches the voice. style (0) adds exaggeration. These map 1:1 to ElevenLabs'
voice_settings.
Installing it
ComfyUI Manager: search ComfyUI-11labs and install. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/gabe-init/ComfyUI-11labs
Then restart ComfyUI. Its dependencies are requests, torch, and torchaudio - you already have the last two from ComfyUI itself, so really just requests. No model files to download, no heavy setup. You do need an ElevenLabs account and a key.
Where people get burned
Failures are silent. The node never raises an error to the UI - on a bad key (401), out of credits (402), a bad voice, or even a torchaudio decode failure, it returns a silent zero-length audio blob and only prints the real reason to the ComfyUI console. So if you run it and hear nothing, check the console log first, then your credit balance, then your key. This is the single biggest trap with this node.
Two more quirks worth knowing. The model list is hardcoded to the v2 generation from 2024 - no eleven_multilingual_v3 or Flash models in the dropdown; if you need the newer stuff you'll be editing node.py. And the voice list is cached for an hour and fetched without your key, so a freshly cloned voice won't appear until the cache refreshes - restart or wait, it's not a bug. It's also technically TTS-only despite a latent speech-to-speech code path in the source: that path has no input wired up, so don't go hunting for an audio input.
Great for narrated video pipelines where quality matters more than the per-character cost. Just keep an eye on your credits and the console, and it's the easiest studio-voice button ComfyUI has.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| text | STRING | Hello, how are you? | — |
| voice | COMBO | 21 options: Roger - Laid-Back, Casual, Resonant (CwhRBWXzGAHq8TQ4Fs17), Sarah - Mature, Reassuring, Confident (EXAVITQu4vr4xnSDxMaL), Laura - Enthusiast, Quirky Attitude (FGY2WhTYpPnrIDTdsKH5), Charlie - Deep, Confident, Energetic (IKne3meq5aSn9XLyUdCD), George - Warm, Captivating Storyteller (JBFqnCBsd6RMkjVDRZzb), Callum - Husky Trickster (N2lVS1w4EtoT3dr4eOWO), +15 | |
| model | COMBO | 3 options: eleven_multilingual_v2, eleven_english_sts_v2, eleven_turbo_v2 | |
| stability | FLOAT | 0.50–1 | — |
| similarity_boost | FLOAT | 0.80–1 | — |
| style | FLOAT | 0.00–1 | — |
| use_speaker_boost | BOOLEAN | true | — |
| input_textopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |