Kling Video to Audio
Pull a soundtrack out of any clip
- auth
- audio
- url
- task_id
You just generated a Kling video and it's stunning and completely silent - because Kling's video models don't ship audio by default unless you ask for it. Kling Video to Audio is the fix: it takes a video and hands you back an audio track that fits the footage. Sometimes that means the original sound pulled out of the clip; more often it means the model generating ambient audio to match what's on screen. Either way, the output drops straight into your graph as an AUDIO tensor, ready to wire into a saver, a mixer, or a lip-sync chain.
This is one of the genuinely useful "bolt-on" audio nodes, and it slots into the wider point that audio was bolted onto the video ecosystem rather than born with it - video got good first, sound came second. If you're assembling a finished short in ComfyUI, this is how the silent clip gets its soundtrack without leaving for an external editor.
The one input that matters
Just two required inputs: auth (the KLING_AUTH from Kling AI Authentication) and video_url. And that second one is the whole game - it must be a publicly reachable URL, exactly like Kling Video Omni's reference video input. This is where people trip:
- The URL can point at Kling's own hosted result - grab the
urloutput from a previous Kling video node and feed it straight in. Clean loop, no extra steps. - If your clip is a local file, this node can't see it. Use the pack's Kling AI Cloud Uploader to host it and paste the returned URL, or chain the
urloutput from the node that made the video. - Don't paste a local path or a
file://URL - the API will reject it or silently produce nothing.
What comes out
- audio - the track as an AUDIO tensor. Wire it into a save/preview audio node or a video saver that accepts audio (like the pack's Kling Fast Video Saver or any local AV saver).
- url - the hosted audio URL Kling returned, if you need it outside the graph.
- task_id - mostly for bookkeeping and debugging.
Like every API node in this pack, it runs on the shared mechanics: the job is submitted, the node polls until it's done (printing status to the console), the audio is downloaded into your output folder, and IS_CHANGED guarantees a fresh job every queue. No GPU needed, and no local model - it's a paid Kling API call, so a soundtrack per clip costs credits.
Installing
ComfyUI Manager, search "API Toolkit", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-API-Toolkit
cd ComfyUI-API-Toolkit
pip install -r requirements.txt # requests + PyJWT is all Kling needs
For the audio tensor to actually hold sound, make sure torchaudio is present in your environment - if it's missing, the pack degrades to a silent placeholder with a console warning rather than failing loudly. That's the one troubleshooting check that trips people up the most.
The honest caveat: this is a closed model behind an API, so whatever's in your clip goes up to Kling's servers to be analyzed, and Kling's content moderation applies. For a job that's mostly "give my silent AI video a soundtrack," that's a fair trade - just know what you're shipping out of the machine.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| auth | KLING_AUTH | — | |
| video_url | STRING | URL of the video to extract audio from. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| url | STRING | — |
| task_id | STRING | — |