Merge main into release-whispercpp-0.3.18 - #218
Closed
GustavoA1604 wants to merge 4 commits into
Closed
GustavoA1604 wants to merge 4 commits into
GustavoA1604 wants to merge 4 commits into
Conversation
…163) The WDIO config for Device Farm had double-escaped quotes (\\" instead of \") in the UiSelector and iOS predicate strings. This caused a SyntaxError on Device Farm: "missing ) after argument list". The original repo uses single-escaped quotes which work correctly. Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com>
* update whisper cpp prebuild workflow * update whisper cpp prebuild workflow
Contributor
🚫 Release PR validation failed❌ Package mismatch ❌ Version mismatch ❌ Version not incremented ❌ Missing CHANGELOG update |
Contributor
🚫 Release PR validation failed❌ Package mismatch ❌ Version mismatch ❌ Missing CHANGELOG update |
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
Jun 30, 2026
…ample_rate, 2026-06-30#1) Keeps the default-registry baseline at 162f8f7c (no global bump per review) and routes ONLY tts-cpp through a package-scoped registry pinned to the version that carries QVAC-21483 output_sample_rate (PR tetherto#69, master ce9ee96f). A version>= bump alone cannot work: baseline 162f8f7c's versions DB only knows tts-cpp <= 2026-06-26, so it can't resolve 2026-06-30#1. INTERIM: scoped registry points at the fork (Zbig9000) tetherto#218 branch tip so CI can resolve now. Before merge, repoint repository -> tetherto/qvac-registry-vcpkg and baseline -> the registry PR tetherto#218 merge commit.
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
Jun 30, 2026
…to (PR tetherto#218 merged) tetherto#218 merged to tetherto/qvac-registry-vcpkg main (970e30b4), publishing tts-cpp 2026-06-30#1 (REF ce9ee96f, output_sample_rate). Swap the interim fork pin for the tetherto repository + tetherto#218 merge-commit baseline. Default-registry baseline stays 162f8f7c; only tts-cpp is scoped.
Zbig9000
added a commit
to Zbig9000/qvac
that referenced
this pull request
Jun 30, 2026
…o tetherto (PR tetherto#218 merged)" Keep the tts-cpp scoped registry on the interim fork pin (Zbig9000/qvac-registry-vcpkg @ a8851c4) as it was; the tetherto repoint was premature. This reverts only the vcpkg-configuration.json scoped-registry change from 8b13672.
ishanvohra2
added a commit
that referenced
this pull request
Jul 2, 2026
… + SDK (#2879) * QVAC-16579 feat[api]: wire LavaSR speech enhancement through tts-ggml + SDK Expose the tts-cpp LavaSR enhancer as opt-in neural bandwidth extension on the GGML TTS path (Supertonic). The engine output is upsampled to 48 kHz when an `enhancer` block is supplied. - SDK schema: `lavasr` enhancer (discriminated union on `type`) with a single `enhancerSrc` GGUF; added to chatterbox/supertonic runtime + load configs. +8 schema unit tests. - tts-ggml plugin: resolve `enhancerSrc` -> local GGUF artifact and bind it on the Supertonic model. - @qvac/tts-ggml: accept `enhancer` / `files.lavasrEnhancer`, forward `lavasrEnhancerPath` + `enhance` to the addon (index.js + index.d.ts). - addon: SupertonicConfig/Model load tts_cpp::lavasr::Enhancer and apply it after synthesis (batch path); JSAdapter parses the new params. - example: examples/tts/supertonic-enhanced.ts. - fix stale ttsSpeed/ttsNumInferenceSteps comment in schemas/plugin.ts. Chatterbox addon wiring + the denoiser stage are planned follow-ups. Requires the tts-cpp LavaSR change (qvac-ext-lib-whisper.cpp) via vcpkg. * QVAC-16579 feat[api]: wire LavaSR enhancer for Chatterbox + fix reported sample rate - Chatterbox addon: load tts_cpp::lavasr::Enhancer and apply it after synthesis on the batch path (streaming enhancement is a follow-up, since the enhancer needs the full utterance). JSAdapter parses lavasrEnhancerPath/enhance; index.js forwards them; the SDK plugin resolves the Chatterbox enhancerSrc -> GGUF artifact. - AddonJs: report 48 kHz when the enhancer is enabled for either engine. The output sample rate is baked into the JS output handlers at instance creation, so this also corrects the Supertonic path (which otherwise reported the engine's native rate while emitting enhanced 48 kHz PCM). * QVAC-16579 test[api]: add LavaSR enhancer integration test + chatterbox example - test/integration/lavasr-enhancer.test.js: Supertonic + enhancer reports 48 kHz (vs native 44.1 kHz), and the un-enhanced path still reports 44.1 kHz (backward compat). Gated on the converted enhancer GGUF being present; skips cleanly when absent. - examples/tts/chatterbox-enhanced.ts: Chatterbox + LavaSR enhancement, mirroring supertonic-enhanced.ts. * QVAC-16579 test[api]: unit-test LavaSR enhancer param forwarding (tts-ggml) Mock-binding unit tests (no native addon) asserting _buildTtsParams() forwards the enhancer config to the native params for both engines: - supertonic.inference.test.js: enhancer block, files.lavasrEnhancer, enhancerPath alias, enhance:false, and absent (backward compat). - chatterbox.inference.test.js: enhancer forwards lavasrEnhancerPath + enhance; omitted when absent. * QVAC-16579 review: scope to tts-ggml + address enhancer feedback (GustavoA1604) Scope this PR to @qvac/tts-ggml only — revert the packages/sdk schema / plugin / example changes (SDK loadModel wiring moves to a separate PR). - Reject the LavaSR enhancer together with Chatterbox native chunk streaming (streamChunkTokens > 0) at construction (native validateConfig + index.js), with a regression test. The enhancer needs the full utterance, so the combo previously emitted un-enhanced 24 kHz audio mislabeled as 48 kHz. - Throw when enhancer.enhance is true but no GGUF path resolves (was a silent no-op); warn when outputSampleRate is set while the enhancer is active (output is always 48 kHz). - index.d.ts: document sampleRate == 48000 when the enhancer is active; config headers document the 48 kHz override. - Add examples (supertonic-enhanced.js, chatterbox-enhanced.js), a convert-lavasr-enhancer-to-gguf.py aligned with the tts-cpp one, an ensureLavaSREnhancerGguf download helper, README + CHANGELOG entries, and a Chatterbox batch enhancer integration test (plus construct-time regression tests that run without models). NOTICE is dependency-generated and unchanged (no new dependency added). * QVAC-21483 feat[api]: honor outputSampleRate (selectable output frequency) The @qvac/tts-ggml JS already validated + forwarded outputSampleRate; the addon now acts on it (it was previously a no-op): - toEngineOptions forwards outputSampleRate to the tts-cpp engine (EngineOptions::output_sample_rate, qvac-ext-lib-whisper.cpp PR #69), which resamples (batch once / streaming per-chunk, seam-free) — both engines. - When the LavaSR enhancer is active the engine keeps its native rate and the model resamples the 48 kHz enhanced signal to outputSampleRate afterwards via an addon-local Lanczos OutputResampler, so the rate is honored in both modes. - AddonJs reports the final rate (precedence: outputSampleRate > 48k enhanced > native). Removed the now-obsolete "outputSampleRate ignored" warning and the stale "ignored while enhancer active" docs. - Docs (configs + index.d.ts) + CHANGELOG; unit tests (forwarding, range, enhancer coexistence) + a gated integration test. Depends on the engine output_sample_rate field (PR #69) via the vcpkg bump. * QVAC-16579 refactor[tts-ggml]: simplify LavaSR enhancer config surface Addresses review on #2879: collapse the enhancer config to one rule — a GGUF path enables enhancement; there is no separate on/off flag. - index.js / index.d.ts: drop the `enhance` tri-state (path present => on); a future SDK layer gates at runtime by choosing whether to pass the path. Reject an unknown `enhancer.type` so a typo can't silently disable it. - Trim the GGUF path spellings to one canonical key (files.lavasrEnhancer) plus enhancer.enhancerPath; drop the files.lavasrEnhancerPath / files.enhancer aliases (the latter collided by name with the enhancer options block). - addon: remove the now-unreachable `enhance` config field + JSAdapter read; load / reported sample rate / engine options all key off the GGUF path alone. - README, CHANGELOG, examples and unit/integration tests updated; drop ticket names from docs and code comments. * QVAC-21482 feat[tts-ggml]: enhancer + Chatterbox native chunk streaming The LavaSR enhancer was previously rejected together with streamChunkTokens (it consumes the whole utterance). Support the combination: the addon now runs the one-shot enhancer over a sliding window with a look-ahead margin + crossfade so each streamed chunk is bandwidth-extended seam-free, matching the batch result. - StreamingEnhancer.hpp: header-only stateful feed()/flush() wrapper around an injected one-shot enhance transform. Overlap-reprocess with a look-ahead margin covering the enhancer's receptive field (~0.34 s at 24 kHz) plus a short crossfade; window/commit boundaries snap to the reduced ratio denominator so every window's output shares one global grid (exact crossfade even for a non-integer outputSampleRate). Bounded memory (drops consumed input). No tts-cpp/ggml dependency, so it is unit-testable in isolation. - ChatterboxModel: thread a StreamingEnhancer through the native-streaming chunk callback (raw -> enhance + optional outputSampleRate resample -> WSOLA -> emit), fix the duration stat to use the emitted rate, drop the construct-time rejection. - Remove the JS construct-time rejection; update index.d.ts / README / CHANGELOG / config docs / example to document the combo and its ~0.34 s look-ahead latency. - Tests: test_streaming_enhancer.cpp asserts streamed == batch for an injected shift-invariant transform (incl. a non-integer ratio) and bounded memory; flip the JS reject tests to "supported" and add a model-backed Chatterbox-streaming-enhancer integration test. * QVAC-16579 chore[tts-ggml]: pin tts-cpp 2026-06-29 (LavaSR) + registry baseline #212 Advance the tts-ggml native dependency to the LavaSR tts-cpp pin now that qvac-registry-vcpkg #212 has merged to tetherto main: - packages/tts-ggml/vcpkg.json: tts-cpp version>= 2026-06-26 -> 2026-06-29 (qvac-ext-lib-whisper.cpp PR #68, ships tts_cpp::lavasr::Enhancer). - packages/tts-ggml/vcpkg-configuration.json: default-registry baseline 162f8f7c -> f04e244701f462c4c8fead7b50bcaffa52c052ac (the #212 merge commit on tetherto/qvac-registry-vcpkg), where baseline.json and the version database both carry tts-cpp 2026-06-29, so the new pin resolves. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * QVAC-16579 chore[tts-ggml]: bump only tts-cpp version>= to 2026-06-29 (keep registry baseline) Per review (GustavoA1604): revert the packages/tts-ggml/vcpkg-configuration.json default-registry baseline to main's value (162f8f7c). The tts-cpp bump is now carried solely by vcpkg.json (version>= 2026-06-29). Note: version>= 2026-06-29 does not resolve against baseline 162f8f7c until the registry baseline contains that version. CI is separately blocked on whisper.cpp PR #69 (EngineOptions::output_sample_rate), which is not yet in any published tts-cpp version. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix: Use registry tts-cpp mecab port This commit updates the port version of tts-cpp in tts-ggml addon and adds integration tests for more languages for wider coverage. * QVAC-16579 chore[tts-ggml]: pin tts-cpp via scoped registry (output_sample_rate, 2026-06-30#1) Keeps the default-registry baseline at 162f8f7c (no global bump per review) and routes ONLY tts-cpp through a package-scoped registry pinned to the version that carries QVAC-21483 output_sample_rate (PR #69, master ce9ee96f). A version>= bump alone cannot work: baseline 162f8f7c's versions DB only knows tts-cpp <= 2026-06-26, so it can't resolve 2026-06-30#1. INTERIM: scoped registry points at the fork (Zbig9000) #218 branch tip so CI can resolve now. Before merge, repoint repository -> tetherto/qvac-registry-vcpkg and baseline -> the registry PR #218 merge commit. * QVAC-16579 chore[tts-ggml]: repoint tts-cpp scoped registry to tetherto (PR #218 merged) #218 merged to tetherto/qvac-registry-vcpkg main (970e30b4), publishing tts-cpp 2026-06-30#1 (REF ce9ee96f, output_sample_rate). Swap the interim fork pin for the tetherto repository + #218 merge-commit baseline. Default-registry baseline stays 162f8f7c; only tts-cpp is scoped. * chore[tts-ggml]: regenerate mobile integration tests + exercise lavasr/output-rate on mobile Re-ran scripts/generate-mobile-integration-tests.js so integration.auto.cjs mirrors the new test/integration files (adds runLavasrEnhancerTest and runOutputSampleRateTest; 12 -> 14 runners; validate-mobile-tests passes). Also added both runners to the ios + android functional groups in test-groups.json, since the mobile CI action runs ONLY the runners listed there -- regenerating alone would not exercise them on device. lavasr-enhancer runs its always-on construct-time checks on mobile and cleanly skips the model-backed 48 kHz assertions until the enhancer GGUF is provisioned; output-sample-rate uses the already-provisioned Supertonic model. * Revert "QVAC-16579 chore[tts-ggml]: repoint tts-cpp scoped registry to tetherto (PR #218 merged)" Keep the tts-cpp scoped registry on the interim fork pin (Zbig9000/qvac-registry-vcpkg @ a8851c4) as it was; the tetherto repoint was premature. This reverts only the vcpkg-configuration.json scoped-registry change from 8b13672. * chore[tts-ggml]: revert all vcpkg-configuration.json changes (review) Per review, vcpkg-configuration.json must not change in this PR: drop the tts-cpp scoped registry entirely and restore the file byte-identical to main (default-registry baseline stays 162f8f7c). The tts-cpp bump is expressed only via vcpkg.json (version>= 2026-06-30#1); advancing the registry baseline so it resolves is handled separately. * fix: Revert baseline change * chore: Update changelog * fix(tts-ggml): route mecab to microsoft/vcpkg registry The tts-cpp 2026-06-30#1 pin includes the QVAC-21335 MeCab feature (#72), which adds a new transitive dependency on `mecab`. `mecab` is a microsoft/vcpkg port and is not present in the tetherto default registry, so it must be routed to the microsoft/vcpkg scoped registry (alongside gtest/vulkan/...). Without this, `bare-make generate` fails with "the baseline does not contain an entry for port mecab", breaking every prebuild and the cpp-tests/cpp-lint jobs. This is a package-routing addition only; it does not bump any baseline. * fix(tts-ggml): resolve mecab::mecab imported target before find_package(tts-cpp) tts-cpp (2026-06-30#1) links libmecab as a PRIVATE dep, but since tts-cpp is a static library the dependency leaks into its exported INTERFACE_LINK_LIBRARIES as $<LINK_ONLY:mecab::mecab>. tts-cppConfig.cmake only re-finds ggml/OpenMP (no find_dependency(mecab)), so a downstream find_package(tts-cpp) sees a dangling mecab::mecab target and CMake generation fails ("the target was not found"). Call find_package(mecab CONFIG REQUIRED) first so the mecab::mecab imported target exists when tts-cpp's config loads. mecab is already installed as a transitive vcpkg dependency of tts-cpp. This is a downstream workaround for an upstream tts-cpp packaging bug (target leak); it can be dropped once tts-cpp stops exporting the target. * style(tts-ggml): apply clang-format to addon sources Satisfy the cpp-lint clang-format check (git-clang-format against the merge-base) across the LavaSR/output-sample-rate addon changes: AddonJs.hpp, JSAdapter.cpp, OutputResampler.hpp, StreamingEnhancer.hpp, ChatterboxModel.cpp, SupertonicModel.cpp, and test_streaming_enhancer.cpp. Formatting-only; no behavior change. * revert(tts-ggml): drop #2879 local mecab hacks; rely on Ishan #2942 #2879's own mecab plumbing (mecab in vcpkg-configuration.json + a find_package(mecab) in CMakeLists) duplicated Ishan's #2942 and re-touched vcpkg-configuration.json, which review asked us to leave unchanged. Revert both so the MeCab support comes solely from #2942 (this PR stacks on it). The test_streaming_enhancer.cpp test registration stays — it's LavaSR/streaming work, not a mecab hack. * chore[tts-ggml]: drop stale runChatterboxJaMecabTest from mobile groups #2942 removed test/integration/chatterbox-ja-mecab.test.js (its Japanese MeCab coverage moved into chatterbox-mtl.test.js), so integration.auto.cjs no longer generates runChatterboxJaMecabTest. Remove the now-dangling reference from the ios/android functional groups; Japanese coverage stays via runChatterboxMtlTest (already listed). lavasr + output-rate runners retained. --------- Co-authored-by: Zbigniew Herman <212399199+Zbig9000@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: ishanvohra2 <your-github-email> Co-authored-by: GustavoA1604 <54457676+GustavoA1604@users.noreply.github.com> Co-authored-by: Ishan Vohra <ishanvohra2@gmail.com> Co-authored-by: Zbig9000 <zbig9000@users.noreply.github.com>
iancris
added a commit
that referenced
this pull request
Aug 29, 2026
Rollout Phase B consumer side. Raises the version>= floor to 10297.1.0 in all 7 fabric consumers and releases each package. package version>= package embed-llamacpp 10297.0.0 -> .1.0 0.36.0 -> 0.37.0 fabric 10297.0.0 -> .1.0 0.9.0 -> 0.10.0 llm-llamacpp 10297.0.0 -> .1.0 0.47.0 -> 0.48.0 model-fit 10297.0.0 -> .1.0 0.7.0 -> 0.8.0 ocr-ggml 10297.0.0 -> .1.0 0.20.0 -> 0.21.0 translation-nmtcpp 10297.0.0 -> .1.0 0.12.0 -> 0.13.0 vla-ggml 10297.0.0 -> .1.0 0.23.0 -> 0.24.0 All seven are pre-1.0, so every one takes the minor path. translation-nmtcpp is included in that: npm still shows latest 10.0.0 from its previous numbering, but its main line was restarted at 0.x and origin/main is the authority. v10297.1.0 spans 59 commits over 10297.0.0 — MTP drafter (#210), pipeline-parallel ACCEL fix (#220), Metal optimisations (#216), Qwen4-Next (#218), fit host-memory budgeting (#214) and a CUDA build-warning fix (#226). llm-llamacpp's entry is dated rather than newly written: this PR already carried the split-mode 'tensor' work under [Unreleased], and that work releases as 0.48.0. model-fit's mobile-bundling fix does the same as 0.8.0. ocr-ggml and translation-nmtcpp keep their empty [Unreleased] placeholders, with the dated entry inserted below. CI is expected to fail until the registry PR merges — version>= 10297.1.0 cannot resolve before then. Retrigger afterwards. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
iancris
added a commit
that referenced
this pull request
Aug 31, 2026
Rollout Phase B consumer side. Raises the version>= floor to 10297.1.0 in all 7 fabric consumers and releases each package. package version>= package embed-llamacpp 10297.0.0 -> .1.0 0.36.0 -> 0.37.0 fabric 10297.0.0 -> .1.0 0.9.0 -> 0.10.0 llm-llamacpp 10297.0.0 -> .1.0 0.47.0 -> 0.48.0 model-fit 10297.0.0 -> .1.0 0.7.0 -> 0.8.0 ocr-ggml 10297.0.0 -> .1.0 0.20.0 -> 0.21.0 translation-nmtcpp 10297.0.0 -> .1.0 0.12.0 -> 0.13.0 vla-ggml 10297.0.0 -> .1.0 0.23.0 -> 0.24.0 All seven are pre-1.0, so every one takes the minor path. translation-nmtcpp is included in that: npm still shows latest 10.0.0 from its previous numbering, but its main line was restarted at 0.x and origin/main is the authority. v10297.1.0 spans 59 commits over 10297.0.0 — MTP drafter (#210), pipeline-parallel ACCEL fix (#220), Metal optimisations (#216), Qwen4-Next (#218), fit host-memory budgeting (#214) and a CUDA build-warning fix (#226). llm-llamacpp's entry is dated rather than newly written: this PR already carried the split-mode 'tensor' work under [Unreleased], and that work releases as 0.48.0. model-fit's mobile-bundling fix does the same as 0.8.0. ocr-ggml and translation-nmtcpp keep their empty [Unreleased] placeholders, with the dated entry inserted below. CI is expected to fail until the registry PR merges — version>= 10297.1.0 cannot resolve before then. Retrigger afterwards. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.