From 93f3db889d337afc45db31f2605aec053c0411c5 Mon Sep 17 00:00:00 2001 From: yusufipk Date: Sun, 16 Aug 2026 11:12:36 +0300 Subject: [PATCH] Say out loud that Windows on ARM gets an emulated whisper Checked against the release listings rather than guessed: whisper.cpp publishes Win32 and x64 for Windows and nothing else, while llama.cpp does publish bin-win-cpu-arm64.zip. So a Snapdragon machine gets a native cleanup model and an emulated transcriber, which is slow enough that the cloud is the better answer there, and neither the code nor the README said so. The test pins it, so that a whisper.cpp release which does start publishing an arm64 build turns the choice red rather than being quietly ignored. --- README.windows.md | 4 +++- ggml.py | 4 ++++ tests/test_ggml.py | 9 +++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/README.windows.md b/README.windows.md index 8b4a5e6..fd0789d 100644 --- a/README.windows.md +++ b/README.windows.md @@ -54,7 +54,9 @@ python dikte.py - The local install fetches whisper.cpp's **OpenBLAS build**, which transcribes about twice as fast as the stock one on a plain CPU. There is - no GPU build to fetch for machines without an NVIDIA card. + no GPU build to fetch for machines without an NVIDIA card, and none for + Windows on ARM either: whisper.cpp publishes x64 only, so a Snapdragon + machine runs it under emulation and the cloud is the faster option there. - Setting Settings → API and models → **Threads** near your physical core count helps noticeably; the server's own default is 4. - If speed matters more than accuracy, `ggml-small` and `ggml-base` are much diff --git a/ggml.py b/ggml.py index 39a6e21..87a2c4c 100644 --- a/ggml.py +++ b/ggml.py @@ -251,6 +251,10 @@ def _wanted_assets(program): # as fast as the stock one, and it carries everything it needs. # Full names, because "bin-x64.zip" alone would also match the # CUDA archives, whichever the release happened to list first. + # + # x64 whatever this machine is, because whisper.cpp publishes no + # arm64 build for Windows: a Snapdragon runs this one emulated, + # which is slow but is the only local option there is. return ("whisper-blas-bin-x64.zip", "whisper-bin-x64.zip") if _has_vulkan() and arch == "x64": return ("bin-win-vulkan-x64.zip", f"bin-win-cpu-{arch}.zip") diff --git a/tests/test_ggml.py b/tests/test_ggml.py index dab95a4..1f01372 100644 --- a/tests/test_ggml.py +++ b/tests/test_ggml.py @@ -725,6 +725,15 @@ class WindowsAssets(Local): self.assertEqual(ggml._wanted_assets(ggml.LLAMA), ("bin-win-cpu-arm64.zip",)) + def test_an_arm_machine_is_handed_the_x64_whisper_anyway(self): + """whisper.cpp publishes no arm64 build for Windows: the release has + Win32 and x64 and nothing else, so emulated is the only local option + a Snapdragon has. Pinned here so that a release which does start + publishing one is noticed rather than quietly ignored.""" + self.patch_attr(ggml, "_arch", lambda: "arm64") + self.assertEqual(ggml._wanted_assets(ggml.WHISPER), + ("whisper-blas-bin-x64.zip", "whisper-bin-x64.zip")) + class InstallOnWindows(Local): """The Windows releases are zips, and the binary carries .exe."""