From 5a003f65fb5f62a718058600cf025ca5725d6ef1 Mon Sep 17 00:00:00 2001 From: Zbigniew Herman Date: Fri, 23 Oct 2026 14:43:14 +0200 Subject: [PATCH 1/2] QVAC-27393 fix[speech]: ship the Adreno OpenCL q8_0 GEMM fix (ggml-speech 2026-10-23) The speech addons override ggml-speech at 2026-10-07#1, whose default Adreno q8_0 prefill GEMM keeps its sums in fp16. A dot product past 65504 comes back as inf; TranscribePsy's first feed-forward block reaches 66k on some 60 s windows, the inf becomes NaN and attention spreads it over the window, so long recordings on Adreno OpenCL lost most of their text after the first window. qvac-ext-ggml#129 fixed the kernel and registry #446 published it as ggml-speech 2026-10-23. - asr-ggml, audiogen-ggml, bci-whispercpp, tts-ggml: ggml-speech override 2026-10-07#1 -> 2026-10-23 and qvac["ggml-speech"] to match, in lockstep. The override wins over speech-cpp's version>= floor, so moving it is what ships the fix. speech-cpp stays at 2026-10-20#1. - The jump also brings ggml-speech 2026-10-19 (Adreno KQ/KQV image kernels no longer miscompute attention over 32+ query tokens with unpadded lengths) and 2026-10-20 (WebGPU backend, an opt-in feature these addons do not enable). 2026-10-07#2 only kept Hexagon out of the build. - CHANGELOG entries under [Unreleased] in all four. Co-Authored-By: Claude Opus 5.5 --- packages/asr-ggml/CHANGELOG.md | 10 ++++++++++ packages/asr-ggml/package.json | 2 +- packages/asr-ggml/vcpkg.json | 3 +-- packages/audiogen-ggml/CHANGELOG.md | 7 +++++++ packages/audiogen-ggml/package.json | 2 +- packages/audiogen-ggml/vcpkg.json | 3 +-- packages/bci-whispercpp/CHANGELOG.md | 7 +++++++ packages/bci-whispercpp/package.json | 2 +- packages/bci-whispercpp/vcpkg.json | 3 +-- packages/tts-ggml/CHANGELOG.md | 7 +++++++ packages/tts-ggml/package.json | 2 +- packages/tts-ggml/vcpkg.json | 3 +-- 12 files changed, 39 insertions(+), 12 deletions(-) diff --git a/packages/asr-ggml/CHANGELOG.md b/packages/asr-ggml/CHANGELOG.md index 3ea7d305b9b..ebcb861527c 100644 --- a/packages/asr-ggml/CHANGELOG.md +++ b/packages/asr-ggml/CHANGELOG.md @@ -12,6 +12,16 @@ restarts at `0.1.0`; the two pre-merge histories are preserved verbatim as [`docs/WHISPER-CHANGELOG.md`](https://github.com/tetherto/qvac/blob/main/packages/asr-ggml/docs/WHISPER-CHANGELOG.md) and [`docs/PARAKEET-CHANGELOG.md`](https://github.com/tetherto/qvac/blob/main/packages/asr-ggml/docs/PARAKEET-CHANGELOG.md). +## [Unreleased] + +### Fixed + +- Adreno GPUs (Android, OpenCL): long Parakeet recordings, TranscribePsy + among them, no longer lose most of their text after the first window, and + attention over 32 or more tokens with unpadded lengths is computed + correctly. The shared native `ggml-speech` moves to `2026-10-23` across the + speech addons. + ## [0.11.0] - 2026-10-22 ### Added diff --git a/packages/asr-ggml/package.json b/packages/asr-ggml/package.json index 07fbc1ee6ec..15d1fa6d850 100644 --- a/packages/asr-ggml/package.json +++ b/packages/asr-ggml/package.json @@ -3,7 +3,7 @@ "version": "0.11.0", "description": "Multi-engine ASR (Whisper + NVIDIA Parakeet + MOSS-Transcribe-Diarize) inference addon for qvac on the Bare runtime", "qvac": { - "ggml-speech": "2026-10-07#1" + "ggml-speech": "2026-10-23" }, "engines": { "bare": ">=1.20.0" diff --git a/packages/asr-ggml/vcpkg.json b/packages/asr-ggml/vcpkg.json index 741dd99ec7a..db6cd094c5e 100644 --- a/packages/asr-ggml/vcpkg.json +++ b/packages/asr-ggml/vcpkg.json @@ -108,8 +108,7 @@ "overrides": [ { "name": "ggml-speech", - "version": "2026-10-07", - "port-version": 1 + "version": "2026-10-23" }, { "name": "speech-cpp", diff --git a/packages/audiogen-ggml/CHANGELOG.md b/packages/audiogen-ggml/CHANGELOG.md index 5c655c4c4c4..e4726a4de05 100644 --- a/packages/audiogen-ggml/CHANGELOG.md +++ b/packages/audiogen-ggml/CHANGELOG.md @@ -20,6 +20,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Align the shared native `speech-cpp` source pin to `2026-10-20#1` across the speech addons so they use the same source revision. +### Fixed + +- Adreno GPUs (Android, OpenCL): q8_0 matrix products whose sums exceed + the fp16 range no longer come back as infinity, and attention over 32 or + more tokens with unpadded lengths is computed correctly. The shared native + `ggml-speech` moves to `2026-10-23` across the speech addons. + ## [0.8.0] - 2026-10-14 ### Breaking diff --git a/packages/audiogen-ggml/package.json b/packages/audiogen-ggml/package.json index 706271e5b3f..68707c5cf71 100644 --- a/packages/audiogen-ggml/package.json +++ b/packages/audiogen-ggml/package.json @@ -3,7 +3,7 @@ "version": "0.8.0", "description": "Audio generation (music) addon for qvac", "qvac": { - "ggml-speech": "2026-10-07#1" + "ggml-speech": "2026-10-23" }, "engines": { "bare": ">=1.19.0" diff --git a/packages/audiogen-ggml/vcpkg.json b/packages/audiogen-ggml/vcpkg.json index 74427d4591f..d1f714549ba 100644 --- a/packages/audiogen-ggml/vcpkg.json +++ b/packages/audiogen-ggml/vcpkg.json @@ -107,8 +107,7 @@ "overrides": [ { "name": "ggml-speech", - "version": "2026-10-07", - "port-version": 1 + "version": "2026-10-23" }, { "name": "speech-cpp", diff --git a/packages/bci-whispercpp/CHANGELOG.md b/packages/bci-whispercpp/CHANGELOG.md index cc31a1c5c6c..8058bbfd93a 100644 --- a/packages/bci-whispercpp/CHANGELOG.md +++ b/packages/bci-whispercpp/CHANGELOG.md @@ -12,6 +12,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Align the shared native `speech-cpp` source pin to `2026-10-20#1` across the speech addons so they use the same source revision. +### Fixed + +- Adreno GPUs (Android, OpenCL): q8_0 matrix products whose sums exceed + the fp16 range no longer come back as infinity, and attention over 32 or + more tokens with unpadded lengths is computed correctly. The shared native + `ggml-speech` moves to `2026-10-23` across the speech addons. + ## [0.13.0] - 2026-10-20 ### Breaking diff --git a/packages/bci-whispercpp/package.json b/packages/bci-whispercpp/package.json index 308dde4e2fd..b0d671de132 100644 --- a/packages/bci-whispercpp/package.json +++ b/packages/bci-whispercpp/package.json @@ -4,7 +4,7 @@ "description": "Brain-Computer Interface (BCI) neural signal transcription addon for qvac, powered by whisper.cpp", "addon": true, "qvac": { - "ggml-speech": "2026-10-07#1" + "ggml-speech": "2026-10-23" }, "engines": { "bare": ">=1.24.0" diff --git a/packages/bci-whispercpp/vcpkg.json b/packages/bci-whispercpp/vcpkg.json index 7899e4be900..931c9103d3d 100644 --- a/packages/bci-whispercpp/vcpkg.json +++ b/packages/bci-whispercpp/vcpkg.json @@ -96,8 +96,7 @@ "overrides": [ { "name": "ggml-speech", - "version": "2026-10-07", - "port-version": 1 + "version": "2026-10-23" }, { "name": "speech-cpp", diff --git a/packages/tts-ggml/CHANGELOG.md b/packages/tts-ggml/CHANGELOG.md index 68ee96d4b67..01b6918cbb8 100644 --- a/packages/tts-ggml/CHANGELOG.md +++ b/packages/tts-ggml/CHANGELOG.md @@ -42,6 +42,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - LavaSR denoising can use the Vulkan GPU on supported Android ARM Mali devices when GPU inference is enabled, instead of falling back to CPU. +### Fixed + +- Adreno GPUs (Android, OpenCL): q8_0 matrix products whose sums exceed + the fp16 range no longer come back as infinity, and attention over 32 or + more tokens with unpadded lengths is computed correctly. The shared native + `ggml-speech` moves to `2026-10-23` across the speech addons. + ## [0.13.0] - 2026-10-14 ### Breaking diff --git a/packages/tts-ggml/package.json b/packages/tts-ggml/package.json index d4c9e6c1dcc..d8925ae8a6b 100644 --- a/packages/tts-ggml/package.json +++ b/packages/tts-ggml/package.json @@ -3,7 +3,7 @@ "version": "0.13.0", "description": "Text to Speech (TTS) addon for qvac (ggml backend, wrapping the chatterbox + supertonic + parler + cosyvoice3 + audio8 + moss + moss-sfx + moss-speech + Pocket engines from tts-cpp)", "qvac": { - "ggml-speech": "2026-10-07#1" + "ggml-speech": "2026-10-23" }, "engines": { "bare": ">=1.19.0" diff --git a/packages/tts-ggml/vcpkg.json b/packages/tts-ggml/vcpkg.json index 7a2dcce1f1a..9c24a45e6ae 100644 --- a/packages/tts-ggml/vcpkg.json +++ b/packages/tts-ggml/vcpkg.json @@ -108,8 +108,7 @@ "overrides": [ { "name": "ggml-speech", - "version": "2026-10-07", - "port-version": 1 + "version": "2026-10-23" }, { "name": "speech-cpp", From 21b78a86fd17752de18663dfa6e5699619ff9466 Mon Sep 17 00:00:00 2001 From: Zbigniew Herman Date: Fri, 23 Oct 2026 15:20:21 +0200 Subject: [PATCH 2/2] QVAC-27393 fix[speech]: move the speech addons to speech-cpp 2026-10-23#2 speech-cpp 2026-10-23#2 (registry #447) requires ggml-speech >= 2026-10-23, the version this PR already overrides, so all four addons move their speech-cpp override from 2026-10-20#1 in lockstep. The CHANGELOGs record what the range adds to the prebuilds: the Core ML diarizer sidecars, Mosaic loading and the Nemotron 3 Diarization loader fix (asr-ggml), the Parler-TTS Core ML DAC sidecar and non-finite logit error (tts-ggml), and the whisper fit capacity query (asr-ggml, bci-whispercpp). Its Hexagon, WebGPU and MiniMax Core ML routes are not built: the port refuses Hexagon ggml, webgpu is opt-in and audiogen-ggml does not enable coreml. Co-Authored-By: Claude Opus 5.5 --- packages/asr-ggml/CHANGELOG.md | 19 +++++++++++++++++++ packages/asr-ggml/vcpkg.json | 4 ++-- packages/audiogen-ggml/CHANGELOG.md | 2 ++ packages/audiogen-ggml/vcpkg.json | 4 ++-- packages/bci-whispercpp/CHANGELOG.md | 5 +++++ packages/bci-whispercpp/vcpkg.json | 4 ++-- packages/tts-ggml/CHANGELOG.md | 14 +++++++++++--- packages/tts-ggml/vcpkg.json | 4 ++-- 8 files changed, 45 insertions(+), 11 deletions(-) diff --git a/packages/asr-ggml/CHANGELOG.md b/packages/asr-ggml/CHANGELOG.md index ebcb861527c..796f5e33faa 100644 --- a/packages/asr-ggml/CHANGELOG.md +++ b/packages/asr-ggml/CHANGELOG.md @@ -14,8 +14,27 @@ restarts at `0.1.0`; the two pre-merge histories are preserved verbatim as ## [Unreleased] +### Added + +- Core ML diarizer sidecars on macOS and iOS: Nemotron 3 Diarization and + Sortformer v2.1 run their whole network on the Neural Engine when a + `-diarizer-.mlmodelc` sits beside the GGUF, and fall back to + ggml above its capacity or on failure. +- Parakeet CTC loads the Mosaic and Mosaic Compact GGUFs, with their optional + Core ML encoder sidecar on macOS and iOS. + +### Changed + +- Move the shared native `speech-cpp` source pin from `2026-10-20#1` to + `2026-10-23#2` across the speech addons. Whisper's `assessFit` sizes + integrated and unified-memory GPUs that report no capacity of their own + against host RAM, and returns the reason `memory-capacity-unavailable` when + no capacity is known. + ### Fixed +- Nemotron 3 Diarization loads again. The `speech-cpp` `2026-10-20#1` pin + rejected its GGUF as having no encoder weights. - Adreno GPUs (Android, OpenCL): long Parakeet recordings, TranscribePsy among them, no longer lose most of their text after the first window, and attention over 32 or more tokens with unpadded lengths is computed diff --git a/packages/asr-ggml/vcpkg.json b/packages/asr-ggml/vcpkg.json index db6cd094c5e..e7c6aa968a8 100644 --- a/packages/asr-ggml/vcpkg.json +++ b/packages/asr-ggml/vcpkg.json @@ -112,8 +112,8 @@ }, { "name": "speech-cpp", - "version": "2026-10-20", - "port-version": 1 + "version": "2026-10-23", + "port-version": 2 } ] } diff --git a/packages/audiogen-ggml/CHANGELOG.md b/packages/audiogen-ggml/CHANGELOG.md index e4726a4de05..89af00066ea 100644 --- a/packages/audiogen-ggml/CHANGELOG.md +++ b/packages/audiogen-ggml/CHANGELOG.md @@ -19,6 +19,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Align the shared native `speech-cpp` source pin to `2026-10-20#1` across the speech addons so they use the same source revision. +- Move the shared native `speech-cpp` source pin to `2026-10-23#2` across + the speech addons so they use the same source revision. ### Fixed diff --git a/packages/audiogen-ggml/vcpkg.json b/packages/audiogen-ggml/vcpkg.json index d1f714549ba..e0fd4a42d18 100644 --- a/packages/audiogen-ggml/vcpkg.json +++ b/packages/audiogen-ggml/vcpkg.json @@ -111,8 +111,8 @@ }, { "name": "speech-cpp", - "version": "2026-10-20", - "port-version": 1 + "version": "2026-10-23", + "port-version": 2 } ] } diff --git a/packages/bci-whispercpp/CHANGELOG.md b/packages/bci-whispercpp/CHANGELOG.md index 8058bbfd93a..564eaaa23e9 100644 --- a/packages/bci-whispercpp/CHANGELOG.md +++ b/packages/bci-whispercpp/CHANGELOG.md @@ -11,6 +11,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Align the shared native `speech-cpp` source pin to `2026-10-20#1` across the speech addons so they use the same source revision. +- Move the shared native `speech-cpp` source pin to `2026-10-23#2` across + the speech addons. Whisper's `assessFit` sizes integrated and + unified-memory GPUs that report no capacity of their own against host RAM, + and returns the reason `memory-capacity-unavailable` when no capacity is + known. ### Fixed diff --git a/packages/bci-whispercpp/vcpkg.json b/packages/bci-whispercpp/vcpkg.json index 931c9103d3d..31b8bac4361 100644 --- a/packages/bci-whispercpp/vcpkg.json +++ b/packages/bci-whispercpp/vcpkg.json @@ -100,8 +100,8 @@ }, { "name": "speech-cpp", - "version": "2026-10-20", - "port-version": 1 + "version": "2026-10-23", + "port-version": 2 } ] } diff --git a/packages/tts-ggml/CHANGELOG.md b/packages/tts-ggml/CHANGELOG.md index 01b6918cbb8..51cebc8dae2 100644 --- a/packages/tts-ggml/CHANGELOG.md +++ b/packages/tts-ggml/CHANGELOG.md @@ -7,10 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Core ML DAC sidecar for Parler-TTS on macOS and iOS: audio decoding runs + on Core ML when a `-dac.mlmodelc` sits beside + the GGUF (`parler-mini-v1-q8_0.gguf` -> `parler-mini-v1-dac.mlmodelc`), and + falls back to ggml otherwise. `PARLER_COREML_DISABLE` keeps it on ggml. + ### Changed - Align the shared native `speech-cpp` source pin to `2026-10-20#1` across the speech addons so they use the same source revision. +- Move the shared native `speech-cpp` source pin to `2026-10-23#2` across + the speech addons so they use the same source revision. - Update the shared native `speech-cpp` source to `2026-10-19`, including optional CosyVoice3 Core ML sidecars on Apple platforms. Re-export existing LM sidecars to include the cache feedback fix for consecutive predictions. @@ -41,13 +50,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - LavaSR denoising can use the Vulkan GPU on supported Android ARM Mali devices when GPU inference is enabled, instead of falling back to CPU. - -### Fixed - - Adreno GPUs (Android, OpenCL): q8_0 matrix products whose sums exceed the fp16 range no longer come back as infinity, and attention over 32 or more tokens with unpadded lengths is computed correctly. The shared native `ggml-speech` moves to `2026-10-23` across the speech addons. +- Parler-TTS reports an error instead of crashing when the model produces + non-finite logits. ## [0.13.0] - 2026-10-14 diff --git a/packages/tts-ggml/vcpkg.json b/packages/tts-ggml/vcpkg.json index 9c24a45e6ae..650ca411fa5 100644 --- a/packages/tts-ggml/vcpkg.json +++ b/packages/tts-ggml/vcpkg.json @@ -112,8 +112,8 @@ }, { "name": "speech-cpp", - "version": "2026-10-20", - "port-version": 1 + "version": "2026-10-23", + "port-version": 2 } ] }