Skip to content

QVAC-17876 feat[bc]: migrate SDK parakeet transcription to 0.6.0 GGML#2184

Merged
ishanvohra2 merged 15 commits into
tetherto:mainfrom
ishanvohra2:feat/parakeet-ggml-sdk
May 23, 2026
Merged

QVAC-17876 feat[bc]: migrate SDK parakeet transcription to 0.6.0 GGML#2184
ishanvohra2 merged 15 commits into
tetherto:mainfrom
ishanvohra2:feat/parakeet-ggml-sdk

Conversation

@ishanvohra2

Copy link
Copy Markdown
Contributor

Note: be concise and prefer bullet points.

🎯 What problem does this PR solve?

  • SDK parakeet integration still targets pre-0.6 ONNX multi-file loading, which does not match @qvac/transcription-parakeet 0.6.0 single-GGUF GGML addons.
  • Apps cannot use parakeet duplex streaming (transcribeStream), Sortformer AOSC knobs, or the new Q8_0 registry models from the SDK.
  • Legacy ONNX modelConfig fields fail opaquely instead of guiding migration.

Asana: QVAC-17876

📝 How does it solve it?

  • Bump @qvac/transcription-parakeet to ^0.6.0 and load one GGUF via top-level modelSrc (variant auto-detected from GGUF metadata).
  • Replace multi-artifact ONNX resolvers with a single model path in the parakeet plugin; reject legacy ONNX modelConfig with LEGACY_PARAKEET_MODEL_DEPRECATED (52210).
  • Add parakeet duplex transcribeStream (paced input, partial/final segments, synthetic endOfTurn with source: "parakeet"); wire parakeetStreamingConfig and request lifecycle cancel.
  • Discriminate stream endOfTurn by source (whisper vs parakeet); whisper keeps silenceDurationMs, parakeet does not.
  • Regenerate model registry with Q8_0 GGUF constants; update examples, docs (0.6.0), and qvac e2e stream suite (desktop smoke validated).

Rebuilds on lessons from reverted #2018 (no TTS bleed-in, structured legacy errors, stream cleanup tests).

🧪 How was it tested?

  • cd packages/sdk && bun run lint — pass
  • cd packages/sdk && bun run test:unit — pass (parakeet schemas, transcribe VAD/event tests)
  • Desktop qvac e2e: parakeet + parakeet-stream suites — 19/19 pass (smoke 4/4)
  • Requires @qvac/transcription-parakeet@0.6.0 prebuilds on target platform (darwin-arm64, ios-arm64, etc.)

💥 Breaking Changes

BEFORE:

await loadModel({
  modelType: "parakeet",
  modelConfig: {
    modelType: "tdt",
    parakeetEncoderSrc: PARAKEET_TDT_ENCODER_INT8,
    parakeetDecoderSrc: PARAKEET_TDT_DECODER_INT8,
    parakeetVocabSrc: PARAKEET_TDT_VOCAB,
    parakeetPreprocessorSrc: PARAKEET_TDT_PREPROCESSOR,
  },
});

AFTER:

await loadModel({
  modelType: "parakeet",
  modelSrc: PARAKEET_TDT_0_6B_V3_Q8_0,
  modelConfig: {
    streaming: true,
    streamingChunkMs: 500,
  },
});

Legacy ONNX keys in modelConfig still parse but raise LegacyParakeetModelDeprecatedError with a migration message.

📦 Models

Added models

PARAKEET_TDT_0_6B_V3_Q8_0
PARAKEET_CTC_0_6B_Q8_0
PARAKEET_SORTFORMER_4SPK_V1_Q8_0
PARAKEET_EOU_120M_V1_Q8_0

Replace ONNX multi-file parakeet loading with single-GGUF models,
duplex transcribeStream, and Q8_0 registry constants. Legacy ONNX
modelConfig fields raise LegacyParakeetModelDeprecatedError. Wire
local @qvac/transcription-parakeet 0.6.0 until publish.

Co-authored-by: Cursor <cursoragent@cursor.com>
@ishanvohra2 ishanvohra2 requested review from a team as code owners May 21, 2026 12:28
@ishanvohra2 ishanvohra2 added test-e2e-full Triggers full e2e test suite [Currently SDK-only] verified Authorize secrets / label-gate in PR workflows labels May 21, 2026
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Align all six parakeet examples on a consistent file header:
title, usage, brief description, and requirements only when needed.

Co-authored-by: Cursor <cursoragent@cursor.com>
Comment thread docs/website/content/docs/reference/api/index.mdx
Comment thread packages/sdk/server/bare/ops/transcribe.ts
- Restore reference/api/index.mdx from main; keep only parakeet error update
- Preprocess endOfTurn to accept legacy whisper frames without source
- Whisper plugin: forward legacy addon endOfTurn (was silently dropped)
- Document wire compatibility in transcription.mdx and 0.11.0 breaking.md

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

GustavoA1604
GustavoA1604 previously approved these changes May 22, 2026
RamazTs
RamazTs previously approved these changes May 22, 2026
@Victor-Rodzko

Victor-Rodzko commented May 22, 2026

Copy link
Copy Markdown
Contributor

@ishanvohra2 FYI:

  • failed tests on Android not related to current PR - it is a known issue with tests (hopefully it will be fixed here):
image

All other tests passed on all platforms - GREEN - consider all tests passed!

Victor-Rodzko
Victor-Rodzko previously approved these changes May 22, 2026
Comment thread packages/sdk/changelog/0.11.0/breaking.md
NamelsKing
NamelsKing previously approved these changes May 22, 2026
gianni-cor
gianni-cor previously approved these changes May 23, 2026
@github-actions

github-actions Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — windows — ❌ failed

Totals: 90/91 passed · 1 failed · 98.9% · 510s
Config: suite=smoke · filter=(none) · exclude=(none)
View run · Artifacts: reports

Results by section

  • addon-logging: 1/2 ❌

Failed tests

  • addon-logging-during-inference: Test timeout after 120s

@github-actions

github-actions Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — ios — ✅ all tests passed (82/91, 1075s)

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

@github-actions

github-actions Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — linux — ✅ all tests passed (91/91, 238s)

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

@github-actions

github-actions Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — android — ✅ all tests passed (83/91, 2801s)

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

@github-actions

github-actions Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

QVAC E2E — macos — ✅ all tests passed (91/91, 313s)

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

@ishanvohra2

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

test-e2e-smoke Triggers smoke e2e test suite [Currently SDK-only] verified Authorize secrets / label-gate in PR workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants