Navin

Voice (STT, TTS, realtime)

Navin supports microphone transcription (STT) on all plans, and a realtime voice session (STT + TTS + barge-in) on Pro, Ultra, and Team (or when voice.realtime_enabled is set in settings).

STT (transcription)

Configured under Settings → Voice / transcription providers (Groq Whisper, OpenAI, OpenRouter, AssemblyAI, SiliconFlow, …).

WebSocket: transcribe_audiotranscription_result / transcription_error.

Code: navin/audio/transcription.py, navin/webui/transcription_ws.py, webui/src/hooks/useVoiceRecorder.ts.

TTS and realtime session

PiecePath
TTS synthesizenavin/audio/tts.py, navin/audio/tts_registry.py
Providersnavin/providers/tts.py (OpenAI / OpenRouter / Groq speech)
ConfigVoiceConfig in navin/config/schema.py (tts_provider, voice, auto_speak, realtime_enabled)
Session WSnavin/webui/voice_session_ws.py
WebUI hookwebui/src/hooks/useVoiceSession.ts

Session messages (summary): voice_session_start, audio chunks, transcript_partial, tts_audio, voice_session_end.

Barge-in cancels in-progress TTS when the user starts speaking again.

Plan gate

Realtime voice defaults to Pro / Ultra / Team. Free and Plus keep STT only unless voice.realtime_enabled is enabled locally.

Tests

tests/test_tts.py

Related

Source: content/docs/voice.md