Skip to content

feat(stt): add local speech dictation with Parakeet TDT - #4246

Open
EduCosta85 wants to merge 2 commits into
iOfficeAI:mainfrom
EduCosta85:feat/local-speech-parakeet-tdt
Open

feat(stt): add local speech dictation with Parakeet TDT#4246
EduCosta85 wants to merge 2 commits into
iOfficeAI:mainfrom
EduCosta85:feat/local-speech-parakeet-tdt

Conversation

@EduCosta85

Copy link
Copy Markdown

Description

Adds offline, privacy-first local speech-to-text (dictation) support powered by NVIDIA NeMo's FastConformer Parakeet TDT 0.6B v3 model using the sherpa-onnx inference engine.

Key highlights:

  • Offline & Private: Audio is processed entirely on the user's local CPU via ONNX Runtime without requiring third-party cloud API keys.
  • Multilingual Support: Supports 25 languages with automatic punctuation and capitalization.
  • Dynamic Model Manager: Manages model verification (SHA-256), download progress, and caching in userData/models/stt/.
  • Renderer & Settings Integration: Added "Local (Offline - Parakeet TDT)" provider under System > Voice Input settings with an integrated model downloader, status indicator, and direct voice input support in conversations.
  • i18n: Added translated keys across all 13 supported languages (en-US, pt-BR, zh-CN, zh-TW, ja-JP, ko-KR, es-ES, fr-FR, de-DE, ru-RU, uk-UA, tr-TR, fa-IR).

Related Issues

Type of Change

  • fix — Bug fix (non-breaking change which fixes an issue)
  • feat — New feature (non-breaking change which adds functionality)
  • perf — Performance improvement
  • refactor — Code restructuring (no behavior change)
  • Breaking change (fix or feature that would break existing functionality)
  • docs — Documentation update

Atomic PR Checklist (Rule 1)

  • This PR contains exactly one feature or bug fix that cannot be further decomposed
  • The PR title follows Conventional Commit format: <type>(<scope>): <subject> (English)

Local Checks (Rule 3)

  • bun run format — formatting passes
  • bun run lint — no lint errors (skip if no .ts/.tsx changed)
  • bunx tsc --noEmit — no type errors (skip if no .ts/.tsx changed)
  • bunx vitest run — tests pass
  • i18n validated (bun run i18n:types + node scripts/check-i18n.js) — only if src/renderer/, locales/, or src/common/config/i18n/ changed; N/A otherwise
  • New/changed user-facing text uses i18n keys (no hardcoded strings)

Runtime Verification

  • Verified on macOS
  • Verified on Windows
  • Verified on Linux
  • I have performed a self-review of my own code

Additional Context

Tested and verified with real spoken audio on macOS (Apple Silicon arm64). Inference time is ~1.4s on CPU with accurate punctuation and capitalization.

@EduCosta85
EduCosta85 requested a review from IceyLiu as a code owner September 12, 2026 11:25
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