Gemini Audio Analyzer Unified (Creepybits)
Ask Gemini what's actually in your audio file
- audio
- text
Audio is the neglected corner of the AI image world, so a node that can describe what's in a sound file is rarer than it should be. Gemini Audio Analyzer takes an AUDIO tensor - anything a ComfyUI audio-loader node produces, like a video's soundtrack or a dialogue track - and has Google's Gemini model analyze it. Output is a text description: what's being said, what's playing, what mood the sound is in. You wire the text output into a prompt, a captioning step, or any text consumer.
The most practical use is description and captioning: feed it a generated video's audio, get a natural-language description back, and reuse that as a prompt for the next pass. The default system prompt ("You are a professional audio analyst") and user instruction ("Describe the audio input in detail") hint at the intended job, and both are editable text boxes you can replace with your own instructions.
How it works
Under the hood it's the same Gemini dance as the pack's text node, but with real audio preprocessing. The incoming waveform is normalized to mono, resampled to 16 kHz if needed (via torchaudio), then written out as a WAV into memory and sent to the model as an audio part. Gemini's flash models can genuinely listen to that - they're multimodal in a way that includes sound.
The model dropdown is a tour of Gemini versions: gemini-2.0-flash, gemini-2.0-flash-lite, the 2.5 flash-lite and flash previews, and gemini-2.0-flash-exp. Any of them can describe audio; the 2.5 previews are the newer ones.
Inputs that matter
system_promptanduser_instructions- your instructions, both editable.audio- the AUDIO input from a loader. Required in practice for a useful answer.max_output_tokens,temperature,thinking_mode,safety_threshold- same knobs as the text Gemini node; temperature defaults lower (0.4) here, which is right for a description task.
One output: text.
The gotcha that will eat your afternoon
The API key path is hardcoded to the author's own machine:
API_CONFIG_PATH = r"C:\AI\Comfy\ComfyUI\custom_nodes\Creepy_nodes\assets\scripts\api_keys_config.json"
Unless your ComfyUI lives at exactly C:\AI\Comfy\... - it almost certainly doesn't - api_key_selection will show "Config not found" and every run returns Error: Gemini API key not found. Fix: open GeminiAudioAnalyzer.py, change API_CONFIG_PATH to the real path of your api_keys_config.json (the repo ships a sample at assets/scripts/api_keys_config.json), and put your keys in it in the same "Name": "path\to\keyfile.txt" format as the pack's other Gemini node.
Also note it expects a real AUDIO tensor. It won't take a file path or an image - connect it to an audio source or it will run with no content and just return a generic "please provide analysis" response.
Installing it
It's in ComfyUI-Creepy_nodes:
- ComfyUI Manager: search "Creepy_nodes" and install.
- Manual:
cd ComfyUI/custom_nodes git clone https://github.com/Creepybits/ComfyUI-Creepy_nodes.git
Restart ComfyUI. Dependencies: google-genai for the API call, plus torchaudio for resampling - both are in the pack's requirements.txt (torchaudio usually comes with ComfyUI's environment already).
Troubleshooting
Beyond the key path: if your audio is a video's soundtrack, keep it short - very long audio uploads are slower and costlier per run. And same as the text node, API errors come back as plain strings in the text output rather than graph errors, so glance at the output before piping it into a prompt encoder. If your results are weirdly generic, the resample-to-mono step is doing its job - mono 16 kHz is all Gemini needs to understand content.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| system_prompt | STRING | You are a professional audio analyst. | — |
| user_instructions | STRING | Describe the audio input in detail. | — |
| model | COMBO | 5 options: gemini-2.0-flash, gemini-2.0-flash-lite, gemini-2.5-flash-lite-preview-09-2025, gemini-2.5-flash-preview-09-2025, gemini-2.0-flash-exp | |
| api_key_selection | COMBO | 1 options: Config not found | |
| audioopt | AUDIO | — | |
| max_output_tokensopt | INT | 20481–8192 | — |
| temperatureopt | FLOAT | 0.40–1 | — |
| thinking_modeopt | COMBO | disable | 2 options: disable, enable |
| safety_thresholdopt | COMBO | Block None | 4 options: Block None, Block Low, Block Medium, Block High |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |