ElevenLabs Text to Speech
ElevenLabs-grade voices, wired straight into your graph
- voice
- AUDIO
This is the node that makes people sit up: ElevenLabs' text-to-speech quality, called from a ComfyUI node, no ElevenLabs account anywhere in sight. ElevenLabsTextToSpeech landed in core back in February 2026 as part of the partner-node rollout, and it's the workhorse of the whole ElevenLabs audio group. Text goes in, spoken audio comes out, and the voices are the ones you've heard in a thousand YouTube narrations and game trailers.
The catch, such as it is, is the architecture. This is a partner node: it doesn't run a model on your GPU. It forwards your text to ElevenLabs' hosted models through Comfy's API proxy and gets an audio file back. You don't need an ElevenLabs API key - you log in with your Comfy account (Settings → User; API-key login if your setup isn't whitelisted) and pay from prepaid credits (Settings → Credits). The node's price badge shows an approximate per-character cost, and that number drifts, so budget by mechanism, not by today's sticker.
The inputs that matter
- voice - the one you'll forget. It takes an
ELEVENLABS_VOICE, which is not a dropdown: you wire it in from ElevenLabsVoiceSelector (pick from 21 predefined voices) or ElevenLabsInstantVoiceClone (your own samples). The node won't run until a voice is connected - the classic first-run stumble. - text - what to speak, any length but keep it sane; you're billed per 1,000 characters.
- stability - 0 to 1, default 0.5. Lower gives broader emotional range (more expressive, wobblier), higher gives consistent but flatter delivery. If the voice sounds bored, drop it; if it sounds unstable, raise it.
- model -
eleven_multilingual_v2oreleven_v3. Picking one reveals its sub-parameters: speed (0.7–1.3), similarity_boost, and on the v2 model a style slider that exaggerates delivery at the cost of stability. - language_code - ISO-639-1 or 639-3 like
en,es,fra. Empty means auto-detect, which is usually right. - apply_text_normalization, seed, output_format (mp3 or opus) - leave the first on
auto, seed is best-effort (determinism is explicitly not guaranteed on their side), and mp3 is fine for almost everything.
Output and wiring
Single AUDIO output into Preview Audio to hear it or Save Audio (Advanced) to keep it. Because it's a real audio signal, you can chain it - concat lines, run it through an equalizer, or even round-trip it back through ElevenLabsSpeechToText to verify what was actually said.
Where people get burned
- No voice connected - the most common error, and the error message doesn't hold your hand. Wire a Voice Selector in first.
- Cost creep - character-based billing means long scripts add up fast. Render a short test line before committing to the full script.
- Seed is a suggestion - hosted models don't guarantee reproducible output the way local sampling does. Don't chase the exact same take; that's not a bug on your end.
It ships with ComfyUI core, so there's nothing to install. This is the node to reach for when the narration voice matters and you'd rather spend credits than train a voice.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| voice | ELEVENLABS_VOICE | Voice to use for speech synthesis. Connect from Voice Selector or Instant Voice Clone. | |
| text | STRING | The text to convert to speech. | |
| stability | FLOAT | 0.500–1 | Voice stability. Lower values give broader emotional range, higher values produce more consistent but potentially monotonous speech. |
| apply_text_normalization | COMBO | Text normalization mode. 'auto' lets the system decide, 'on' always applies normalization, 'off' skips it. | |
| model | COMBO | Model to use for text-to-speech. | |
| language_code | STRING | ISO-639-1 or ISO-639-3 language code (e.g., 'en', 'es', 'fra'). Leave empty for automatic detection. | |
| seed | INT | 10–2147483647 | Seed for reproducibility (determinism not guaranteed). |
| output_format | COMBO | Audio output format. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |