ElevenLabs Voice Changer
Swap the voice, keep the performance
- audio
- AUDIO
This is the node that does what "AI voice changer" actually means: you feed it a recording, pick a different voice, and it re-speaks the whole thing in that voice while keeping your pacing, pauses, and delivery. It's speech-to-speech (STS) - not text-to-speech, not a pitch-shift. The words stay your words; only the timbre changes.
How it works
Under the hood it POSTs your audio as a WAV to https://api.elevenlabs.io/v1/speech-to-speech/{target_voice_id} (multipart form, which is a detail the code gets right - a JSON body won't work here), along with the same stability / similarity_boost / style / use_speaker_boost settings the TTS node uses. The API renders your recording in the target voice and returns audio, which comes back as a standard ComfyUI AUDIO tensor.
That means the input has to be actual audio in the graph first - anything that produces an AUDIO socket works: a file loader, the TTS node from this same pack, a clip you've isolated. No way around it, the whole point is a source recording.
Inputs worth your time
audio- the source recording with the performance you want to keep.target_voice- dropdown of your account's voices, same "Name (voice_id)" format as the TTS node.model- default iseleven_english_sts_v2; switch toeleven_multilingual_sts_v2for non-English, oreleven_turbo_v2when latency matters more than polish.stability/similarity_boost- how consistent the output is and how hard it matches the target voice. Same defaults as TTS (0.5 / 0.75), same logic.style(optional) anduse_speaker_boost(default on) - the expressiveness and clarity dials.
Output: one AUDIO socket. Preview it, save it, or feed it onward.
Install
Same pack as everything else in this repo: ComfyUI Manager → search "Elevenlabs-ComfyUI", or
cd ComfyUI/custom_nodes
git clone https://github.com/karthikg-09/Elevenlabs-ComfyUI.git
cd Elevenlabs-ComfyUI && pip install -r requirements.txt
then restart. The only real dependency beyond what ComfyUI already ships is requests. Find the node under Add Node → ElevenLabs.
Gotchas
The voice dropdown caches for an hour, and it auto-refreshes when you change the api_key - if you just cloned a voice and it's not showing, run once and Reload Node, or use the pack's Refresh Voices node. Failed runs land in the ComfyUI console with full request logging, not on the canvas. And the one thing nobody should need said: don't swap someone's voice without permission - voice cloning and re-voicing are exactly the axis ElevenLabs (and everyone sane) asks you to police yourself on.
Where this shines: you recorded a line you love but hate your voice, you want a character to sound different in every scene without re-recording, or you need a consistent narrator voice over a batch of old clips. Where it doesn't: it's a per-call cloud service, so every swap costs credits, and it won't clean up bad audio for you - that's the Voice Isolator's job, which pairs nicely right before this node.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | Your ElevenLabs API key - voices auto-refresh when changed | |
| audio | AUDIO | — | |
| target_voice | COMBO | 21 options: Roger - Laid-Back, Casual, Resonant (CwhRBWXzGAHq8TQ4Fs17), Sarah - Mature, Reassuring, Confident (EXAVITQu4vr4xnSDxMaL), Laura - Enthusiast, Quirky Attitude (FGY2WhTYpPnrIDTdsKH5), Charlie - Deep, Confident, Energetic (IKne3meq5aSn9XLyUdCD), George - Warm, Captivating Storyteller (JBFqnCBsd6RMkjVDRZzb), Callum - Husky Trickster (N2lVS1w4EtoT3dr4eOWO), +15 | |
| model | COMBO | eleven_english_sts_v2 | 3 options: eleven_english_sts_v2, eleven_multilingual_sts_v2, eleven_turbo_v2 |
| stability | FLOAT | 0.500–1 | — |
| similarity_boost | FLOAT | 0.750–1 | — |
| styleopt | FLOAT | 0.000–1 | — |
| use_speaker_boostopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |