Files
paseo/public-docs/voice.md
Mohamed Boudra 524aef5d75 Add Parakeet v3 local STT model for multilingual dictation
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.
2026-05-29 14:06:18 +07:00

5.1 KiB

title, description, nav, order
title description nav order
Voice Paseo voice architecture, local-first model execution, and provider configuration. Voice 9

Voice

Paseo has first-class voice support for dictation and realtime conversations with your coding environment.

Philosophy

Voice is local-first. You can run speech fully on-device, or choose OpenAI for speech features. For voice reasoning/orchestration, Paseo reuses agent providers already installed and authenticated on your machine.

This keeps credentials and execution in your environment and avoids introducing a separate cloud-only voice stack.

Architecture

  • Speech I/O: STT and TTS providers per feature (local or openai)
  • Local speech runtime: ONNX models executed on CPU by default
  • Voice LLM orchestration: hidden agent session using your configured provider (claude, codex, or opencode)
  • Tooling path: MCP stdio bridge for voice tools and agent control

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).

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.

{
  "version": 1,
  "features": {
    "dictation": {
      "stt": { "provider": "local", "model": "parakeet-tdt-0.6b-v2-int8", "language": "en" }
    },
    "voiceMode": {
      "llm": { "provider": "claude", "model": "haiku" },
      "stt": { "provider": "local", "model": "parakeet-tdt-0.6b-v2-int8", "language": "en" },
      "tts": { "provider": "local", "model": "kokoro-en-v0_19", "speakerId": 0 }
    }
  },
  "providers": {
    "local": {
      "modelsDir": "~/.paseo/models/local-speech"
    }
  }
}

For multilingual local dictation, set the model to v3 — it auto-detects the language, so no language field is needed:

{
  "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

You can switch dictation, voice STT, and voice TTS to OpenAI by setting provider fields to openai and providing OPENAI_API_KEY.

{
  "version": 1,
  "features": {
    "dictation": { "stt": { "provider": "openai" } },
    "voiceMode": {
      "stt": { "provider": "openai" },
      "tts": { "provider": "openai" }
    }
  },
  "providers": {
    "openai": { "apiKey": "..." }
  }
}

Environment Variables

  • OPENAI_API_KEY, OpenAI speech credentials
  • PASEO_VOICE_LLM_PROVIDER, voice agent provider override
  • 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 (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

Realtime voice can launch and control agents. Treat voice prompts with the same care as direct agent instructions, especially when specifying working directories or destructive operations.