Skip to content

fix: retry empty prompted transcriptions - #182

Merged
jatinkrmalik merged 2 commits into
mainfrom
jmalik/fix-whisper-prompt-fallback
Jul 13, 2026
Merged

fix: retry empty prompted transcriptions#182
jatinkrmalik merged 2 commits into
mainfrom
jmalik/fix-whisper-prompt-fallback

Conversation

@jatinkrmalik

Copy link
Copy Markdown
Member

Summary

  • retry once without custom vocabulary when a prompted transcription returns no usable text
  • preserve vocabulary prompting for successful decodes and explicit language prefill during fallback
  • cover the retry condition with a focused unit test

Root cause

WhisperKit can exit during promptTokens prefill before decoding audio on affected models, returning an empty transcript. Retrying without custom prompt tokens recovers the dictation while keeping vocabulary bias on the normal path.

Upstream context: argmaxinc/argmax-oss-swift#372 and argmaxinc/argmax-oss-swift#497.

Validation

  • swift test (225 passed, 1 environment-dependent test skipped, 0 failures)

Closes #181

@github-actions github-actions Bot added app ci and removed ci labels Jul 11, 2026
@jatinkrmalik
jatinkrmalik marked this pull request as ready for review July 11, 2026 00:38

Copy link
Copy Markdown
Member Author

/build

@github-actions

Copy link
Copy Markdown

PR Build started for fa1bed6

Build signed & notarized DMG... this usually takes 10–20 minutes.

Watch the build →

@github-actions

Copy link
Copy Markdown

PR Build ready!

DMG VocaMac-0.7.0-pr.182+fa1bed6-arm64.dmg
Size 5.1M
Branch jmalik/fix-whisper-prompt-fallback
Commit fa1bed6
Signed ✅ Developer ID
Notarized ✅ Apple

📥 Install

  1. Click the DMG link above to download
  2. Open the DMG and drag VocaMac to Applications (replace existing)
  3. Open VocaMac — No Gatekeeper warnings, no permission resets
SHA-256 checksum
21a63fdca79b299e2bf37c658f5ec12ba56e59e17a4d07931e572a7f867ba10d  VocaMac-0.7.0-pr.182+fa1bed6-arm64.dmg

💡 Comment /build or /build-quick to rebuild.

Copy link
Copy Markdown
Member Author

@flesler, the signed and notarized test build is ready: download the DMG. Could you try it with Large v3 Turbo (Compact) and custom vocabulary enabled, using the same audio that reproduced the empty transcript? Let us know whether it returns text.

@flesler

flesler commented Jul 13, 2026

Copy link
Copy Markdown

Tested 0.7.0-pr.182+fa1bed6 on M5 Max with Large v3 Turbo (Compact) and custom vocabulary restored (GraphQL, HTML, Git, AWS, MongoDB, Zod, Jira, UTF-8, JSON).

Results

# duration prompted after retry notes
1 6.2s empty → retry “Okay, this is a text about MongoDB running on AWS and using GraphQL.”
2 6.6s empty → retry “This is another one… MongoDB… JSON and HTML.”
3 4.6s empty → retry “A normal sentence without jargon…”
4 3.0s empty → retry “one more with git, html and sod” ✅ (Zod→sod, expected without vocab bias)
5 0.7s empty → retry → still empty blank ❌ silent PCM (#176), not vocab

Every real dictation logged:

Prompted transcription was empty for openai_whisper-large-v3-v20240930_turbo_632MB; retrying without custom vocabulary

then returned usable text. Vocab mitigation works.

Take 5 is the separate silent-capture bug from #176/#178: buffer was near-silent, so retrying without prompt tokens correctly still yields nothing. #182 isn’t meant to fix that.

Note

On the retry path vocabulary bias is gone — “Zod” → “sod”. Fine for unblocking; custom vocab still isn’t actually helping on this turbo model until upstream prompt prefill is fixed.

I’d call #181 verified for this build on the vocab path.

@jatinkrmalik
jatinkrmalik merged commit 39c9fef into main Jul 13, 2026
5 checks passed
@jatinkrmalik
jatinkrmalik deleted the jmalik/fix-whisper-prompt-fallback branch August 22, 2026 05:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Custom vocabulary (promptTokens) makes Large v3 Turbo return empty transcripts

2 participants