Groq Audio
Hosted Whisper transcription with timestamps, zero setup
- transcription
- metadata
You generated a video, you have a voiceover file, and now you need the words - for subtitles, for a caption, or just to re-prompt from the transcript. Setting up a local Whisper install for that is a whole afternoon you don't want to spend. Groq Audio sidesteps it: point the node at a file path, and Groq's hosted Whisper transcribes it over the API. Fast, no model download, no VRAM, and it hands you timing data if you ask for it.
It's the audio sibling in the Groq Nodes pack, and it shares the family DNA: a thin wrapper around a Groq API endpoint, with retries and error handling so a flaky call doesn't kill your workflow.
How it works
One important detail up front: this node takes a file path, not an audio signal. You type (or wire in) a path like C:\voiceovers\intro.m4a, and the node opens that file and POSTs it to Groq's audio.transcriptions endpoint - the hosted Whisper service that runs whisper-large-v3 and its turbo variant. The file has to exist on the machine running ComfyUI, at a path the server process can read. That's the whole mechanism; nothing is loaded into the graph.
The inputs that matter
- audio_path - the file to transcribe. mp3, wav, m4a, etc. The node validates that the path exists and is a file before it calls out, so a typo fails fast with "Audio file not found: …".
- model -
whisper-large-v3(default) orwhisper-large-v3-turbofor the speedier variant. - language - optional ISO code like
enores. Leave empty and it auto-detects, which is usually fine but can stumble on code-switched audio. - prompt - optional hint for style ("This is a tech podcast; capitalize proper nouns"), the standard Whisper guiding trick.
- response_format - the choice that matters for how useful the output is:
json,text, orverbose_json. - temperature - 0–1, defaults to 0. Keep it low; transcription doesn't need creativity.
The two outputs are transcription (the plain text) and metadata (a JSON string). Here's where verbose_json pays off: switch to it and metadata includes a segments array with start/end timestamps per segment, plus word-level timings when available. That's your subtitle timing, ready to feed into an SRT-builder or an editing workflow. In plain json mode you still get duration and detected language.
Installing it
Standard for this pack. ComfyUI Manager → search "Groq Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/brayevalerien/ComfyUI-GroqNodes
cd ComfyUI-GroqNodes
pip install -r requirements.txt
Restart, then give it a GROQ_API_KEY (env var, .env, or the node's own api_key field). Dependencies are the usual light set - groq, aiohttp, Pillow, numpy, python-dotenv - and there are no model files to fetch.
Common issues
The recurring one is the path. If you drag a file into ComfyUI's uploader, that's not a path the node can see unless you know where the server stores uploads - this node wants a real, absolute filesystem path. Errors come back as text in the transcription output ("Configuration error…" / "Error transcribing audio: …"), so read the output before blaming the file. Audio files can be chunky, so keep an eye on upload time for long recordings, and remember the free tier's rate limits apply here too. It's a cloud call: your audio leaves the machine, so don't transcribe anything you'd be embarrassed to have a third party hear.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_path | STRING | — | |
| model | COMBO | whisper-large-v3 | 2 options: whisper-large-v3, whisper-large-v3-turbo |
| api_keyopt | STRING | — | |
| languageopt | STRING | — | |
| promptopt | STRING | — | |
| response_formatopt | COMBO | json | 3 options: json, text, verbose_json |
| temperatureopt | FLOAT | 0.00–1 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| transcription | STRING | — |
| metadata | STRING | — |