Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Whisper Large Turbo download rejected as "missing or corrupted" again — expectedDownloadBytes outdated after HF update on Oct 16 (regression of #785)

Open Beginner friendly
#1,175 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
72/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
macos, swift

Research direction

Start by finding isModelFileValid and the .whisperLargeTurbo definition of expectedDownloadBytes, then trace how the downloaded GGUF file is validated and deleted from ~/Library/Caches/WhisperModels. Reproduce with Whisper Large Turbo or a focused validation test that supplies the new upstream byte size. Done means a complete download from the selected source is retained and activates successfully without depending on the outdated hardcoded size.

Written by the indexing model from the issue text.

Description

bug
Describe the bug

Activating Whisper Large Turbo ("Higher Quality but Faster") always fails right after the download reaches 100%:

Provider preparation failed: Whisper model file is missing or corrupted. Please re-download the model.

The downloaded file is deleted, ~/Library/Caches/WhisperModels stays empty, and every retry re-downloads ~845 MB and fails the same way.

This is the same bug as #785 (fixed in #787), now recurring.

Root cause: isModelFileValid requires an exact match with expectedDownloadBytes, which is 886_381_760 for .whisperLargeTurbo in v1.6.11. The handy-computer/whisper-large-v3-turbo-gguf repo was updated on Oct 16, 2026 (commits c70af6f "Correct license metadata" and 18ada75 "Add LICENSE and NOTICE…"), and the file on main is now 886,871,018 bytes. A complete, valid download (HTTP 200, size matches Content-Length) is therefore rejected and deleted.

Workaround: download the previous revision (ceea6c8), whose size matches the hardcoded value:

REV=ceea6c8a94a21ab85be244d311e874a39344dbf5
mkdir -p ~/Library/Caches/WhisperModels
curl -L --fail -o ~/Library/Caches/WhisperModels/whisper-large-v3-turbo-Q8_0.gguf \
  "https://huggingface.co/handy-computer/whisper-large-v3-turbo-gguf/resolve/$REV/whisper-large-v3-turbo-Q8_0.gguf"

After restarting the app, the model activates without re-downloading and works fine.

Suggested fix: since this is the second time an upstream metadata change broke validation, updating the constant again will only fix it until the next upstream commit. More durable options:

  • Pin Whisper download URLs to a specific commit (/resolve/<commit>/…) instead of main, so the expected size always matches;
  • and/or validate against a checksum (e.g. sha256 via X-Linked-ETag) instead of a hardcoded byte size;
  • log expected vs. actual size when validation fails, to make this easier to diagnose.

The other handy-computer Whisper GGUF repos may have received the same metadata update (not verified).

Reproduction steps
  1. Fresh install of FluidVoice 1.6.11 via Homebrew (brew install --cask fluidvoice)
  2. Open Voice Engine (or onboarding) → select "Higher Quality but Faster" (Whisper Large Turbo)
  3. Click "Download & Activate"
  4. Wait for the download to reach 100% (~845 MB)
  5. Error dialog appears: "Voice Model Setup Failed — Whisper model file is missing or corrupted"
  6. Check ~/Library/Caches/WhisperModels → the folder is empty (the downloaded file was deleted)
Expected behavior

After the download completes, the model passes validation, is saved to ~/Library/Caches/WhisperModels/whisper-large-v3-turbo-Q8_0.gguf, and activates.

Actual behavior

The download completes successfully (HTTP 200, 886,871,018 bytes, matches Content-Length), but isModelFileValid rejects the file because its size doesn't match the hardcoded expectedDownloadBytes (886,381,760), deletes it, and shows the "missing or corrupted" error.

App Version

1.6.11

macOS Version

macOS 26.5 (Tahoe), MacBook Pro 16" M5 Pro, 48 GB

Architecture

Apple Silicon

Logs or crash report
[WhisperProvider] WhisperProvider: Model downloaded successfully
[ASRService] ASRService: First prepare attempt for Whisper (Universal) failed after 74.21s
[ASRService] ASRService: First prepare failed for Whisper (Universal): Error Domain=WhisperProvider Code=-3 "Whisper model file is missing or corrupted. Please re-download the model." Attempting a single recovery by clearing provider cache.
[ASRService] ASRService: Provider cache was empty; recovery retry disabled after first failure for Whisper (Universal).
[ASRService] ASR initialization failed with error: Error Domain=ASRService Code=-2000 "Provider preparation failed: Whisper model file is missing or corrupted. Please re-download the model."

CFNetwork summary for the download: response_status=200, response_bytes=886871018

Screenshots or screen recording

No response

Dominant language
Swift
Stars
11.9k
Forks
863
Avg merge
1d 21h
Merged PRs (30d)
28

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from altic-dev/FluidVoice

All issues in altic-dev/FluidVoice

Similar issues

More Swift issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.