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

ElevenLabs Pro - Voice Clone

Clone a voice from eight clips — and remember to flip the switch

By IxMxAMAR·Created 5 months ago·Updated about a month ago· 1
ElevenLabs Pro - Voice Clone
  • audio1
  • audio2
  • audio3
  • audio4
  • audio5
  • audio6
  • audio7
  • audio8
  • voice_id
  • status
api_key
voice_nameMy Cloned Voice
createfalse
description
remove_background_noisefalse

Instant voice cloning: you feed it a handful of audio clips and, a few seconds later, you've got a voice_id that can read anything in that voice. No training queue, no waiting overnight. It's one of the three voice-building nodes in ComfyUI-ElevenLabs-Pro (Clone, Design, Create), and it's the one that trips up basically everyone once.

Here's the trap: the node does nothing until you flip create to True. It ships with create=False on purpose, and the status output will cheerfully tell you DRY-RUN: would clone 'My Cloned Voice' from 3 samples while handing you an empty voice_id. That's not a bug. It's a safety gate - older versions of this pack burned a voice slot and credits on every queue prompt, which is a great way to empty your ElevenLabs account while testing. So: set up your samples, flip create to True when you actually want to upload, and re-queue.

How it works

The node converts each ComfyUI AUDIO input to a WAV and sends a multipart POST to /v1/voices/add - one files part per sample, up to eight of them (audio1 is required, audio2 through audio8 are optional). It can pass a name, an optional description, and a remove_background_noise flag. The API responds with a voice_id, which is your passport for every TTS node in the pack.

Two outputs: voice_id (empty on dry-run, real after a successful clone) and status (a string saying what actually happened). Wire voice_id into any TTS node's voice_id input and you're done.

The inputs that matter

  • create - the one you'll forget. False by default, must be True to upload.
  • voice_name - what the clone is called in your library. You'll recognize it later.
  • audio1 (plus audio2–8) - the samples. Quality here is everything: this is instant cloning, not professional cloning, so there's no training to clean up your mess. Use short, clean, single-speaker clips - same mic, same room, no music, roughly 30 seconds to 2 minutes total. More good samples beat one perfect one.
  • remove_background_noise - worth enabling if your source is a podcast or a phone recording with hum.

A quick reality check on expectations: instant clones are fast and surprisingly good, but they inherit whatever's in your samples. A raspy voice with room echo will stay raspy with room echo. The "describe a voice from scratch" alternative - the Voice Design node in the same pack - is the better tool when you don't have reference audio at all.

Install

ComfyUI Manager → search ComfyUI-ElevenLabs-Pro → Install → restart. Manual:

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

Restart ComfyUI after. Dependencies are only requests and soundfile; there are no model files to download because everything runs on ElevenLabs' servers. You'll need an API key - ELEVENLABS_API_KEY env var or pasted into the api_key field, which is masked and scrubbed from logs and workflow metadata.

Where people get burned

The dry-run status confusing you is the big one. The other classic: feeding it long, messy audio and getting a clone that drifts. And if a re-queue doesn't seem to re-run, that's the input-hash cache working - identical samples and settings won't re-bill you. Tweak a sample or the name when you genuinely want a fresh clone.

CategoryElevenLabs Pro/Voice

Inputs (13)

NameTypeDefaultDescription
api_keySTRING
voice_nameSTRINGMy Cloned VoiceName for the cloned voice.
audio1AUDIO
createBOOLEANfalseMUST be True to actually create the voice. Default False prevents accidental credit/slot burn on workflow re-queue.
audio2optAUDIO
audio3optAUDIO
audio4optAUDIO
audio5optAUDIO
audio6optAUDIO
audio7optAUDIO
audio8optAUDIO
descriptionoptSTRINGDescription of the voice.
remove_background_noiseoptBOOLEANfalse

Outputs (2)

NameTypeDescription
voice_idSTRING
statusSTRING