Nodes/ComfyUI-ElevenLabs-Pro/ElevenLabs Pro - TTS with Timestamps
ComfyUI Node

ElevenLabs Pro - TTS with Timestamps

ElevenLabs TTS that hands you the subtitles too

By IxMxAMAR·Created 5 months ago·Updated about a month ago· 1
ElevenLabs Pro - TTS with Timestamps
    • audio
    • timestamps_json
    api_key
    text
    voice_id
    modeleleven_v3
    stability0.50
    similarity_boost0.75
    output_formatmp3_44100_128
    seed0
    enable_loggingtrue

    Most of the time TTS gives you audio and you're done. This node is for the times when audio is only half the deliverable - you want every word lined up against a clock, so you can burn an SRT, sync a dub, or fake a karaoke track. It's the with-timestamps variant of the pack's plain Text to Speech node, and it hands you both the speech and the timing map in one shot.

    It's one of the 26 nodes in ComfyUI-ElevenLabs-Pro, a cloud-API wrapper: nothing runs locally, every run bills ElevenLabs credits by character. The pack's answer to that is caching - this node inherits the input-hash cache, so re-queuing a workflow with identical text, voice, and settings won't re-bill you. That's the difference between "tuning a workflow" and "tuning a workflow with a meter running."

    How it works

    Under the hood it posts to /v1/text-to-speech/{voice_id}/with-timestamps, decodes the base64 audio back into a ComfyUI AUDIO tensor, and serializes the API's alignment dict (characters plus start/end times in seconds) into the timestamps_json string. Two outputs: audio and timestamps_json. The intended wiring is timestamps_json straight into the pack's Subtitle Export (SRT/VTT) node - the pair is basically a "type text, get a .srt file" machine.

    A subtle detail worth knowing: with eleven_v3 the pack forces text normalization off. That's deliberate - it's what lets v3 expression tags like [whispers] pass through un-mangled. If you've never used those, the pack also has a Voice Tag Inserter node to type them for you.

    The inputs that matter

    • text - what gets spoken. Watch the model's character cap: eleven_v3 tops out at 5,000, eleven_multilingual_v2 at 10,000, the flash/turbo models at 30,000–40,000. The node validates length for you.
    • voice_id - required, and the most common failure: it's empty until you connect a Voice Selector or Fetch Voices node (or type a raw ID).
    • model - defaults to eleven_v3, the flagship. Use eleven_multilingual_v2 for non-English, or the turbo/flash models when you want speed and don't need tags.
    • stability / similarity_boost - the two dials this node exposes (the full TTS node has more; this one trades knobs for the alignment output). Lower stability = more expressive, higher similarity = truer to the voice, too high = artifacts.
    • output_format - default mp3_44100_128 is fine. Note the tooltip: mp3_44100_192 and opus need a Creator tier account or higher.
    • enable_logging - flip to False for zero-retention mode (audio and text not stored by ElevenLabs), which matters for privacy-sensitive/HIPAA content.
    • seed - set for reproducibility, with the honest caveat that determinism isn't guaranteed.

    Install

    ComfyUI Manager → search ComfyUI-ElevenLabs-Pro → Install → restart. Or the manual route:

    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. Dependencies are just requests and soundfile - no model downloads, because this is an API wrapper. You need an ElevenLabs account and API key: set the ELEVENLABS_API_KEY env var or paste it into the node's api_key field (it's masked, and the pack scrubs it from errors, logs, and workflow PNG metadata).

    Where people get burned

    Empty voice_id errors are the #1 newbie stop, followed by forgetting the model's character limit on long scripts. If a re-queue is mysteriously cheap, that's the cache doing its job. And if you expected per-word timestamps but got a wall of JSON, remember: that string is the input to Subtitle Export, not something you're meant to read. Feed it downstream and the whole thing clicks.

    CategoryElevenLabs Pro/TTS

    Inputs (9)

    NameTypeDefaultDescription
    api_keySTRING
    textSTRINGText to convert to speech with timing information.
    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.
    output_formatoptCOMBOmp3_44100_128Audio output format. mp3_44100_192 and opus require Creator tier+.
    seedoptINT00–4294967295Seed for reproducibility. 0 = random. Determinism not guaranteed.
    enable_loggingoptBOOLEANtrueIf False, requests zero-retention mode (audio + text not stored by ElevenLabs). Required for HIPAA / privacy-sensitive content.

    Outputs (2)

    NameTypeDescription
    audioAUDIO
    timestamps_jsonSTRING