Nodes/ComfyUI-ElevenLabs-Pro/ElevenLabs Pro - Text to Speech
ComfyUI Node

ElevenLabs Pro - Text to Speech

The full ElevenLabs TTS front door, minus the jank

By IxMxAMAR·Created 5 months ago·Updated about a month ago· 1
ElevenLabs Pro - Text to Speech
    • audio
    • raw_response_info
    api_key
    text
    voice_id
    modeleleven_v3
    stability0.50
    similarity_boost0.75
    style0.00
    speed1.00
    use_speaker_boosttrue
    languageAuto Detect
    apply_text_normalizationauto
    output_formatmp3_44100_128
    seed0
    previous_text
    next_text
    use_pvc_as_ivcfalse
    enable_loggingtrue
    pronunciation_dictionary_locators

    This is the node the whole pack is named for, and it's the one you'll reach for when you want ElevenLabs-quality narration inside a ComfyUI graph instead of bouncing between a browser tab and your editor. Text to Speech takes a string, a voice ID, and a model, and returns a decoded AUDIO tensor plus a JSON blob about the call. ElevenLabs' API has every parameter exposed here - which is genuinely rare for a ComfyUI wrapper, most integrations give you five knobs and hide the rest.

    The mechanism is straightforward: it POSTs to /v1/text-to-speech/{voice_id} with your voice_settings bundled in, then decodes whatever bytes come back into ComfyUI's AUDIO format (PCM is decoded directly as int16 so it works even without an MP3 decoder; wav/mp3/opus go through soundfile first with a torchaudio fallback). What makes this node worth your time is what it does before the request: it validates text length against the model's limit, and it knows the API's quirks so you don't have to. Pick eleven_turbo_v2_5 or eleven_flash_v2_5 without an explicit language and it stops you before the inevitable 422; eleven_v3 silently forces text normalization to "off" because that's the only value the flagship accepts.

    The three inputs you can't skip:

    • text - supports v3 expression tags right in the prompt, so [whispers] or [laughs] actually do something.
    • voice_id - connect the Voice Selector node's output here (or Fetch Voices / Get Voice By Name).
    • model - default eleven_v3. Character limits differ per model: 5,000 for v3, 10,000 for multilingual v2, up to 40,000 for the flash/turbo lines.

    After that, the tuning knobs most people actually set: stability (lower = more expressive, higher = more consistent monotone), similarity_boost (closer to the original voice, but too high introduces artifacts), speed (0.5–2.0), and output_format. The formats list has a gotcha baked into its tooltip: mp3_44100_192 and the opus options require Creator tier or better, so on a free plan they'll fail with a permission error that reads like a mystery until you remember tier limits.

    There are also two context-only fields, previous_text and next_text, that are easy to misread. They don't generate audio - they give the model the surrounding text so you can chunk a long script without losing pacing. The tooltips are explicit about this, and it matters: people who skip them end up with per-paragraph reads that don't sound like one continuous narration.

    Outputs are audio (wire it to Save Audio, a preview, Audio Concat, or any audio consumer) and raw_response_info, a JSON string with model, voice, format, byte count, and character count - handy for logging or a quick cost check.

    Install is the usual clone-and-pip, and it's light:

    cd ComfyUI/custom_nodes
    git clone https://github.com/IxMxAMAR/ComfyUI-ElevenLabs-Pro.git
    pip install -r ComfyUI-ElevenLabs-Pro/requirements.txt
    

    Then restart ComfyUI, or use ComfyUI Manager to install "ComfyUI-ElevenLabs-Pro". Only requests and soundfile in requirements - no models to download, the synthesis happens on ElevenLabs' side. You'll want an API key in the node or the ELEVENLABS_API_KEY env var.

    The big gotcha, same as every paid node in this pack: it's billed per character, and it's cached by input hash so identical inputs don't re-bill on re-queue. That cache was the whole point of the v2.1 rewrite - v2.0 re-billed you on every single queue. Change any input and you pay again, so make your text edits before you hit queue, not after.

    CategoryElevenLabs Pro/TTS

    Inputs (18)

    NameTypeDefaultDescription
    api_keySTRING
    textSTRINGText to convert to speech. Supports v3 audio tags like [whispers], [laughs], [excited].
    voice_idSTRINGVoice ID. Connect from Voice Selector or Fetch Voices node.
    modelCOMBOeleven_v38 options: eleven_v3, eleven_multilingual_v2, eleven_flash_v2_5, eleven_turbo_v2_5, eleven_flash_v2, eleven_turbo_v2, +2
    stabilityoptFLOAT0.500–1Voice stability. Lower = more expressive/emotional, Higher = more consistent/monotone. Creative(<0.5), Natural(0.5), Robust(>0.5).
    similarity_boostoptFLOAT0.750–1How closely AI adheres to the original voice. Too high may introduce artifacts.
    styleoptFLOAT0.000–1Style exaggeration. Increases expressiveness but reduces stability. Recommended: 0 for most use cases.
    speedoptFLOAT1.000.5–2Speech speed. 1.0 = normal, <1.0 = slower, >1.0 = faster.
    use_speaker_boostoptBOOLEANtrueBoost similarity to original speaker. Increases latency slightly.
    languageoptCOMBOAuto DetectLanguage for the model. Auto Detect lets the model decide. NOTE: turbo/flash v2.5 models require an explicit language.
    apply_text_normalizationoptCOMBOautoText normalization mode. eleven_v3 is auto-forced to 'off' (the only valid value for that model).
    output_formatoptCOMBOmp3_44100_128Audio output format. mp3_44100_192 and opus require Creator tier+.
    seedoptINT00–4294967295Seed for reproducibility. 0 = random. Determinism not guaranteed.
    previous_textoptSTRINGContext only — text that came BEFORE this segment. Does NOT generate audio for this text. Used for seamless chunking across long inputs.
    next_textoptSTRINGContext only — text that comes AFTER this segment. Does NOT generate audio for this text. Used so the model can anticipate pacing.
    use_pvc_as_ivcoptBOOLEANfalseUse the IVC version of a Professional Voice Clone.
    enable_loggingoptBOOLEANtrueIf False, requests zero-retention mode (audio + text not stored by ElevenLabs). Required for HIPAA / privacy-sensitive content.
    pronunciation_dictionary_locatorsoptSTRINGJSON array of {"pronunciation_dictionary_id": ..., "version_id": ...} objects.

    Outputs (2)

    NameTypeDescription
    audioAUDIO
    raw_response_infoSTRING