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."""