Add Vocals to Music · V6_WILD
The wilder singer on your backing track
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
What it does
Hand it an instrumental URL, get the same track back with vocals on it. KIE_Next_V6_WILD_6047bf2b runs that job on the V6_WILD model - KIE's line for it is "bolder, more distinctive musical expression" - so it's the version you pick when you want a performance with some attitude rather than a safe, on-grid vocal.
The reason to route this through ComfyUI at all is workflow shape, not novelty. You build the instrumental where you already have control - a local music model, a DAW stem, a loop you assembled - and this node is the step that gives it a voice. You're not trading your whole pipeline for a hosted one, just borrowing the piece that local models are worst at.
Be clear-eyed about what it is, though: an API wrapper. Your backing track goes to KIE's servers, and it needs to be publicly fetchable, so the bed you feed it should be something you're fine uploading.
Mechanism
The node builds the request from the widgets, submits it to KIE's task API, then waits for the result itself: polling at 2.5 seconds, backing off toward 15, inside a timeout_seconds budget of 1200 by default. When the job reports success it downloads the audio and decodes it into ComfyUI's AUDIO type, so a Save Audio node or a video mux downstream treats it as normal. The V6_WILD version goes in the request payload while the outer job envelope uses KIE's market model name for this endpoint - the mismatch pre-0.4.10 builds had, which surfaced as model-level rejections.
Spend is metered in KIE credits and printed on the node after each successful run.
Inputs
Five required fields here, so pick them deliberately:
upload_url- your instrumental, as a URL. Local file → KIE • Upload Audio → paste the returned URL.title- required, cosmetic.negative_tags- required, the exclusion list. Keep it to two or three tags.style- required. The vocal genre. With WILD, an ambitious style is more likely to actually land than it would be elsewhere.prompt- the desired content, and the fallback lyrics whenlyricsis blank.
Optional: lyrics, which takes priority over prompt as lyrics and is where structure tags like [Verse], [Chorus] and [Bridge] belong - for anything more than a scratch take, write these. vocal_gender shifts the odds toward male or female; the tooltip says plainly it can't guarantee anything, and that matches experience. style_weight (0.61), weirdness_constraint (0.72) and audio_weight (0.65) trade off style adhesion, experimentation, and fidelity to your existing audio - for adding vocals, audio_weight is what stops the model wandering off your chord progression. variety (0–4) widens or narrows the distance between the two takes you get back.
Outputs
audio - the sung track, native ComfyUI audio. url - the first result URL. all_urls_json - all URLs in the response; open it, since the second take only exists there. task_id - the job handle, useful for keeping a chain of generations traceable. raw_json - verbatim provider response. credits_consumed and credits_left - what it cost and what's left.
Install and key
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 after the install. The pack's dependencies are requests, Pillow, numpy and PyYAML, and that's the whole footprint - no checkpoints, no downloads, no GPU. There's a one-click Windows installer in the repo's dist/ folder if you'd rather not use a shell. Registry metadata ships under publisher felipeosilva, so Manager support is the direction of travel, but the clone is the dependable path.
Paste your KIE.ai key once in Settings → KIE.ai Nodes Next → Connection. The pack tests it against KIE before replacing a working key and shows only a masked fingerprint; for headless installs, KIE_API_KEY in the environment wins over the saved key.
If something goes wrong
The vocals may not lock to the bed - that's the nature of adding a performance to audio the model didn't write. Push audio_weight up, pull weirdness_constraint down, and describe the style so it agrees with the instrumental rather than contradicting it. If your prompt comes back sung, you left lyrics empty. If the job fails outright, raw_json has the reason; unfetchable URLs and content-filter rejections are the usual two. And if the node times out, the task is frequently still running upstream - check task_id with KIE • Wait for Task instead of paying for a fresh submission.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A calm and relaxing piano track. | Prompt for generating audio. Optional. - Used as lyrics only when `lyrics` is not provided. If `lyrics` is present, `prompt` is not used as lyrics. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. |
| title | STRING | Relaxing Piano | Music title. Required. Will be displayed in the player interface and file name. |
| negative_tags | STRING | heavy metal, strong drum beats | Excluded music styles. Required. Used to avoid including specific styles or elements in the generated music. |
| style | STRING | Jazz | Music style. Required. Such as jazz, electronic, classical and other music types. |
| 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 `style` are provided. |
| 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. - Takes priority over `prompt` as lyrics. If omitted, `prompt` is used as lyrics when provided. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. - Not required. Source audio (`upload_url`) is enough to generate once `title`, `negative_tags`, and `style` 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 | — |