Skip to content

QVAC-22367 fix[transcription-parakeet]: bound long-audio memory via windowed encoder#3379

Merged
GustavoA1604 merged 11 commits into
tetherto:mainfrom
Zbig9000:QVAC-22367-parakeet-long-audio
Jul 23, 2026
Merged

QVAC-22367 fix[transcription-parakeet]: bound long-audio memory via windowed encoder#3379
GustavoA1604 merged 11 commits into
tetherto:mainfrom
Zbig9000:QVAC-22367-parakeet-long-audio

Conversation

@Zbig9000

@Zbig9000 Zbig9000 commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

QVAC-22367 — fix Parakeet crash / high memory on long audio

Problem

The batch transcribe() API (parakeet-tdt-filesystem.ts and any transcribe
consumer) flows through the addon's offline path, which runs the Parakeet encoder
over the entire input at once. Self-attention is O(T_enc²), so multi-hour audio
exhausts memory — a ~90 min file peaked at ~100 GB and the Bare worker was
SIGKILLed (WORKER_CRASHED). transcribeStream was already bounded.

Fix

Consume parakeet-cpp 2026-07-21#0, which slides the offline conformer encoder
over long inputs in overlapping windows with the shared context trimmed at the
seams — bounded memory, no mid-word cuts. No addon code change is needed: the
engine auto-selects the windowed path once the input exceeds one window, so
short/typical files keep the identical single-pass output.

Changes

  • vcpkg.jsonparakeet-cpp version>= floors → 2026-07-21, exact pin via
    overrides.
  • vcpkg-configuration.json + vcpkg-overlays/parakeet-cpp/ — WIP overlay that
    mirrors the registry port so CI validates the fix before the registry merges.
  • CHANGELOG.md[Unreleased] entry.

Test plan

  • Prebuild CI green on every triplet (Android arm64, Linux x64/arm64, macOS
    arm64/x64, iOS variants, Windows x64).
  • transcription-parakeet integration suite green.
  • Manual: bun run examples/transcription/parakeet-tdt-filesystem.ts <long.wav>
    completes on a >30-min file without the WORKER_CRASHED / SIGKILL.
  • Upstream parakeet-cpp adds test-long-form-windows (planner unit test) and
    test-long-form (windowed-vs-single-pass parity).

Merge order (WIP)

Overlay must stay byte-identical to the registry port. Land the source PR, then
the registry PR, then drop the overlay here and switch to the plain
overrides + version>= pin.

Companion PRs


…indowed encoder

Consume parakeet-cpp 2026-07-21#0, which slides the offline conformer
encoder over long inputs in overlapping windows instead of running the
whole file through a single O(T_enc^2) attention graph. The batch
`transcribe` path previously exhausted memory on multi-hour audio (a
~90 min file peaked at ~100 GB and was SIGKILLed); `transcribeStream` was
already bounded and is unchanged. No addon code change is needed -- the
engine auto-selects the windowed path once the input exceeds one window,
so short/typical files keep the identical single-pass output.

WIP validation wiring (drop once the registry port merges):
- vcpkg-overlays/parakeet-cpp mirrors the registry PR's port verbatim
  (fork REF + real fork-tarball SHA512);
- vcpkg-configuration.json lists the overlay;
- vcpkg.json bumps the parakeet-cpp version>= floors to 2026-07-21 and
  pins the exact version via overrides.
@Zbig9000
Zbig9000 requested review from a team as code owners July 21, 2026 16:19
@github-actions

github-actions Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Review Status

Current Status: ✅ APPROVED
Approvals so far: Team Lead: 1, Member: 2

@Zbig9000 Zbig9000 added tier1 verified Authorize secrets / label-gate in PR workflows labels Jul 22, 2026
Comment thread packages/transcription-parakeet/CHANGELOG.md Outdated
…G entry

