From 524aef5d757de46fe6480eae8976e680c170a780 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Fri, 29 May 2026 14:06:18 +0700 Subject: [PATCH] Add Parakeet v3 local STT model for multilingual dictation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v2 is English-only; v3 covers 25 European languages with automatic language detection. The archive shares v2's filenames, architecture, sample rate, and feature dim, so no runtime loader changes are needed. Document that the `language` config field and PASEO_*_LANGUAGE vars only steer the OpenAI STT provider — the local Parakeet models ignore them, so multilingual local dictation means selecting the v3 model. --- .../providers/local/sherpa/model-catalog.ts | 9 ++++++ public-docs/voice.md | 30 ++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/packages/server/src/server/speech/providers/local/sherpa/model-catalog.ts b/packages/server/src/server/speech/providers/local/sherpa/model-catalog.ts index c1bbf3b62..cb65adc48 100644 --- a/packages/server/src/server/speech/providers/local/sherpa/model-catalog.ts +++ b/packages/server/src/server/speech/providers/local/sherpa/model-catalog.ts @@ -23,6 +23,15 @@ export const SHERPA_ONNX_MODEL_CATALOG = { description: "NVIDIA Parakeet TDT v2 (offline NeMo transducer, English).", defaultFor: "stt", }, + "parakeet-tdt-0.6b-v3-int8": { + kind: "stt-offline", + archiveUrl: + "https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-nemo-parakeet-tdt-0.6b-v3-int8.tar.bz2", + extractedDir: "sherpa-onnx-nemo-parakeet-tdt-0.6b-v3-int8", + requiredFiles: ["encoder.int8.onnx", "decoder.int8.onnx", "joiner.int8.onnx", "tokens.txt"], + description: + "NVIDIA Parakeet TDT v3 (offline NeMo transducer, 25 European languages, auto-detected).", + }, "kokoro-en-v0_19": { kind: "tts", archiveUrl: diff --git a/public-docs/voice.md b/public-docs/voice.md index 00a21c5ee..1fa77256b 100644 --- a/public-docs/voice.md +++ b/public-docs/voice.md @@ -24,10 +24,19 @@ This keeps credentials and execution in your environment and avoids introducing ## Local Speech -Local speech defaults to model IDs `parakeet-tdt-0.6b-v2-int8` (STT) and `kokoro-en-v0_19` (TTS, speaker 0 / voice 00). STT language defaults to `en`. +Local speech defaults to model IDs `parakeet-tdt-0.6b-v2-int8` (STT) and `kokoro-en-v0_19` (TTS, speaker 0 / voice 00). Missing models are downloaded at daemon startup into `$PASEO_HOME/models/local-speech`. Downloads happen only for missing files. +### Local STT models and language support + +| Model ID | Languages | +| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `parakeet-tdt-0.6b-v2-int8` | English only (default). Includes punctuation and capitalization. | +| `parakeet-tdt-0.6b-v3-int8` | 25 European languages, auto-detected: Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish, Ukrainian. | + +**To use a non-English language, switch the local STT model to `parakeet-tdt-0.6b-v3-int8`.** v3 detects the spoken language automatically — there is no per-language setting for it. The `language` field below does **not** steer the local Parakeet model (v2 is English-only, v3 auto-detects); it only applies to the OpenAI STT provider. + ```json { "version": 1, @@ -49,7 +58,20 @@ Missing models are downloaded at daemon startup into `$PASEO_HOME/models/local-s } ``` -Set `features.dictation.stt.language` for dictation and `features.voiceMode.stt.language` for realtime voice. If voice language is omitted, Paseo uses the dictation language before falling back to `en`. +For multilingual local dictation, set the model to v3 — it auto-detects the language, so no `language` field is needed: + +```json +{ + "version": 1, + "features": { + "dictation": { + "stt": { "provider": "local", "model": "parakeet-tdt-0.6b-v3-int8" } + } + } +} +``` + +The `language` field applies only to the OpenAI STT provider: set `features.dictation.stt.language` for dictation and `features.voiceMode.stt.language` for realtime voice. If voice language is omitted, Paseo uses the dictation language before falling back to `en`. It has no effect on the local Parakeet models. ## OpenAI Speech Option @@ -78,8 +100,8 @@ You can switch dictation, voice STT, and voice TTS to OpenAI by setting provider - `PASEO_LOCAL_MODELS_DIR`, local model storage directory - `PASEO_DICTATION_LOCAL_STT_MODEL`, local dictation STT model ID - `PASEO_VOICE_LOCAL_STT_MODEL`, `PASEO_VOICE_LOCAL_TTS_MODEL`, local voice STT/TTS model IDs -- `PASEO_DICTATION_LANGUAGE`, dictation STT language -- `PASEO_VOICE_LANGUAGE`, realtime voice STT language; falls back to `PASEO_DICTATION_LANGUAGE` when unset +- `PASEO_DICTATION_LANGUAGE`, dictation STT language (OpenAI STT only; ignored by local Parakeet) +- `PASEO_VOICE_LANGUAGE`, realtime voice STT language; falls back to `PASEO_DICTATION_LANGUAGE` when unset (OpenAI STT only; ignored by local Parakeet) - `PASEO_VOICE_LOCAL_TTS_SPEAKER_ID`, `PASEO_VOICE_LOCAL_TTS_SPEED`, optional local voice TTS tuning ## Operational Notes