Civitai Audio Captioning
Turn audio into text for training sets, without captioning it by hand
- media_url
- api_config
- results
- workflow_id
- raw_json
The image side of this hobby has a captioning problem and it's solved: you run a VLM over your training images and get captions. The audio side has the same problem and far fewer tools. Civitai Audio Captioning is the pack's answer - it runs ACE-Step's understanding over an audio clip (or a zip of clips) and returns a text description. If you're building an audio LoRA training set or just need a searchable description of a sound, this saves you from a very tedious afternoon.
What it is
A recipe node under Civitai/Audio that submits an audioCaptioning job. It's thin on inputs and thick on delegation: the captioning runs on Civitai's fleet, so there's no local captioning model to install.
Inputs: media_url (an AUDIO socket - the tooltip says "the URL of the audio file or zip archive to caption," and the pack uploads whatever audio tensor you feed it), plus temperature and max_new_tokens, which the tooltip frames as shared settings for "both ACE-Step requests" - the model runs two passes internally, and these tune sampling for each.
Outputs: results (a STRING - the caption text), plus the pack-standard workflow_id and raw_json.
Where it fits
The captioning-job framing from the KB's LLM-in-ComfyUI essay applies here with the medium swapped: captions feed training sets, and caption quality is what your LoRA actually learns from. For audio, the ecosystem's captioning story is thinner than for images (no JoyCaption equivalent in the KB's audio-generation doc), so a hosted captioner is a genuinely useful shortcut - especially for ACE-Step LoRA training, where you need consistent text descriptions of each track.
The honest use case, though, is "I need captions and I don't want to write them." If you have a few dozen clips, typing one line each is arguably faster than wiring up credentials and spending Buzz. Where this node shines is scale: a zip archive in, batch captions out, without running a GPU or fighting a local audio-CLIP setup.
Install & gotchas
Standard pack install - ComfyUI Manager (search Civitai Comfy Nodes), comfy node registry-install civitai-comfy-nodes, or git clone + pip install -r requirements.txt.
Worth knowing before you rely on it:
- It's metered per call, and it's a cloud round-trip of your audio. The clip uploads to Civitai's fleet. For private or unreleased material, weigh that data flow; for random foley it's a non-issue.
temperatureandmax_new_tokensdefault to 0. That's a deterministic, minimal output by default - raisemax_new_tokensfor longer descriptions, and nudgetemperatureif every caption comes back suspiciously terse.- Auth required, as with every node here.
CIVITAI_API_TOKEN, stored OAuth, or a wiredCivitai Authnode. No key, no caption.
The results output is a plain STRING, so it wires into anything downstream that wants text - a file writer for a training dataset, a log node, or a prompt builder. That's the whole trick: caption once, reuse everywhere.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| media_url | AUDIO | The URL of the audio file or zip archive to caption. | |
| temperature | FLOAT | 0.000–2147483647 | Sampling temperature for both ACE-Step requests. |
| max_new_tokens | INT | 00–2147483647 | Maximum number of tokens to generate for each ACE-Step request. |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| results | STRING | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |