Nodes/ComfyUI-ElevenLabs-Pro/ElevenLabs Pro - Voice Tag Inserter
ComfyUI Node

ElevenLabs Pro - Voice Tag Inserter

A dropdown for eleven_v3 expression tags

By IxMxAMAR·Created 5 months ago·Updated about a month ago· 1
ElevenLabs Pro - Voice Tag Inserter
    • text_with_tag
    text
    tagwhispers
    placementprepend

    ElevenLabs' flagship TTS model understands a set of bracket tags - [whispers], [laughs], [sighs], [excited], and two dozen more - that steer how a line gets delivered. ElevenLabs Pro - Voice Tag Inserter is the node that types those tags for you so you stop mistyping [whisper] when the model expects [whispers]. That's the whole job: a text box, a dropdown of 29 tags, a placement choice, and a string out. No API call, no API key, no credits - pure string surgery.

    How it works

    You give it your narration text and pick a tag; it wraps the tag around or onto your text and returns text_with_tag, which you wire into the text input of the pack's Text to Speech node (or any TTS node that accepts the text). Placement has three options:

    • prepend - [whispers] your text (the default; tags apply to what follows)
    • append - your text [whispers]
    • wrap - [whispers] your text [whispers]

    Under the hood it's just f-strings: f"[{tag}] {text}". Don't expect it to validate your grammar - it won't.

    The one thing to actually understand: these tags only mean something to the eleven_v3 model. The pack forces text normalization off for v3 specifically so tags pass through intact - that's the whole reason they work. On the older or turbo/flash models, a [laughs] tag is just literal text that the model may read aloud or ignore. So the natural pairing is: Voice Tag Inserter → Text to Speech with model set to eleven_v3.

    When it's worth reaching for

    Long narration is the killer use case. Writing forty lines of audiobook script and trying to remember whether the tag list has chuckles or giggles mid-flow is exactly the friction this removes - the dropdown has them all (whispers, laughs, sighs, exhales, inhales, excited, sad, angry, happy, scared, shouts, mumbles, groans, coughs, sneezes, yawns, cries, giggles, chuckles, snorts, gasps, screams, cheers, sarcastic, curious, nervous, calm, tired, exhausted). If you're doing a one-off line you can type the tag by hand and skip the node entirely; if you're building a narration pipeline, it's the difference between remembering syntax and not.

    Install

    ComfyUI Manager → search ComfyUI-ElevenLabs-Pro → Install → restart, or:

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

    Restart ComfyUI. Dependencies are just requests and soundfile; nothing downloads locally. And since this node never touches the network, you don't need an API key just to use it - you'll need one the moment you plug its output into TTS, though.

    Where people get burned

    The classic mistake is expecting tags to work on a model that doesn't support them - if your [whispers] comes out as spoken text, check the model, not the node. The other common one is overdoing it: a tag on every sentence reads like a soap opera audition. Use them like seasoning, and let the voice do the rest.

    CategoryElevenLabs Pro/Utils/Text

    Inputs (3)

    NameTypeDefaultDescription
    textSTRING
    tagCOMBOwhispers29 options: whispers, laughs, sighs, exhales, inhales, excited, +23
    placementoptCOMBOprepend3 options: prepend, append, wrap

    Outputs (1)

    NameTypeDescription
    text_with_tagSTRING