ElevenLabs - Text to Speech
The ElevenLabs Text to Speech node, tuned like the API itself
- audio
- raw_response_info
This is the workhorse. Give it text and a voice, it calls ElevenLabs' text-to-speech endpoint and hands back real audio - an AUDIO output you can feed into a save node, a video soundtrack, or a lip-sync stage. ElevenLabs is still the community's standing bar for reliable, multilingual production TTS, and this node exposes nearly the whole API surface, so you get the good stuff without leaving ComfyUI.
The inputs that actually matter when you start:
text- what to say. With v3 models you can drop in performance tags like[whispers],[laughs],[excited], and the model acts on them. That's the single biggest jump from older TTS: emotion is in the prompt, not just the settings.voice_id- wire this fromAIS_EL_VoiceSelectororAIS_EL_FetchVoices. Don't hand-type voice IDs.model- defaults toeleven_v3, the current flagship. The list includes multilingual and the cheaper, fastereleven_flash_v2_5/eleven_turbo_v2_5tiers for drafts. If you're iterating on a script, the flash models save real money.stability- lower means more expressive and emotional, higher means consistent and monotone. The tooltip gives the working ranges: under 0.5 creative, 0.5 natural, above 0.5 robust. Start at the default and only move it when a read sounds off.similarity_boost- how hard the model sticks to the original voice. Crank it and you risk artifacts; the 0.75 default is a sane starting point.style- exaggeration. The tooltip's advice is right: leave it at 0 for most work.
Beyond that there's a long tail worth knowing exists: speed (0.5–2.0), language (33 options, Auto Detect by default), output_format (mp3, wav, and pcm variants - note the higher-bitrate mp3 and opus formats need Creator tier+), seed, and previous_text / next_text for keeping flow natural when you split a long script across calls. use_pvc_as_ivc handles a niche voice-clone wrinkle, and pronunciation_dictionary_locators takes JSON if you've built pronunciation dictionaries to fix proper nouns.
Outputs: audio (AUDIO) and raw_response_info (STRING) with the request details for debugging.
Installing it
One of fifteen ElevenLabs nodes in ComfyUI API Toolkit. Manager: search "API Toolkit". Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-API-Toolkit
cd ComfyUI-API-Toolkit
pip install -r requirements.txt
Restart. Needs requests and soundfile; missing deps disable only that service.
Gotchas
- ElevenLabs bills per character and your text leaves the machine. For private or high-volume narration, the open models (Chatterbox, F5-TTS, Kokoro) have genuinely closed the gap - this node is the right call when you need the reliability and language coverage, not when you need free.
- The pack sets IS_CHANGED on every API node, so each queue hits the API fresh - which means each queue also burns characters. Iterating on a long script with flash models is the budget move.
- Keep
similarity_boostunder ~0.85 on cloned voices; past that you trade expressiveness for warbly artifacts.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| text | STRING | Text to convert to speech. Supports v3 audio tags like [whispers], [laughs], [excited]. | |
| voice_id | STRING | Voice ID. Connect from Voice Selector or Fetch Voices node. | |
| model | COMBO | eleven_v3 | 8 options: eleven_v3, eleven_multilingual_v2, eleven_flash_v2_5, eleven_turbo_v2_5, eleven_flash_v2, eleven_turbo_v2, +2 |
| stabilityopt | FLOAT | 0.500–1 | Voice stability. Lower = more expressive/emotional, Higher = more consistent/monotone. Creative(<0.5), Natural(0.5), Robust(>0.5). |
| similarity_boostopt | FLOAT | 0.750–1 | How closely AI adheres to the original voice. Too high may introduce artifacts. |
| styleopt | FLOAT | 0.000–1 | Style exaggeration. Increases expressiveness but reduces stability. Recommended: 0 for most use cases. |
| speedopt | FLOAT | 1.000.5–2 | Speech speed. 1.0 = normal, <1.0 = slower, >1.0 = faster. |
| use_speaker_boostopt | BOOLEAN | true | Boost similarity to original speaker. Increases latency slightly. |
| languageopt | COMBO | Auto Detect | Language for the model. Auto Detect lets the model decide. |
| apply_text_normalizationopt | COMBO | auto | Text normalization: 'auto' = model decides, 'on' = always normalize, 'off' = skip. |
| output_formatopt | COMBO | mp3_44100_128 | Audio output format. mp3_44100_192 and opus require Creator tier+. |
| seedopt | INT | 00–4294967295 | Seed for reproducibility. 0 = random. Determinism not guaranteed. |
| previous_textopt | STRING | Text that came BEFORE this segment. Helps maintain natural flow across chunks. | |
| next_textopt | STRING | Text that comes AFTER this segment. Helps the model anticipate pacing. | |
| use_pvc_as_ivcopt | BOOLEAN | false | Use IVC version of a Professional Voice Clone. |
| pronunciation_dictionary_locatorsopt | STRING | JSON array of {"pronunciation_dictionary_id": ..., "version_id": ...} objects. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| raw_response_info | STRING | — |