ElevenLabs - Voice Clone
Instant voice clone from up to eight audio samples
- audio1
- audio2
- audio3
- audio4
- audio5
- audio6
- audio7
- audio8
- voice_id
You have a recording of someone speaking. You want that voice, exactly, so you can generate new lines in it. That's what this node does: it takes up to eight audio samples, uploads them to ElevenLabs' instant voice cloning, and returns a voice_id for the clone. The clone then works in every TTS node like a normal voice.
Required inputs: api_key, voice_name (what to call the clone), and audio1 - the first sample, as an AUDIO dict from any loader. Then audio2 through audio8 are optional; more samples means a better clone, but one clean sample genuinely works.
The two refinement controls:
description- a freeform description of the voice. Helps ElevenLabs and later-you understand what the clone is.remove_background_noise- clean the samples before cloning. Leave this on for anything recorded outside a studio; a clone inherits everything in its reference audio, including the hum.
One output: voice_id, ready to wire into AIS_EL_TTS or any voice slot in the pack.
How to get a good clone
The quality bar is set by the reference audio, not the model. One clean, direct-into-microphone minute beats three noisy phone recordings. Keep the samples varied in what they say, but consistent in who's speaking - no music, no second person, no dramatic room echo. Run the samples through AIS_EL_AudioIsolation first if you can't re-record. And remember the instant-clone caveat: this is the fast path, which means the clone is good but not studio-perfect; ElevenLabs' professional cloning tier exists precisely when you need more.
Installing it
Part of the ComfyUI API Toolkit pack. Manager: search "API Toolkit". Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-API-Toolkit
cd ComfyUI-API-Toolkit
pip install -r requirements.txt
Restart. Needs requests and soundfile - soundfile converts your AUDIO input to WAV for upload.
Gotchas
- This is the "data leaves the machine, and so does someone's voice" node. Clone only voices you have the right to clone; nonconsensual cloning is exactly the misuse ElevenLabs (and the community) gates hard against, and this pack's terms don't change that.
- Uploading and cloning costs credits per sample, and each queue re-runs the call (IS_CHANGED). Once you've got the
voice_id, remove the clone step from a workflow you re-queue often. - The clone lives in your library and persists - that's the point - so FetchVoices with
force_refreshwill find it later, and your TTS nodes can use it from any workflow.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| voice_name | STRING | My Cloned Voice | Name for the cloned voice. |
| audio1 | AUDIO | — | |
| audio2opt | AUDIO | — | |
| audio3opt | AUDIO | — | |
| audio4opt | AUDIO | — | |
| audio5opt | AUDIO | — | |
| audio6opt | AUDIO | — | |
| audio7opt | AUDIO | — | |
| audio8opt | AUDIO | — | |
| descriptionopt | STRING | Description of the voice. | |
| remove_background_noiseopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| voice_id | STRING | — |