ElevenLabs TTS
The best voices money can rent
- audio
ElevenLabs is the TTS service people pay for when they need voices that don't sound synthesized. This node puts that behind a ComfyUI node: you give it text, a voice ID, and some knobs, and it calls ElevenLabs' API and hands you back a Comfy AUDIO output. It's the "client wants a narration and it has to be good" option in this pack - the most configurable, and the most expensive.
How it works
The node POSTs to https://api.elevenlabs.io/v1/text-to-speech/{voice_id} with your text and settings, gets back an audio file in your chosen format, and decodes it into a waveform tensor with its sample rate. All the model inference happens at ElevenLabs; your machine only reshapes the audio into something ComfyUI can play and save.
The inputs that matter
- text - what gets spoken.
- voice_id - this is the string ID of a voice from your ElevenLabs account (default is a classic preset). You grab it from the ElevenLabs voice library or dashboard - it's the 20-ish character string, not the friendly name. If you have a cloned voice you paid to create, this is where it goes.
- model_id - pick your tier.
eleven_multilingual_v2is the quality default;eleven_flash_v2_5andeleven_turbo_v2_5are the fast/cheap ones;eleven_v3is the newest flagship. - output_format - a long list of mp3/pcm bitrates, e.g.
mp3_44100_128. The 44.1kHz mp3 options are the safe pick; the pcm ones are for when you need lossless. - stability / similarity_boost / style / use_speaker_boost - these are ElevenLabs' voice character sliders. Stability keeps the voice steady (higher = more robotic but consistent), similarity_boost sticks closer to the reference voice, style adds emotion. Start at the defaults (0.5) and nudge one at a time - they interact.
- speed -
0.25to2.0, default1.0. - seed / api_key - seed for ComfyUI re-runs; key in the field or as a
.envvariable name (XI_API_KEY).
There are also two optional inputs you'll rarely use: previous_text and next_text, which give the model surrounding context for more consistent pronunciation across separate calls.
The output
One AUDIO output. Feed it to a preview or save node and you're set.
Installing it
This node ships in the Aryan185/ComfyUI-ExternalAPI-Helpers pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Aryan185/ComfyUI-ExternalAPI-Helpers.git
cd ComfyUI-ExternalAPI-Helpers
pip install -r requirements.txt
Restart ComfyUI and look under audio/generation. ComfyUI Manager works too - search "ExternalAPI-Helpers". Nothing model-related downloads; you just need the openai (for audio decoding helpers) and soundfile dependencies from the pack requirements.
You need an ElevenLabs API key from elevenlabs.io. There's a free tier with a small monthly character allowance - enough to test, not enough to narrate a podcast. Paste the key in the field, or set XI_API_KEY in .env (copy .env.example) and reference the variable name.
Where people get burned
The eleven_v3 model is picky about the stability slider: it only accepts 0.0, 0.5, or 1.0, and the node will quietly round your value to the nearest allowed one (it even prints a note telling you what it did). If your workflow feeds a computed stability value in, keep that in mind. Also watch the character budget - ElevenLabs bills per character, and it's easy to blow through a month of free tier on one long test run. And if you see "Voice not found" errors, it's almost always a voice_id from a different account or a stale ID, not a node bug.
For the money, this is the quality pick of the pack's TTS trio. For speed and zero-friction, Groq Orpheus wins. Different jobs.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| model_id | COMBO | 6 options: eleven_v3, eleven_multilingual_v2, eleven_flash_v2_5, eleven_flash_v2, eleven_turbo_v2_5, eleven_turbo_v2 | |
| output_format | COMBO | 19 options: mp3_44100_128, mp3_22050_32, mp3_44100_32, mp3_44100_64, mp3_44100_96, mp3_44100_192, +13 | |
| voice_id | STRING | oPM3trUCF4e0vTcsrMQr | — |
| stability | FLOAT | 0.500–1 | — |
| similarity_boost | FLOAT | 0.500–1 | — |
| speed | FLOAT | 1.000.25–2 | — |
| style | FLOAT | 0.500–1 | — |
| use_speaker_boost | BOOLEAN | true | — |
| seed | INT | 400–4294967294 | — |
| api_key | STRING | Directly put ElevenLabs API key or .env variable name (XI_API_KEY) | |
| previous_textopt | STRING | — | |
| next_textopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |