Nodes/KIE.ai Nodes Next/Vocal & Instrument Stem Separation
ComfyUI Node

Vocal & Instrument Stem Separation

Split a track you can't touch locally

By felipederosilva·Created 2 months ago·Updated a day ago· 3
Vocal & Instrument Stem Separation
    • audio
    • url
    • all_urls_json
    • task_id
    • raw_json
    • credits_consumed
    • credits_left
    ◄stem_namePiano►
    ◄task_id5c79****be8e►
    ◄audio_ide231****-****-****-****-****8cadc7dc►
    ◄typeseparate_vocal►
    ◄timeout_seconds1200►
    ◄callback_url►

    What it does

    KIE_Next_Vocal_Instrument_Stem_Separation_e6bf6488 asks KIE to pull a track apart: vocals from accompaniment, or a full multi-instrument split, or a finer split of one named instrument. It's the utility node of this pack rather than a generator - you don't give it a prompt, you give it a track that already exists, and you get stems back as audio.

    The reason it lives in a Suno-flavoured pack is that its most natural input is a song you just generated. You make a track with Generate Music · V6, decide the instrumental would work better under a video than the vocal version, and instead of re-prompting (and paying again for something similar), you separate the audio you already own and keep both halves. Same for the reverse: pull the vocal out to study a melody, or to reuse it over a different backing. If you have a local separator you trust, use it - this is for when the source track is on KIE's side already, or when you want the split to happen inside the same graph. It's a metered API call, so it costs credits.

    How it works

    The node submits the separation request to KIE's task queue and then waits for it, polling every 2.5 seconds and backing off toward 15 until the job resolves, inside a timeout_seconds window that defaults to 1200 and can go up to 7200. When it's done, the audio is downloaded and decoded into ComfyUI's AUDIO format. Nothing runs locally - no VRAM, no model files - and the job's spend shows on the node when it completes.

    Inputs, including the awkward part

    • stem_name - the only required field, an enum with around a hundred options from Piano and Lead Vocal to Bagpipes and Didgeridoo. Here's the wrinkle: the docs say it's only used when type is split_stem_advanced. So in the common case you will be forced to pick a value that is then ignored. The author's tooltip says exactly that, and it's a schema artifact rather than a bug - the upstream docs mark it required.
    • type - what kind of split you want, defaulting to separate_vocal: two tracks, vocals and accompaniment. split_stem gives you multiple instrument tracks. split_stem_advanced lets stem_name actually select an instrument to isolate.
    • task_id - the reference to the audio you want separated. Take it from the earlier generation node's task_id output.
    • audio_id - optional, and useful when the source task produced more than one track: it names the specific one you want split.

    Both task_id and audio_id are marked optional in the schema even though a call without them has nothing to work on, so don't read that listing as "leave them blank."

    Outputs, and the trap

    audio - decoded native ComfyUI audio. url - the primary result URL. all_urls_json - this is the output that matters here. A vocal/instrumental split returns two tracks, split_stem returns several, and the audio socket only carries the first one it finds. If you asked for stems and only got one, you didn't lose them; you need to read all_urls_json and download the rest (the KIE • Download File node takes a URL and writes it to disk). Also on the node: task_id, raw_json with the complete provider response, and credits_consumed / credits_left.

    The pack ships follow-on nodes for this family too - Get Vocal Separation Details for the per-track ids, and the MIDI nodes if you want the separated audio turned into MIDI.

    Install

    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 ComfyUI afterwards. Dependencies are requests, Pillow, numpy and PyYAML - no separation models to download, no GPU dependency, since the work happens on KIE's machines. Windows users can use the one-click installer in the repo's dist/ folder instead. Registry metadata ships under publisher felipeosilva, so ComfyUI Manager support is the direction of the project; the clone is what works today.

    Then paste your KIE.ai API key once in Settings → KIE.ai Nodes Next → Connection. It's validated before it replaces a stored key and shown only as a masked fingerprint; KIE_API_KEY in the environment takes priority for headless setups.

    Common issues

    A missing or wrong task_id is the usual failure - and remember it's the generation task, not a track id. If you only get one file back, check all_urls_json before assuming anything broke. Timed-out jobs are often still running; poll the task_id with KIE • Task Status or leave KIE • Wait for Task on it rather than re-submitting and paying for the same separation twice. And if the source track itself was generated moments ago, give it a beat - KIE occasionally takes a few seconds after a task reports success to finish persisting its results.

    CategoryKIE Next/Audio/Suno/Stems

    Inputs (6)

    NameTypeDefaultDescription
    stem_nameCOMBOPianoOnly used when `type` is `split_stem_advanced` to request a specific stem track/instrument name.
    task_idoptSTRING5c79****be8e—
    audio_idoptSTRINGe231****-****-****-****-****8cadc7dc—
    typeoptCOMBOseparate_vocalSeparation type, options: - **separate_vocal**: Separate vocals and accompaniment, generating a vocal track and an instrumental track. - **split_stem**: Separate various instrument sounds, generating multiple instrument tracks. - **split_stem_advanced**: Advanced multi-track separation, supporting the specification of a particular instrument track to generate finer instrument tracks.
    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—