Nodes/KIE.ai Nodes Next/Generate sounds · V5.5
ComfyUI Node

Generate sounds · V5.5

KIE Generate sounds · V5.5 is a sound-effect node hiding under the music menu

By felipederosilva·Created about a month ago·Updated about 22 hours ago· 3
Generate sounds · V5.5
    • audio
    • url
    • all_urls_json
    • task_id
    • raw_json
    • credits_consumed
    • credits_left
    ◄promptsint►
    ◄sound_looptrue►
    ◄sound_tempo166►
    ◄sound_keyD#m►
    ◄grab_lyricstrue►
    ◄timeout_seconds1200►
    ◄callback_url►

    You want a four-second riser, a whoosh, or a looping ambient bed to sit under a clip. That job lives in "Generate sounds", and this node is KIE's version of it, pinned to Suno's V5.5 tier.

    Don't read the KIE Next/Audio/Suno path as "song generator". The audio layer in ComfyUI splits into three unrelated jobs - voice, music/sound design, and audio-driven video - and this is squarely the middle one, and specifically the designed sound half of it. Stable Audio is the local tool for that; MMAudio and HunyuanVideo-Foley do the video-conditioned version. This node takes text only. No video input, no lip sync, no foley matching. What it gives you is throwaway sound you don't want to install a model to make.

    How it works

    Like every model node in this pack, this class was generated from KIE's official API docs at startup, and one KIE page that publishes several model versions gets split into one node per version. That's why there's no model dropdown here: V5_5 is baked into the class, and the · V5.5 in the display name is the only place it shows.

    Under the hood it does three things. It builds the documented request body and POSTs it to KIE's task endpoint with the envelope model ai-music-api/sounds; it polls KIE's record-info endpoint every ~2.5 seconds (backing off toward 15) until the task reports SUCCESS; then it downloads the returned mp3 and decodes it into ComfyUI's native AUDIO type. If the task fails, it raises with the task id and the provider's message instead of handing you an empty socket.

    The inputs that matter

    • prompt (required) - what the sound is. The docs cap it at 500 characters, which is also what the tooltip says.
    • sound_loop - "is it a cycle?" On by default. Keep it on for beds you intend to repeat.
    • sound_tempo - 1 to 300, default 166. Same caveat as any AI loop: give it your edit's actual BPM or it will drift against whatever you lay it under.
    • sound_key - 24 choices: twelve minor (Cm … Bm) and twelve major (C … B), defaulting to D#m. This is the one setting people ignore and then wonder why the loop fights the music.
    • grab_lyrics - the docs' own words: "whether to capture the lyrics subtitles". For a sound effect it's a curious field; leave it as shipped unless you actually want the lyric text back.
    • timeout_seconds - default 1200. Leave it. callback_url - leave it empty.

    Outputs: audio is the one you wire into a Save Audio node or anything else expecting AUDIO. url, all_urls_json, task_id and raw_json are there for logging and for feeding other KIE nodes. credits_consumed and credits_left are floats - the node also prints them on itself, and credits_left of -1 just means KIE's balance service didn't answer.

    Installing it

    ComfyUI Manager, search "KIE Nodes Next" - but note the README still describes registry publication as prepared rather than done, so if Manager turns up nothing, clone it:

    cd ComfyUI/custom_nodes
    git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
    pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
    

    Then restart. That's the whole install: four small libraries (requests, Pillow, numpy, PyYAML). No torch, no checkpoints, no CUDA. Compared to local audio stacks, where dependency conflict is the default failure mode, this is refreshingly boring - the tradeoff is that every call costs KIE credits and your prompt leaves your machine.

    On Windows there's a one-click .vbs installer in the repo's dist/ folder that finds your ComfyUI, backs up an older copy, and sets up dependencies. Then set the key once: Settings → KIE.ai Nodes Next → Connection, paste it, and confirm you see the masked fingerprint and the CONNECTED status. A server or headless install can use the KIE_API_KEY environment variable instead, which takes priority.

    Where it goes wrong

    • "No KIE API key configured" - the key never got saved. The node tells you the exact settings path in the error, which is more than most packs manage.
    • Version mismatch on startup - the pack refuses to run if __init__.py and nodes/generated.py come from different releases. Delete the whole ComfyUI-KIE-Nodes-Next folder and reinstall rather than patching it. Related: if you're on an older 0.3.0 Windows install, the 0.3.1 installer quarantines stale backups that used to sit inside custom_nodes and get loaded as live nodes.
    • A timeout doesn't mean the job died. The node stops listening at timeout_seconds; KIE may still finish the task. Before re-running, check the credits.
    • V5.5 is marked Discontinued in KIE's docs. It still runs, but if you're starting fresh, the V6 sibling of this node is the live tier.

    If this sound feeds a video workflow, the free win is to leave the generated AUDIO in a bypassed branch, audition it, and only wire it into your assembly once you like it. Sound design is easy to over-generate, and the node won't stop you.

    CategoryKIE Next/Audio/Suno

    Inputs (7)

    NameTypeDefaultDescription
    promptSTRINGsintSound task type limit: 500 characters
    sound_loopoptBOOLEANtrueIs it a cycle?
    sound_tempooptINT1661–300Do not broadcast.
    sound_keyoptCOMBOD#m24 options: D#m, Cm, C#m, Dm, Em, Fm, +18
    grab_lyricsoptBOOLEANtrueWhether to capture the lyrics subtitles Will the interface be called after completion to obtain the lyrics subtitles?
    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—