-
Notifications
You must be signed in to change notification settings - Fork 339
Description
Summary
@steipete/summarize 0.12.0 fails to transcribe a local .ogg audio file with Groq in my environment, while 0.11.1 works on the same machine with the same GROQ_API_KEY and the same audio file.
This looks like a regression in the Groq transcription path introduced/exposed between 0.11.1 and 0.12.0.
Environment
- summarize 0.11.1 → works
- summarize 0.12.0 → fails
- OS: Linux
- Node: v22.22.1
- Input: local
.oggfile (audio/ogg) - Groq API key is valid
What works
1) summarize@0.11.1
summarize "/path/to/file.ogg" --extract-only --jsonExample output shape:
Transcript:
<successful transcript text from the local audio file>
2) Direct curl to Groq transcription endpoint
curl https://api.groq.com/openai/v1/audio/transcriptions \
-H "Authorization: Bearer $GROQ_API_KEY" \
-F "file=@audio.ogg" \
-F 'model=whisper-large-v3-turbo'Example response shape:
{"text":"<successful transcript text>", ...}What fails
summarize@0.12.0
summarize "/path/to/file.ogg" --extract-only --jsonError:
Failed to transcribe media (Groq transcription failed; falling back to local/AssemblyAI/Gemini/OpenAI: Groq transcription failed (403): {"error":{"message":"Forbidden"}}; yt-dlp transcription failed: Groq transcription failed: Groq transcription failed (403): {"error":{"message":"Forbidden"}})
Important A/B result
Same machine, same file, same key:
0.11.1✅ works0.12.0❌ fails with403 Forbidden
Extra debugging
I also reproduced the failure with a minimal Node fetch + FormData + Blob upload using the same Groq endpoint and same model:
const form = new FormData();
form.append('file', new Blob([bytes], { type: 'audio/ogg' }), 'audio.ogg');
form.append('model', 'whisper-large-v3-turbo');
await fetch('https://api.groq.com/openai/v1/audio/transcriptions', {
method: 'POST',
headers: { Authorization: `Bearer ${key}` },
body: form,
});This also returns:
403 Forbidden
while curl succeeds.
So this may be a multipart upload compatibility regression (or a path that now consistently hits a Groq-incompatible request shape) rather than a bad key.
Why I suspect 0.12.0 specifically
The 0.12.0 release notes mention:
- adding AssemblyAI as a first-class transcription provider
- refactor remote fallback ordering
That matches what I’m seeing: 0.12.0 appears to hit a Groq-first path that is broken in my environment, while 0.11.1 does not.
Request
Could you check whether the Groq transcription upload path changed between 0.11.1 and 0.12.0, especially around:
- multipart
FormDataconstruction Blob/filename/content-type handling for local.ogg- provider/fallback ordering changes that make Groq the first path more consistently
I can provide more details if helpful.