Skip to content

feat(transcription): ASR model picker + explicit engine selection (Track-B step 5)#13

Open
farce1 wants to merge 4 commits into
feat/engine-selectionfrom
feat/asr-model-picker
Open

feat(transcription): ASR model picker + explicit engine selection (Track-B step 5)#13
farce1 wants to merge 4 commits into
feat/engine-selectionfrom
feat/asr-model-picker

Conversation

@farce1

@farce1 farce1 commented Jun 14, 2026

Copy link
Copy Markdown
Owner

Track-B step 5 — ASR model picker + explicit engine selection

Lets the user choose the speech-to-text engine (Whisper / Parakeet-TDT-v3) from
Settings, download Parakeet on demand, and have that choice actually drive
transcription — completing the Parakeet integration UX on top of the
availability-based selection from #12.

Stacked on feat/engine-selection (#12): #9 ← #10 ← #11 ← #12 ← this.

What's included

  • check_parakeet_model_ready command (parakeet assets + VAD), mirroring check_model_ready, so the UI can show per-engine readiness.
  • asrEngine setting ('whisper' | 'parakeet', default whisper) + asrEngineInfo() helper mapping each engine to its readiness/download commands and model directory.
  • Engine dropdown in TranscriptionSection that persists the choice and drives readiness, download (download_parakeet_model with the existing DownloadEvent progress UI), and per-engine model deletion (which now correctly preserves the shared VAD model).
  • Explicit backend selection: resolve_asr_engine honors an optional preference — explicit Whisper always wins; explicit Parakeet is used when its model is present, else falls back to availability; no preference keeps the existing availability behavior. Threaded from start_sessionSessionStartArgsStartWorkerArgs.

Tests (TDD, RED→GREEN)

  • Rust: resolve_honors_explicit_preference_then_availability, parakeet_model_ready_requires_assets_and_vad.
  • Frontend: asrEngineInfo unit tests; TranscriptionSection RTL tests (readiness wiring, persistence, parakeet download, per-engine delete).

Gate

FE: tsc clean, vite build ✓, vitest 44 passed. BE: clippy clean, cargo build ✓.

Known red CI (inherited, maintainer-owned — same as the rest of the chain)

This PR introduces no new failures; it merges once main's blockers are cleared and the chain rebases.

farce1 added 4 commits June 14, 2026 15:07
Mirror check_model_ready for the Parakeet engine (parakeet assets + VAD)
so the settings UI can show per-engine model readiness. Expose as a
Tauri command and register it.
Introduce the AsrEngine type ('whisper' | 'parakeet'), persist the choice
via the asrEngine setting (default whisper), and add asrEngineInfo() mapping
each engine to its readiness/download Tauri commands and model directory.
Add an engine dropdown (Whisper/Parakeet) that persists the asrEngine
setting and drives readiness checks, downloads (download_parakeet_model
with the existing progress UI), and per-engine model deletion via
asrEngineInfo(). Covered by an RTL test.
resolve_asr_engine now takes an optional preference: an explicit Whisper
choice always wins, an explicit Parakeet choice is used when its model is
present (else falls back to availability), and no preference keeps the
availability-based behavior. The persisted asrEngine setting is threaded
from start_session through SessionStartArgs and StartWorkerArgs to the
worker.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant