Nodes/KIE.ai Nodes Next/elevenlabs/audio-isolation
ComfyUI Node

elevenlabs/audio-isolation

Pulling a Voice Out of a Messy Track

By felipederosilva·Created about a month ago·Updated about 22 hours ago· 3
elevenlabs/audio-isolation
  • audio_url
  • audio
  • url
  • all_urls_json
  • task_id
  • raw_json
  • credits_consumed
  • credits_left
◄timeout_seconds1200►
◄callback_url►

This one does exactly one thing: you give it audio, it gives you the voice with the rest stripped away. No settings, no model choice, no stems - just the isolated speech. When that's the job, it's the shortest path in the pack. When what you wanted was stems, you're on the wrong node.

Where it fits

Audio in ComfyUI is the awkward corner: the models are good, the plumbing is a permanent workaround, and dependency conflicts are the default failure mode - that's the KB's summary of the state of play in audio-generation.md. This node sidesteps all of that by not running a model locally at all. It hands your audio to ElevenLabs' isolation service through KIE's marketplace and gives you back a clean voice track.

Realistic uses: cleaning a field recording or a phone interview before you caption it for a dataset; lifting a vocal out of a rough demo to check the lyric before you write more of it; stripping a track down so a dubbing or TTS pass isn't fighting a music bed. If you want the instrumental side or separate drums/bass, the pack has a stem separation node - different tool.

The provider here is ElevenLabs, which the KB's panel calls the reliability and language bar for voice specifically - closed, commercial, and the thing every open model is measured against. You're paying for that consistency, and your audio leaves your machine.

Inputs and outputs

One required input: audio_url, which in this pack is a native AUDIO socket, not a text field. The pack uploads whatever you connect and passes KIE the file URL itself - URL plumbing is hidden, which is the whole design promise of this pack's media handling.

Optional: timeout_seconds (default 1200, 30–7200, step 30) and callback_url (leave empty for normal ComfyUI use; the node polls instead of relying on a webhook).

Outputs: audio - a decoded ComfyUI AUDIO object, ready for a Save Audio node or another audio node. Plus url, all_urls_json, task_id, raw_json, and the credits_consumed / credits_left floats with a credits receipt stamped on the node.

The trap nobody warns you about: size

KIE's documentation for this endpoint specifies a 10 MB maximum upload and a list of accepted types (mpeg, wav, x-wav, aac, mp4, ogg). Here's the catch: the pack uploads your connected audio as 16-bit PCM WAV - it converts the ComfyUI audio object to WAV bytes before uploading, regardless of what you loaded. A 44.1 kHz stereo 16-bit WAV runs about 176 KB per second, so 10 MB is roughly 55–60 seconds of audio.

That's fine for a clip, tight for a song. If you feed it a full track and the upload is rejected, the size limit is why - trim to the section you actually need rather than concluding the node is broken. Mono or a lower sample rate buys you proportionally longer.

How it works

It's a KIE Market task: the node uploads the audio, submits a createTask with the model elevenlabs/audio-isolation, polls until completion, then downloads and decodes the result into ComfyUI's AUDIO format. Results are archived under output/KIE-Results/audio/ with content-addressed names, so a completed isolation survives temp cleanup and app restarts - and decoding falls back from torchaudio to PyAV if your build lacks one.

Install

ComfyUI Manager → ComfyUI-KIE-Nodes-Next; the README has Registry publishing as prepared rather than shipped, so:

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
cd ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt

Restart, then Settings → KIE.ai Nodes Next → Connection. Python 3.10+, requests/Pillow/numpy/PyYAML. Decoding uses torchaudio or PyAV, both of which normally ship with ComfyUI.

Common issues

Upload rejected on a long track. See the 10 MB / ~60-second WAV math above.

"Connect an audio input". audio_url is a socket. A path or URL typed into a promoted widget won't do; load the file with an audio loader and wire it in, or use KIE • Upload Audio if you already have a URL.

Isolation quality varies with the source. Music beds and reverb-heavy recordings are harder than clean dialogue. Removing a loud backing track tends to leave artefacts; that's the model, not your node settings.

Task succeeds, decode fails. Rare, and it's a local problem - the error names the URL. Update ComfyUI so torchaudio/PyAV are current.

Metered per call, every time. Including a re-run of the same clip. Cheap by video standards, not free, and the receipt is on the node.

Audio leaves your machine. Obvious, but it's the actual trade: you're buying a hosted service's quality instead of running a local separator you'd have to install and keep working.

CategoryKIE Next/Audio/ElevenLabs/Audio Isolation

Inputs (3)

NameTypeDefaultDescription
audio_urlAUDIO—
timeout_secondsoptINT120030–7200—
callback_urloptSTRINGOptional KIE callback URL. Leave empty for normal ComfyUI use.

Outputs (7)

NameTypeDescription
audioAUDIO—
urlSTRING—
all_urls_jsonSTRING—
task_idSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
credits_leftFLOAT—