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

ElevenLabs Pro - Voice Design

Design a voice with a sentence — no recordings needed

By IxMxAMAR·Created 5 months ago·Updated about a month ago· 1
ElevenLabs Pro - Voice Design
    • preview_audio
    • generated_voice_id
    • all_voice_ids
    api_key
    textHello! This is a preview of the designed voice.
    voice_description
    preview_index0

    This is the fun one. Type a sentence describing a voice - "a weary 50-year-old noir detective, gravelly, mid-Atlantic, talks like he's already solved it" - and ElevenLabs fabricates three previews of that voice from nothing. No samples, no recordings, no cloning. It's the flip side of Voice Clone in ComfyUI-ElevenLabs-Pro: clone needs audio you don't have, design needs only an imagination you do.

    It's the "text-to-voice" designed-voices feature, and yes, it's a paid magic trick - every run bills credits, and it's cached by input hash so identical text + description won't re-bill you on re-queue. Worth it when you want a voice that doesn't belong to any real person (or anyone you have permission to clone).

    How it works

    The node POSTs your text (the sample line the previews will speak) and voice_description to /v1/text-to-voice/create-previews. The API returns three previews, each with its own generated ID and base64-encoded audio (mp3, 44.1k). The pack decodes all of that and gives you:

    • preview_audio - a ComfyUI AUDIO tensor. Which of the three you hear is controlled by preview_index (0–2), defaulting to 0.
    • generated_voice_id - the ID of whichever preview you've selected. This is the one you'll feed into Voice Create.
    • all_voice_ids - all three IDs, newline-separated, so you can re-pick a different preview later without re-describing.

    Pick up one of the pack's example workflows (07_voice_create.json) and you'll see the intended shape: Design → Create → TTS. The previews are throwaway until you run them through Voice Create with create=True - that's the node that saves your chosen preview as a permanent library voice.

    The inputs that matter

    • voice_description - do the work here. Age, gender, accent, tone, register, personality. "Male voice" gives you a generic male voice; "a breathy, soft-spoken female narrator in her 30s with a faint Irish lilt" gives you something you'd actually cast.
    • text - the line the previews speak. It's your chance to hear the voice say something representative before you commit.
    • preview_index - which of the three previews lands on preview_audio and generated_voice_id. Leave at 0, preview, then bump it to audition the others.

    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. Only dependencies are requests and soundfile; nothing to download locally. API key via ELEVENLABS_API_KEY env var or the node's masked api_key field (keys get scrubbed from errors and workflow metadata).

    Where people get burned

    The node raises if either text or voice_description is empty - both are required, and an empty description is the usual offender. The subtler gotcha: the three previews come back in a single API call, so bumping preview_index re-runs that call (and re-bills it) rather than just swapping which preview you hear. Decide on your description once, then audition cheaply. And don't be surprised that nothing persists - persistence is Voice Create's job, not this node's.

    CategoryElevenLabs Pro/Voice

    Inputs (4)

    NameTypeDefaultDescription
    api_keySTRING
    textSTRINGHello! This is a preview of the designed voice.Sample text to generate the preview with.
    voice_descriptionSTRINGDescribe the voice you want: age, gender, accent, tone, etc.
    preview_indexoptINT00–2Which of the 3 previews to expose on preview_audio output (0..2).

    Outputs (3)

    NameTypeDescription
    preview_audioAUDIO
    generated_voice_idSTRING
    all_voice_idsSTRING