Skip to content

QVAC-20557 tts-ggml: consume tts-cpp 2026-06-26 (Chatterbox Mali GPU + ggml-speech SVE fix) - #2905

Merged
GustavoA1604 merged 2 commits into
mainfrom
QVAC-20557-tts-ggml-consume-mali-sve
Jun 29, 2026
Merged

GustavoA1604 merged 2 commits into
mainfrom
QVAC-20557-tts-ggml-consume-mali-sve

Conversation

@pratiknarola-t

@pratiknarola-t pratiknarola-t commented Jun 26, 2026 •

Copy link
Copy Markdown
Contributor

🎯 What problem does this PR solve?

  • Chatterbox is broken on the ARM Mali Vulkan GPU (Google Tensor / Pixel): the f32 flash_attn_ext CFM kernel miscomputes → the f0 predictor blows up to NaN → garbled "blank + beeps" audio. Chatterbox was therefore forced to CPU on Mali.
  • On Tensor/Pixel CPU (SVE), Chatterbox carries a constant ~12 kHz Nyquist tone from the SVE ggml_vec_dot_f32 leftover-tail bug.
  • Both are fixed upstream and published to qvac-registry-vcpkg, but tts-ggml still pins the pre-fix tts-cpp / ggml-speech.

📝 How does it solve it?

  • Bump the tts-cpp registry pin 2026-06-24 → 2026-06-26 in packages/tts-ggml/vcpkg.json (published in tetherto/qvac-registry-vcpkg#214):
    • Chatterbox on Mali — tts-cpp 2026-06-26 = tetherto/qvac-ext-lib-whisper.cpp#67 (master 586268bf): an is_arm_mali-gated unfused CFM attention. Zero change off ARM Mali; CPU output byte-identical.
    • SVE CPU fix — that pin requires ggml-speech ≥ 2026-06-26 (tetherto/qvac-ext-ggml#30, speech f5727c32, svmad_f32_m → svmla_f32_m), pulled in transitively → removes the ~12 kHz Nyquist tone. NEON/x86/RISC-V + all non-CPU backends byte-identical.
  • Advance default-registry.baseline 1130cabb… → 162f8f7c… in packages/tts-ggml/vcpkg-configuration.json — the release(qvac-lib-registry-client): v0.2.0 #214 merge commit that introduces the new versions (precedent: QVAC-19557 tts-ggml: consume tts-cpp 2026-06-24 (S3Tokenizer host-mirror elimination) #2833 / 567b4462e).
  • Manifest-only (2 lines). The throwaway device-farm validation overlays lived only on the …-ci-validate branch (QVAC-20557 test[notask]: Chatterbox Mali fixes — combined on-device CI validation (DO-NOT-MERGE) #2885) and are not part of this change. The @qvac/tts-ggml version + CHANGELOG bump follows as a separate chore[notask]: release PR.

🧪 How was it tested?

  • vcpkg dry-run against the merged registry resolves tts-cpp@2026-06-26 → ggml-speech@2026-06-26 (git-trees 269311a9 / e3d2b92d).
  • Both fixes were device-farm-validated on the overlay-test PR (QVAC-20557 test[notask]: Chatterbox Mali fixes — combined on-device CI validation (DO-NOT-MERGE) #2885) — Pixel 9 (Mali) + S25 (Adreno). The registry-pinned code is numerically identical to what was validated: the ggml-speech source tree is byte-identical, and the only tts-cpp delta is a pure cfm_unfused_attn() helper-extraction refactor (same compute graph).
  • Apply the verify label to re-run the on-PR device farm (Pixel 9/Mali + S25/Adreno) + iOS/desktop integration against the new registry.

@pratiknarola-t
pratiknarola-t requested review from a team as code owners June 26, 2026 13:17
@github-actions

github-actions Bot commented Jun 26, 2026 •

Copy link
Copy Markdown
Contributor

Review Status

Current Status: ❌ PENDING
Approvals so far: Team Lead: 1

Pending reviews: Needs 1 more from Management, Team Lead, or Member.

@github-actions

This comment has been minimized.

@github-actions

github-actions Bot commented Jun 26, 2026 •

Copy link
Copy Markdown
Contributor

Mobile integration tests — @qvac/tts-ggml (iOS)

Result: passed

metric value
Devices passed 2
Devices failed 0
Test cases total 6
Test cases passed 6
Test cases failed 0
Test cases skipped 0

View workflow run

@github-actions

github-actions Bot commented Jun 26, 2026 •

Copy link
Copy Markdown
Contributor

Mobile integration tests — @qvac/tts-ggml (Android)

Result: failed

metric value
Devices passed 1
Devices failed 1
Test cases total 6
Test cases passed 5
Test cases failed 1
Test cases skipped 0

View workflow run

GustavoA1604
GustavoA1604 previously approved these changes Jun 26, 2026
freddy311082
freddy311082 previously approved these changes Jun 26, 2026
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

…+ ggml-speech SVE fix)

Bump the tts-cpp pin to 2026-06-26 (qvac-registry-vcpkg #214) and advance the
default-registry baseline to that registry merge commit (162f8f7c).

Brings two merged QVAC-20557 fixes into the tts-ggml addon:
- tts-cpp 2026-06-26 = qvac-ext-lib-whisper.cpp master 586268bf (PR #67): run
  Chatterbox correctly on ARM Mali Vulkan via an is_arm_mali-gated unfused CFM
  attention (fixes the f32 flash_attn_ext miscompute that drove f0 to NaN and
  broke the audio). Zero change off ARM Mali; CPU output byte-identical.
- ggml-speech 2026-06-26 = qvac-ext-ggml speech f5727c32 (PR #30): SVE
  ggml_vec_dot_f32 leftover-tail fix (svmad_f32_m -> svmla_f32_m), removing the
  ~12 kHz Nyquist tone on Tensor/Pixel CPU. Pulled in transitively because
  tts-cpp 2026-06-26 requires ggml-speech >= 2026-06-26.

Resolves to tts-cpp@2026-06-26 -> ggml-speech@2026-06-26 (verified via vcpkg
dry-run). Manifest-only; the throwaway validation overlays lived only on the
ci-validate branch and are not part of this change. Version/CHANGELOG bump
follows as a separate release PR.
…p Chatterbox allowPolicyCpu)

Chatterbox now runs on the ARM Mali Vulkan GPU (tts-cpp passes
allow_arm_mali=true), so gpu-smoke + the KV-cache GPU tests no longer tolerate a
Mali->CPU fallback: flip Chatterbox allowPolicyCpu true->false in
gpu-smoke.test.js, kvCacheMatrix.js, and chatterbox-kv-cache-gpu.test.js so CI
fails if Chatterbox silently falls back to CPU on Mali. Refresh the now-stale
"allow_arm_mali=false / Mali declined" comments in those tests plus
ChatterboxModel.cpp and BackendUtils.hpp. Test-strictness + docs only; no
runtime change.
@github-actions

github-actions Bot commented Jun 29, 2026 •

Copy link
Copy Markdown
Contributor

QVAC E2E — android — ✅ all tests passed (92/104, 2905s)

Config: suite=smoke · filter=(none) · exclude=(none)
View run · Artifacts: reports · Device Farm logs

This branch was previously deployed

1 inactive deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

verified Retired - no longer authorizes CI. Fork PRs use fork-ci environment approval.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants