ElevenLabs Pro - Speech to Speech
Rename that voice recording into somebody else's
- audio
- audio
You recorded the line, but the client wants it in the other voice. ElevenLabsPro_STS is the pack's Speech-to-Speech node: it takes an AUDIO input, keeps the content and emotion, and re-renders it in a target voice. It's the difference between dubbing (re-recording) and voice conversion (re-voicing what's already there), and it's the node that makes "record once, audition ten voices" a real workflow instead of a fantasy.
The mechanism is a multipart POST to /v1/speech-to-speech/{voice_id} with your audio uploaded as a WAV, your voice settings attached, and the converted result decoded back into an AUDIO dict. Two models are on offer: eleven_multilingual_sts_v2 (default, handles many languages) and eleven_english_sts_v2 (English-only). The node shares the familiar tuning family - stability, similarity_boost, style, speed, use_speaker_boost - plus two STS-specific touches: remove_background_noise (a one-click denoise during conversion) and enable_logging (flip off for zero-retention / privacy-sensitive audio).
Required inputs are api_key, audio, voice_id (the target voice - connect the Voice Selector or Get Voice By Name output), and model. One output, audio.
The workflow that makes this node shine: record your read once, then fork the output into several STS nodes, each aimed at a different voice. Same performance, three auditions, one recording session. It also pairs with Audio Isolation - clean the recording first, then convert, because STS converts what it's given and it can't fix what the isolation would've caught. And it sits naturally in a dubbing pipeline: original audio in, target-language-capable STS out.
A few honest caveats. It bills by the amount of audio processed, and a multi-minute file is a real line item - trim what you don't need before you send it. The content-fidelity dials interact: cranking similarity_boost toward 1 gets you closer to the target voice but risks artifacts, and the tooltip says exactly that. And because it's an InputCacheMixin node, the cache fingerprints audio by shape, sample rate, and a few sample values - good enough to stop re-billing identical clips, but the practical rule stands: don't re-queue expecting a free redo of a different take.
Install is the pack standard:
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-ElevenLabs-Pro.git
pip install -r ComfyUI-ElevenLabs-Pro/requirements.txt
Restart ComfyUI, or install "ComfyUI-ElevenLabs-Pro" via ComfyUI Manager. Only requests and soundfile - conversion happens in ElevenLabs' cloud.
The one thing that trips people up: the voice_id here is the voice you're converting into, not the one you're leaving. Sounds obvious, but after a long session of wiring voice selectors everywhere, it's exactly the input people flip around - and the results are unmistakable (and billed) when they do.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| audio | AUDIO | — | |
| voice_id | STRING | Target voice ID. | |
| model | COMBO | eleven_multilingual_sts_v2 | 2 options: eleven_multilingual_sts_v2, eleven_english_sts_v2 |
| stabilityopt | FLOAT | 0.500–1 | Voice stability. Lower = more expressive/emotional, Higher = more consistent/monotone. Creative(<0.5), Natural(0.5), Robust(>0.5). |
| similarity_boostopt | FLOAT | 0.750–1 | How closely AI adheres to the original voice. Too high may introduce artifacts. |
| styleopt | FLOAT | 0.000–1 | Style exaggeration. Increases expressiveness but reduces stability. Recommended: 0 for most use cases. |
| speedopt | FLOAT | 1.000.5–2 | Speech speed. 1.0 = normal, <1.0 = slower, >1.0 = faster. |
| use_speaker_boostopt | BOOLEAN | true | Boost similarity to original speaker. Increases latency slightly. |
| output_formatopt | COMBO | mp3_44100_128 | Audio output format. mp3_44100_192 and opus require Creator tier+. |
| seedopt | INT | 00–4294967295 | Seed for reproducibility. 0 = random. Determinism not guaranteed. |
| remove_background_noiseopt | BOOLEAN | false | — |
| enable_loggingopt | BOOLEAN | true | If False, requests zero-retention mode (audio + text not stored by ElevenLabs). Required for HIPAA / privacy-sensitive content. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |