ElevenLabs Pro - Text to Dialogue
A whole cast of voices from one node — up to 10 speakers
- audio
One voice is a narrator. Two voices are a conversation. ElevenLabsPro_Dialogue is the pack's multi-speaker TTS node, and it's the one you reach for when you need a scripted back-and-forth - a podcast skit, a two-character scene, an audio drama - without stitching separate TTS calls together and praying the pacing lines up. It sends your whole cast to ElevenLabs' /v1/text-to-dialogue endpoint in one request and gets back a single, coherent audio take.
The shape of the node is the story: text1 + voice_id1 are required, and text2 through text10 with matching voice_id2 through voice_id10 are optional. Each numbered pair is one speaker's line and one voice. Leave a pair empty and it's simply skipped, so you can start with two speakers and grow the cast without rewiring. The model dropdown currently has one entry - eleven_v3 - because that's what the dialogue endpoint supports; the node validates the total concatenated text length against v3's 5,000-character limit before it spends anything, so a too-long script fails fast instead of failing at the API.
Beyond the speakers, the shared settings are the familiar TTS knobs: stability (0.5 default), language (defaults to Auto Detect), seed, enable_logging (flip off for zero-retention / privacy-sensitive work), and output_format - which here is a deliberately short two-option list, mp3_44100_192 or opus_48000_192. Notice that both are the higher-tier formats; if you're on a free plan, this node may fail on format grounds regardless of the model. apply_text_normalization defaults to "off" because v3 requires it, and the node enforces that.
Mechanically it's a single POST with your speaker list bundled as inputs, the shared settings alongside, and the response decoded back into one AUDIO dict. Because it's an InputCacheMixin node, identical inputs are cached by hash and a re-queue won't re-bill you - change one speaker's text, and you pay for the whole scene again. That's worth internalizing before you iterate on script edits.
Install is the pack standard:
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-ElevenLabs-Pro.git
pip install -r ComfyUI-ElevenLabs-Pro/requirements.txt
Restart ComfyUI, or install "ComfyUI-ElevenLabs-Pro" via ComfyUI Manager. Requirements are just requests and soundfile; no models to download.
Where people get burned: forgetting that this is one bill for the whole dialogue - multi-speaker generation is priced by the combined character count, not per speaker, so a ten-speaker scene gets expensive fast. Run the Cost Estimator on the full script text first if that matters. And a small workflow note: the output is a single mixed take, not per-speaker tracks. If you need to duck the music under one speaker, or swap a single voice in post, you'd want per-line TTS calls instead - Dialogue is for the "give me the finished scene" case, and it's very good at that one job.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| text1 | STRING | Speaker 1 text. | |
| voice_id1 | STRING | Speaker 1 voice ID. | |
| model | COMBO | eleven_v3 | 1 options: eleven_v3 |
| text2opt | STRING | — | |
| voice_id2opt | STRING | — | |
| text3opt | STRING | — | |
| voice_id3opt | STRING | — | |
| text4opt | STRING | — | |
| voice_id4opt | STRING | — | |
| text5opt | STRING | — | |
| voice_id5opt | STRING | — | |
| text6opt | STRING | — | |
| voice_id6opt | STRING | — | |
| text7opt | STRING | — | |
| voice_id7opt | STRING | — | |
| text8opt | STRING | — | |
| voice_id8opt | STRING | — | |
| text9opt | STRING | — | |
| voice_id9opt | STRING | — | |
| text10opt | STRING | — | |
| voice_id10opt | STRING | — | |
| stabilityopt | FLOAT | 0.500–1 | Voice stability. Lower = more expressive/emotional, Higher = more consistent/monotone. Creative(<0.5), Natural(0.5), Robust(>0.5). |
| apply_text_normalizationopt | COMBO | off | eleven_v3 requires 'off' — keeping default. |
| languageopt | COMBO | Auto Detect | 33 options: Auto Detect, English (en), Arabic (ar), Bulgarian (bg), Chinese (zh), Croatian (hr), +27 |
| output_formatopt | COMBO | mp3_44100_192 | Audio output format. mp3_44100_192 and opus require Creator tier+. |
| seedopt | INT | 00–4294967295 | Seed for reproducibility. 0 = random. Determinism not guaranteed. |
| enable_loggingopt | BOOLEAN | true | If False, requests zero-retention mode (audio + text not stored by ElevenLabs). Required for HIPAA / privacy-sensitive content. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |