Add Instrumental to Music · V5.5
Re-render your song without the singer
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
You have a track with vocals and you want the backing version: karaoke, a backing bed for a cover, or just the same song with the voice taken out. This node is Suno's "Add Instrumental to Music" endpoint at the V5.5 tier, and it does that job with a specific twist you should understand before you spend credits.
It is not stem separation. It doesn't split your file into vocal and instrumental tracks - that's a different KIE endpoint. It takes your source audio as a reference and generates an instrumental version guided by it, with your tags, style_weight and negative_tags steering how close it stays. Sometimes that's better than separation (no watery artifacts, a real mix), sometimes it's worse (the arrangement drifts and your melody isn't the same one). Set expectations accordingly: you're asking a model to re-perform your song.
How it works
This node is one of the classes the pack generates at startup from KIE's official API documentation - one node per documented model version, so V5_5 is hardwired and there is no model dropdown to fiddle with. It builds the documented request body, submits it to KIE's task endpoint (envelope model ai-music-api/add-instrumental, inner model V5_5), polls KIE's record-info endpoint every few seconds until the task reports success, then downloads the resulting mp3 and hands it to you as a native ComfyUI AUDIO. Failures raise with the task id and the provider's message; you won't get a silent empty output.
The inputs that matter
Four are required, and the naming is a little inconsistent with the rest of the Suno family - worth knowing so you don't go looking for a style field that isn't there:
- upload_url - the source audio. The docs are blunt: source audio alone is enough to generate once
title,negative_tagsandtagsare there. It must be a URL reachable by KIE, not a file on your disk, and it does not have to be one you generated with Suno. - title - required, shows up in the player and the filename.
- tags - this is where the style goes (
relaxing, piano, soothingby default). Required. - negative_tags - what to avoid (
heavy metal, fast drums).
Then the dials: style_weight (0–1, default 0.61 - how hard it holds to your tags), weirdness_constraint (0–1, default 0.72), audio_weight (how much the audio features count vs. everything else), variety (0–4, default 1; 0 is "strictly the same" and 4 is "unreasonably varied"), and vocal_gender - meaningless here in practice, since the point is a track without a voice. timeout_seconds defaults to 1200.
Outputs, all seven of them: audio (wire this into Save Audio or anything downstream), url, all_urls_json (the source is entitled to more than one result URL), task_id, raw_json, plus credits_consumed and credits_left - printed on the node itself after each run, which makes it easy to see what a bad habit costs.
Getting your audio in
upload_url is a plain text field, so a local file can't be pasted in directly. The pack ships the fix: KIE • Upload Audio (under KIE Next/Utility/Media) takes a native AUDIO socket and returns a public URL string. Right-click the upload_url field, choose Convert widget to input, and wire that string output into it, and anything in your graph that produces AUDIO can feed this node.
Two limits from the docs worth respecting: source audio for the upload-based endpoints should not exceed 8 minutes, and the file has to be publicly retrievable - a KIE-uploaded file is, a localhost path isn't.
Installing it
Same install as the rest of the pack. ComfyUI Manager, search "KIE Nodes Next"; the README describes registry publication as prepared rather than completed, so the manual route is the reliable one:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
Restart, then Settings → KIE.ai Nodes Next → Connection and paste your key. It's validated before it replaces anything, and only a masked fingerprint ever reaches the frontend. Headless installs can set KIE_API_KEY instead. Windows users can use the one-click installer in dist/. Dependencies are four small libraries and nothing else - no torch, no model downloads.
Where people get burned
- No key configured throws an explicit error naming the settings path - check that first, because a blank key is the most common "the node does nothing" report.
- Mixed installs are refused on startup. If
__init__.pyandnodes/generated.pyare from different releases, the pack refuses to load rather than run stale paid-generation code. Delete the folder, reinstall. - Don't wire a
callback_urlunless you're deliberately running async. Empty is the normal case, and the node waits for the result on its own.
The honest read: if you want the instrumental of a specific track you own, try a separation node first - it's free and it keeps the arrangement. Reach for this when you want a performed backing in a style you choose.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| upload_url | STRING | https://example.com/music.mp3 | URL of the uploaded audio file. Required. Source audio (`upload_url`) is enough to generate once `title`, `negative_tags`, and `tags` are provided. |
| title | STRING | Relaxing Piano | Title of the generated music. Required. Will be displayed in the player interface and file name. |
| negative_tags | STRING | heavy metal, fast drums | Music styles or characteristics to exclude from the generated audio. Required. Used to avoid specific unwanted music elements. |
| tags | STRING | relaxing, piano, soothing | Music styles or tags to include in the generated music. Required. Defines the desired music style and characteristics. |
| vocal_genderopt | COMBO | m | Vocal gender preference. Optional. 'm' for male, 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. |
| style_weightopt | FLOAT | 0.610–1 | Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places. |
| weirdness_constraintopt | FLOAT | 0.720–1 | Controls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places. |
| audio_weightopt | FLOAT | 0.650–1 | Relative weight of audio elements. Optional. Range 0–1, up to 2 decimal places. |
| lyricsopt | STRING | [Verse] Keep the melody flowing Into a gentle bridge [Chorus] Let the piano rise and fall | Lyrics for the generated audio. Optional. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`upload_url`) is enough to generate once `title`, `negative_tags`, and `tags` are provided. |
| varietyopt | INT | 10–4 | Controls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, default 1. - **`0`**: off (exact style) — fully off, strictly the same style - **`1`**: normal (balanced variety) — default, balances stability and diversity - **`2`**: high (distinct styles) — produces results with clearly different styles - **`3`**: extra (bold exploration) — higher variation, encourages bold exploration of different styles - **`4`**: max (unreasonably varied) — maximum diversity; results may differ in style very significantly |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |