Replace Music Section · V4.5
The ten-second minimum nobody reads
- audio
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Two numbers on this node decide whether it works: infill_start_s and infill_end_s. The window has to be at least ten seconds wide, and start must be before end. That's it, that's the whole trap - and it's the reason a lot of first attempts at "just fix this one line" fail, because one line is not ten seconds.
What it is
KIE_Next_V4_5_5ef3a450 replaces a time window inside a song you already generated, using Suno's V4.5 provider version through KIE.ai. The pack generates one node per KIE Market operation and provider version, so V4.5 is its own class - the version is pinned in the node, not chosen in a dropdown.
V4.5's own selling point in KIE's notes is "smarter prompts, faster generation, and supports durations of up to 8 minutes", and it's listed as deprecated now, like the rest of the V4 family. In practice that means: use it to repair or extend an existing V4.5-era track, and use the V6 node for new work.
How it works
Infill. You give it the source track's identity, a time window, the new content for that window, and the full lyric sheet as it should read afterwards. KIE re-renders the window in the context of the surrounding audio and returns a complete track - not a stem, not a patch file. The rest of the song is preserved because the model was conditioned on it.
The transport is the pack's standard one: assemble the request, submit, poll until timeout_seconds (1200 by default), download the first result into a ComfyUI AUDIO, and put credits spent and remaining on the node face. Nothing runs on your hardware; Suno is closed weights, which is exactly the job the API keeps winning even with ACE-Step doing good work locally.
Source identification is task_id (the parent generation task) plus audio_id (the specific track inside it). Both are technically optional; both are what tell the provider which song you mean, so in practice wire them. Your music-generation node's task_id socket connects directly, and the audio ID comes out of that task's raw_json.
The fields that matter
The window: infill_start_s and infill_end_s, in seconds, two decimals, start < end, gap ≥ 10. A chorus is usually 15–30 seconds, so a chorus replacement is comfortable; a single word is impossible.
full_lyrics (required) is the complete lyric sheet after the edit - replaced lines plus untouched ones. lyrics (optional) is only the replacement segment. If you're going to get one field wrong on this node, this is the pair to slow down on; sending a full sheet that only contains the new part makes the model think the song is that part.
Required prompt, tags, title: a short description, a style tag string, and a name. negative_tags is the exclusion list and defaults to Rock, so if the replaced section is inexplicably guitar-free you know where to look. variety (0–4, default 1) governs how far the new section may stray; style_weight, weirdness_constraint and audio_weight are 0–1 dials at 0.65 by default, and moving them all at once is how you lose track of what helped.
persona_id/persona_model won't do anything here - KIE documents personas for V5 and newer.
Outputs
audio is a full track: Save Audio, or into KIE • Assemble Video + Music to score a clip. Its task_id is a new task, so you can chain another replacement window. Plus url, all_urls_json, raw_json, credits_consumed, credits_left. Because it isn't an output node, hook the audio to something or the node won't execute at all.
Installing it
ComfyUI Manager → search "KIE.ai Nodes Next", or:
comfy node install kie-ai-nodes-next
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt
Restart, then Settings → KIE.ai Nodes Next → Connection and paste the key - validated before it overwrites a working one, masked afterwards, and never written to workflow JSON. Environment-variable keys aren't supported. Dependencies are light (requests, Pillow, numpy, PyYAML) and there are no weights to download.
Where people get burned
Window too small. Ten seconds minimum, and the pack's local preflight catches it before upload - a free rejection, which is the good kind.
Full lyric sheet, wrong song. Covered above.
Expecting surgical precision on a four-minute track. V4.5 is the version with the 8-minute ceiling so length isn't your problem here, but the model still rewrites the seam. Listen to the join; if it lurches, rerun with variety lowered rather than stacking a second replacement window on top.
Thinking you can undo it. Each run is billed, and the original is only recoverable if you kept the task_id - which is what KIE • Reuse Completed Image/Video/Audio is for.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A calm and relaxing piano track. | The lyrics after replacement. Required. |
| tags | STRING | Jazz | Style tags for the music, such as jazz or electronic. Required. |
| title | STRING | Relaxing Piano | The title of the music. Required. |
| infill_start_s | FLOAT | 10.500–10000 | The point in time, in seconds, at which replacement starts, rounded to 2 decimal places. Required. Must be less than infill_end_s, and the difference between infill_end_s and infill_start_s must be at least 10 seconds. |
| infill_end_s | FLOAT | 20.750–10000 | The point in time, in seconds, at which replacement ends, rounded to 2 decimal places. Required. Must be greater than infill_start_s, and the difference between infill_end_s and infill_start_s must be at least 10 seconds. |
| full_lyrics | STRING | [Verse 1]\nOriginal lyrics content\n[Chorus]\nModified lyrics for this section\n[Verse 2]\nMore original lyrics | The complete modified lyrics, combining the modified and unmodified lyrics. Required. This parameter contains the complete lyrics text that will be used for the entire song after section replacement. |
| task_idopt | STRING | 2fac****9f72 | The original task ID (parent task), used to identify the source music for section replacement. |
| audio_idopt | STRING | e231****-****-****-****-****8cadc7dc | The unique identifier of the audio track to be replaced. This ID is returned in the callback data after music generation is completed. |
| negative_tagsopt | STRING | Rock | Music styles to exclude, used to prevent specific stylistic elements from appearing in the replacement section. |
| lyricsopt | STRING | [Chorus]\nModified lyrics for this section | Lyrics for the replaced segment. Optional. - V6, V6_MINI, and V6_WILD: Maximum 5000 characters. |
| 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 |
| 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.650–1 | Adherence strength to specified style. Optional. Range 0–1, up to 2 decimal places. |
| weirdness_constraintopt | FLOAT | 0.650–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. |
| persona_idopt | STRING | persona_123 | Persona ID or Voice ID to apply to the generated music. Optional. Use this to apply a specific persona style to your music generation. To generate a Persona ID, use the [Generate Persona](https://docs.kie.ai/suno-api/generate-persona) endpoint to create a personalized music Persona based on generated music. To generate a Voice ID, use the [Generate Voice](https://docs.kie.ai/suno-api/suno-voice-generate) endpoint. |
| persona_modelopt | COMBO | style_persona | Persona model. Optional. Use `style_persona` for Generate Persona IDs, or `voice_persona` for Suno Voice IDs. Default: `style_persona`. Available for V5 (Discontinued), V5_5 (Discontinued), V6, V6_MINI, and V6_WILD. |
| upload_urlopt | STRING | https://example.com/audio.mp3 | The URL of the custom audio uploaded by the user. |
| 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 | — |