β¨π Groq ALM API - Transcribe
Free Whisper transcription, built into the graph
- transcription_result
- success
- status_code
Unlike some nodes in this pack whose names are aspirational, β¨π Groq ALM API - Transcribe does exactly what the label says - it ships your audio file to Groq, runs it through a Whisper-family model on their hardware, and hands the text back into your graph as a string. No local model, no VRAM, no download. That's the whole appeal: Groq's API is free with fairly generous rate limits, so transcription costs you nothing but a key.
You need a key. Get one at console.groq.com/keys, then set it up inside the pack folder:
cd ComfyUI/custom_nodes/ComfyUI-mnemic-nodes
cp .env.example .env
# then edit .env and set GROQ_API_KEY=gsk_your_real_key
The file must be named .env, no filename, just the extension, sitting in the pack root next to .env.example. Without it you get a raised error telling you to set GROQ_API_KEY - which is at least clearer than a silent 401.
What you feed it
file_path is a string, not an audio tensor. It has to point at a real file on disk - the node checks with a filesystem call and bails out with File not found. (and success: false) if it doesn't. The painless way to fill it is to drop a π Get File Path node next to it and wire full_file_path in; that saves you typing Windows paths by hand.
It also validates the extension before anything is sent, and the allowed list is mp3, mp4, mpeg, mpga, m4a, wav, webm. Worth internalising: .flac, .ogg and .aiff fail locally, immediately, with Unsupported audio format. Converting a flac to wav first is a one-liner that saves you ten minutes of debugging the wrong end of the pipe.
Then the model:
whisper-large-v3- multilingual, the one to use unless you're doing English-only volume work.distil-whisper-large-v3-en- English only. Feed it anything else and you get nonsense or an error.whisper-large-v3-turbo- the fast option.
language takes an ISO 639-1 code (en, sv, jaβ¦). Leave it empty and the model auto-detects - which the author notes gives worse results than just running Whisper locally, so if you know the language, say the language.
response_format is the one that changes what you can build: text gives you one blob, text_with_linebreaks breaks it per line, text_with_timestamps puts a timestamp per line, and json / verbose_json give you the raw API shapes for parsing. Timestamps are what you want for subtitles or karaoke-style output - the author's own side project is a karaoke app built from exactly this.
preset and user_input exist to guide the output, and the README is blunt about them: "The presets / prompt do very little. They are meant to help you guide the output, but I don't get any relevant results." Treat them as decoration. temperature and max_retries are straightforward.
Outputs
transcription_result is the text (or JSON, depending on response_format). success and status_code are there so you can branch instead of guessing - wire success into something or you'll happily send an error string into your prompt. The status code comes back as a string like "400 Bad Request" or "200 OK".
Where it goes wrong
Route it through the right folder. The node validates the path on your machine, but the audio itself is uploaded to Groq - the file leaves your box. If that matters for the material, use a local Whisper node instead. This is the standard tradeoff of every API-wrapper node: free and instant, but your audio is on someone else's server, subject to their policy.
Long files still cost time. Transcription is fast on Groq's hardware, but a 90-minute podcast is a 90-minute upload plus a bill of returned tokens. The max_retries default of 2 is there for the rate-limit wobble, not for a stalled connection.
You'll hit rate limits if you batch hard. Free tier is free, not unlimited. If you're walking a folder of samples, add some spacing.
Install
ComfyUI Manager β ComfyUI-mnemic-nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes
The groq Python package and python-dotenv come in with the pack's requirements. Since v3.0.0 the whole pack uses the newer V3 node API with automatic workflow migration, so old workflows referencing the previous class names still load.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | Select the transcription model to use. | |
| file_path | STRING | Path to the audio file to be transcribed. | |
| preset | COMBO | Select a preset for the transcription or custom prompts. | |
| user_input | STRING | Optional user input to guide the transcription. | |
| response_format | COMBO | Format in which the transcription response is returned. Text: Only the text, in one text chunk. text_with_linebreaks: Only the text, with each line separated by a line break. text_with_timestamps: Only the text, with each timestamp is separated by a line break. json: The JSON response from the API. verbose_json: The JSON response from the API with more details. | |
| temperature | FLOAT | 0.500β1 | Controls randomness in responses. A higher temperature makes the model take more risks, leading to more creative or varied answers. A lower temperature (closer to 0.1) makes the model more focused and predictable. |
| language | STRING | en | Language of the audio file in ISO 639-1 code. https://www.wikiwand.com/en/articles/List_of_ISO_639_language_codes is tg uz zh ru tr hi la tk haw fr vi cs hu kk he cy bs sw ht mn gl si mg sa es ja pt lt mr fa sl kn uk ms ta hr bg pa yi fo th lv ln ca br sq jv sn gu ba te bn et sd tl ha de hy so oc nn az km yo ko pl da mi ml ka am tt su yue nl no ne mt my ur ps ar id fi el ro as en it sk be lo lb bo sv sr mk eu |
| max_retries | INT | 21β10 | Maximum number of retries in case of transcription failures. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| transcription_result | STRING | The API response. This is the transcription generated by the model |
| success | BOOLEAN | Whether the request was successful |
| status_code | STRING | The status code of the request |