Address review: remove the trailing "(QVAC-22367)" from the [Unreleased]
entry. The CHANGELOG documents consumer-facing changes only, not tracker
ticket ids.
…ur fork registry (CI)

Point the addon's default-registry at the Zbig9000 fork of qvac-registry-vcpkg
(branch QVAC-22367-bump-parakeet-cpp @ 9838379), whose parakeet-cpp port pins
our qvac-ext-lib-whisper.cpp fork branch (engines/parakeet @ e58ff4b0). This is
what makes the addon CI actually build and test our long-audio lib changes --
the default tetherto registry (and a local overlay) resolves the unmodified
upstream lib, so CI wouldn't exercise our fix.

Drops the WIP vcpkg-overlays/parakeet-cpp (the fork registry now provides the
port). WIP wiring: on upstream merge of the source + registry PRs, revert
default-registry to tetherto and keep the version>= / overrides pin.
Zbig9000 added 3 commits July 22, 2026 18:17
…n Bare-safe

The teardown used `delete process.env[key]`, which throws on Bare's
process.env proxy (deleteProperty trap returns false) and aborts the whole
integration process (exit 134) whenever QVAC_TEST_GGUF_SORTFORMERSTREAMING
isn't already set in the environment. Wrap the unset in try/catch so cleanup
is best-effort; the test assertions are unchanged.
…e at merged-upstream port

Follow the registry PR after it was repointed to the merged upstream commit
(tetherto/qvac-ext-lib-whisper.cpp#101, engines/parakeet). default-registry
baseline -> 5a4aa57, whose parakeet-cpp 2026-07-21#0 port now builds from the
merged upstream master (88b690c0) instead of the fork branch. Still resolving
from the fork registry until the registry PR merges; once it does, switch
default-registry back to tetherto and keep the version>= / overrides pin.
…7-21#0 from tetherto registry

Registry PR tetherto#254 merged, so drop the WIP fork registry and go back to the
canonical tetherto registry:
- default-registry -> tetherto/qvac-registry-vcpkg @ 7c3dde3 (the tetherto#254 merge
  commit; minimal baseline that carries parakeet-cpp 2026-07-21#0).
- pin qvac-lib-inference-addon-cpp to 1.2.4 via overrides so the baseline bump
  (needed only to expose the new parakeet-cpp) does not incidentally pull the
  1.3.0 that tetherto#256 made the new default; keeps this PR's dep set equal to main
  plus the parakeet fix.

parakeet-cpp resolves to 2026-07-21#0 (version>= + override), which builds from
the merged upstream engines/parakeet (tetherto whisper tetherto#101).
Comment thread packages/transcription-parakeet/CHANGELOG.md
Comment thread packages/transcription-parakeet/.gitignore Outdated
Comment thread packages/transcription-parakeet/vcpkg.json Outdated
Comment thread packages/transcription-parakeet/vcpkg-configuration.json Outdated
…ides, restore 0.10.1 changelog

Address review feedback on tetherto#3379:
- vcpkg-configuration.json: restore the registry baseline to main's 74d2dfd.
  The version>= floor alone pulls parakeet-cpp 2026-07-21#0 from the tetherto
  registry HEAD (the baseline only sets defaults for unconstrained ports), so
  no baseline bump is needed now that registry tetherto#254 is merged.
- vcpkg.json: drop the parakeet-cpp / qvac-lib-inference-addon-cpp overrides.
  The version>= floors resolve both to their intended versions on their own
  (parakeet-cpp 2026-07-21#0 and qvac-lib-inference-addon-cpp 1.2.4).
- CHANGELOG.md: keep the [0.10.1] - 2026-07-20 section and place the new
  [Unreleased] entry above it instead of overwriting it.
- .gitignore: drop the vcpkg-overlays allowlist line (no overlay is used).
@Zbig9000

Copy link
Copy Markdown
Contributor Author

/review

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

Labels

tier1 verified Authorize secrets / label-gate in PR workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants