arkennemasis fal · ElevenLabs Audio Isolation · $0.1/min
Pull the voice out of a noisy clip before anything else
- audio
- video
- audio
- audio_path
- timestamps
- info
Every audio pipeline eventually meets a clip that was recorded somewhere real - a room, a street, a car - and everything that comes after it suffers. Transcription gets worse. Dubbing gets worse. Alignment gets worse. If a lip-sync stage is coming, the model gets confused by the music underneath the dialogue and animates a mouth to a beat instead of to words.
Audio Isolation is the node you put first. Give it a voice buried in noise or music and it hands back the voice, alone, with everything else stripped out. It's a cleaning step, not a creative one, and it's the cheapest quality upgrade in the pack.
How it works
It's an ElevenLabs endpoint hosted on fal, wrapped by a generated node. The clip is uploaded to fal's CDN, one billed call strips the audio, and the cleaned file lands in output/fal/fal-ai_elevenlabs_audio-isolation/ with the run logged to output/fal/_requests.jsonl. No local model, no VRAM, which is handy here because separation models are exactly the kind of thing that makes you fight dependency versions locally.
The inputs
There are no required widgets - this node is two sockets and a switch. That's a deliberate shape, and it's also the trap:
audio- the clip to clean.video- a video file to pull the voice out of, so you don't have to extract the track first.
You must connect one of them. The node's own tooltip says it outright: either one must be provided. Connect neither and you get a validation failure, not an empty result. Connect both and it's the audio that matters - nothing in this node's schema says video wins, unlike the dubbing node where the tooltip explicitly gives video priority.
Then the usual fal tail: max_cost_usd (default $20 - irrelevant here), reuse_identical_run, extra_json for fal fields the node has no box for, and max_concurrent for how many paid calls may be in flight at once.
Outputs: audio, audio_path, timestamps, info. timestamps is surfaced because the response schema carries it; what you actually wire is audio - into transcription, dubbing, alignment, or straight to a save node. audio_path feeds the pack's file-based nodes.
Money
$0.10 per minute, billed in fal's minute units. A five-minute interview is fifty cents. It rounds in fal's usual direction, so a 40-second clip is worth checking against a 60-second one if you're doing this at scale - but this is never the expensive step in a pipeline, and the improvement it makes to the next step usually saves more than it costs. A dubbing run at $0.60/min over a cleaned track is money better spent than the same run over a noisy one.
Install
Manager → search comfyui-arkennemasis, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart, then FAL_KEY=your-key in the .env next to run_nvidia_gpu.bat. No model downloads, no Python dependencies for the fal provider - the only entry in the pack's requirements file is httpx, and that's for the ChatGPT-login Codex nodes.
Common issues & troubleshooting
Both sockets empty and the run refuses. By design. Connect audio or video.
It came back as music, or as the wrong person in a crowded room. Isolation separates voices from non-voice content; it is not a speaker separator. With two people talking over each other you get both of them. Dubbing's num_speakers setting exists for that problem, and this node has no equivalent.
The voice sounds thin or underwater afterwards. You've asked it to remove everything that isn't voice, including the room. For a talking head that's fine. For a music video performance, keep a copy of the original and layer.
Re-running the same clip returned the same file for free. reuse_identical_run is on by default. Since cleaning is deterministic-ish, that's the behaviour you want here - turn it off only if the underlying file changed while keeping the same path.
A huge video file takes a while to upload. The upload is free but not instant, and the node shows status while it works. Cancel cancels the fal request too; if ComfyUI dies mid-run, collect the result with fal Recover Result instead of paying again.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| audioopt | AUDIO | URL of the audio file to isolate voice from | |
| videoopt | VIDEO | Video file to use for audio isolation. Either `audio_url` or `video_url` must be provided. | |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| audio_path | STRING | — |
| timestamps | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |