Nodes/ComfyUI-ElevenLabs-Pro/ElevenLabs Pro - Voice Selector
ComfyUI Node

ElevenLabs Pro - Voice Selector

Pick a voice without ever calling the API

By IxMxAMAR·Created 5 months ago·Updated about a month ago· 1
ElevenLabs Pro - Voice Selector
    • voice_id
    voiceRachel (female, american)
    custom_voice_id

    This is the most boring node in the pack, and I mean that as a compliment. ElevenLabsPro_VoiceSelector is a dropdown that spits out a voice ID. That's it. No API call, no credits, no network - it's pure local Python turning a human-friendly name like "Rachel (female, american)" into the opaque voice_id string every other node in this pack wants.

    Why does that even need a node? Because the paid nodes (TTS, Dialogue, Speech to Speech) don't ask you for a voice name - they want the ID, and memorizing those is a fool's errand. This node is the bridge. Wire its voice_id output into any node that has a voice_id input and you're done. It ships with ~43 predefined ElevenLabs voices in the dropdown, from the standard Rachel/Antoni set through the newer additions, so for most beginner setups you never have to think about IDs at all.

    The one input you might actually touch beyond the dropdown is custom_voice_id. Here's the thing about the dropdown: it only contains ElevenLabs' premade voices. If you've cloned your own voice or had one designed, it won't be in that list. Type (or wire in) its ID in custom_voice_id and it takes priority over the dropdown the moment it's non-empty. That's the intended escape hatch, and it's also how you build workflows that parameterize voice by an ID coming from somewhere else in the graph.

    Mechanically it's about as simple as ComfyUI nodes get - the select() method checks whether custom_voice_id is set, and if not, looks the dropdown label up in a hardcoded map and returns the matching ID. If the label somehow isn't in the map, you get a clear error telling you to use a custom ID instead. There's exactly one output, voice_id, and it's a plain STRING, so it can also feed text nodes, cost estimators, or anything else that wants a string.

    Install is the pack-wide one - clone, pip, restart:

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

    Or search "ComfyUI-ElevenLabs-Pro" in ComfyUI Manager. Requirements are just requests and soundfile, and there's nothing to download - this node specifically runs entirely offline, so it's a good first node to play with while you sort out your API key situation.

    Where people get tripped up: they assume the dropdown should list their own cloned voices and conclude the pack is broken. It's not - that's what Fetch Voices and Get Voice By Name are for, both of which hit the API to list your account's voices. If you're choosing between them for a static workflow, Voice Selector is the free, instant, offline option; if you want your library or generated voices, you need one of the API-backed lookups. Also note there's a "(Custom voice_id)" entry in the dropdown itself - it's effectively the "no selection" slot, so pair it with a real ID in custom_voice_id or you'll get an error asking for one.

    CategoryElevenLabs Pro/Voice

    Inputs (2)

    NameTypeDefaultDescription
    voiceCOMBORachel (female, american)43 options: (Custom voice_id), Rachel (female, american), Drew (male, american), Clyde (male, american), Paul (male, american), Domi (female, american), +37
    custom_voice_idoptSTRINGOverride dropdown selection with a custom voice_id. Takes priority if non-empty.

    Outputs (1)

    NameTypeDescription
    voice_idSTRING