Skip to content

Strip "Release" subfolder when unpacking whisper.cpp engines (#12220)#12378

Merged
niksedk merged 1 commit into
mainfrom
fix/whisper-cpp-release-subfolder-12220
Jul 12, 2026
Merged

Strip "Release" subfolder when unpacking whisper.cpp engines (#12220)#12378
niksedk merged 1 commit into
mainfrom
fix/whisper-cpp-release-subfolder-12220

Conversation

@niksedk

@niksedk niksedk commented Jul 12, 2026

Copy link
Copy Markdown
Member

Problem

Reported in #12220: after downloading Whisper (CPU/Cpp) on Windows, whisper-cli.exe ended up in a Release sub-folder inside Cpp (Cpp/Release/whisper-cli.exe) instead of directly in Cpp/, so Subtitle Edit could not start the engine. A user confirmed that manually moving the files out of Release/ fixed it.

Root cause

The Windows whisper.cpp CPU build (whisper-blas-bin-x64.zip from ggml-org/whisper.cpp v1.9.1) nests every binary under a Release/ folder. WhisperEngineCpp.UnpackSkipFolder was string.Empty, so the unpacker never stripped that prefix.

I inspected all the whisper.cpp archives to see which land in a sub-folder:

Engine Archive Nested Release/? Old UnpackSkipFolder
Cpp (Win BLAS) whisper-blas-bin-x64.zip yes ""
Cpp (Mac) whisper-mac.zip no (flat) ""
Cpp (Linux) whisper-vulkan-linux64.zip no (flat) ""
CuBlas (Win) whisper-cublas…zip yes "Release"
CuBlas (Linux) whisper-cuda-linux64.zip no (flat) "Release"
Vulkan (Win) whisper-vulkan-x64.zip no (flat) ""

Only the Cpp Windows archive was mis-handled; cuBLAS already got it right.

Fix

Set UnpackSkipFolder => "Release" on WhisperEngineCpp and WhisperEngineCppVulkan (cuBLAS already did this).

This is safe cross-platform: ZipUnpacker only strips the prefix from entries that actually start with it, so it is a no-op for the flat Mac/Linux and Vulkan archives — exactly how cuBLAS's unconditional "Release" already works on Linux.

Notes

  • Existing installs that already extracted into Cpp/Release/ won't self-heal; a fresh download after this change fixes them (aligns with the Offer re-download when speech-to-text engine exe has gone missing #12363 "re-download when engine file is missing" improvement).
  • Build passes with 0 warnings; the WhisperCppEngineTests delegation test compares against the backend rather than a hardcoded value, so it's unaffected.

🤖 Generated with Claude Code

The Windows whisper.cpp CPU build (whisper-blas-bin-x64.zip from
ggml-org v1.9.1) nests all binaries under a "Release/" folder, so
whisper-cli.exe landed in Cpp/Release/ instead of Cpp/ and the engine
failed to start.

Set UnpackSkipFolder to "Release" on WhisperEngineCpp and
WhisperEngineCppVulkan (WhisperEngineCppCuBlas already did this). This
is safe cross-platform: the unpacker only strips the prefix from entries
that actually start with it, so it is a no-op for the flat Mac/Linux and
Vulkan archives.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@niksedk
niksedk merged commit 45edbd1 into main Jul 12, 2026
1 of 3 checks passed
@niksedk
niksedk deleted the fix/whisper-cpp-release-subfolder-12220 branch July 12, 2026 03:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant