Voice
Dictation, read-aloud, and live streaming voice with barge-in.
Fosnie speaks to external speech engines over the standard OpenAI audio API, so speech-to-text (STT) and text-to-speech (TTS) run inside your perimeter like everything else. There are three modes.
Modes
- Dictation – a mic button next to send transcribes your speech into the message box; you send it.
- Read-aloud – you dictate, the model answers, and the answer is read back, turn by turn.
- Live voice – real-time streaming both ways, with voice-activity detection, natural turn-taking, and barge-in (start speaking and it stops talking and listens). Built, and off by default.
- Telephone – the same conversation reached by dialling a number. See Telephone.
Enabling it
- Dictation and read-aloud: set
features.voice = true(boot) and configure the STT/TTS endpoints on the ML service. If an engine is missing, the voice endpoints return503rather than failing silently. - Live voice: additionally set
features.voice_live = trueand configure the live-voice engine block.
The ML service needs ffmpeg on its PATH to transcode browser audio; without it only WAV/MP3/FLAC transcribe. STT and TTS are separate servers.
How it behaves
- Push-to-talk by default, no wake-word. The live, editable transcript is the product – you verify it before any action, and text is always available.
- Barge-in needs browser acoustic echo cancellation; where that's unavailable, the UI falls back to push-to-talk.
- Your Libraries are searched while you are still talking, on the part of the sentence already recognised, so the retrieval is largely done by the time you stop rather than sitting in the gap before the reply.
- On a batch-only box everything degrades gracefully to per-utterance STT and per-clause TTS.
Audit logs record voice metadata only – never audio or transcript content.
Was this page helpful?