voice
Local speech-to-text and read-aloud on the iii bus. Nothing leaves the machine by default: a small streaming recognizer produces live text and a large second-pass model re-decodes each finished utterance with punctuation and casing, both with models the worker downloads once. An OpenAI-compatible audio endpoint, or any speech provider registered with llm-router (stt.backend / tts.backend set to router), can replace either half through configuration.
When to Use
- A user attached or named a WAV recording and wants its text:
voice::transcribe. - A surface streams microphone audio and wants live text:
voice::dictation::*. - A reply should be spoken:
voice::speak.
Boundaries
- Audio in is 16 kHz mono 16-bit PCM for dictation; WAV files of any rate for
voice::transcribe. No other container is decoded. - The bundled model is English. Other languages need the
openaibackend. voice::speakon the host backend plays on the machine running the worker, not in the caller's browser; theopenaibackend returns audio for the caller to play.- Dictation sessions idle past
session_idle_secsare closed by the worker.
Functions
voice::transcribe— a WAV file (path or base64) to text with timestamped segments.voice::dictation::start— open a session; transcript events go tooutput_function_id.voice::dictation::push— feed one base64 PCM chunk (risingseq).voice::dictation::stop— close a session and return its transcript (discardto drop it).voice::dictation::list— open sessions.voice::speak— read text aloud; returns aspeech_id.voice::speak::stop— stop host playback.voice::models::list— local models, whether each is installed, and each one's license, author and source (Parakeet TDT 0.6B v2 is CC BY 4.0: keep the attribution if you copy its files elsewhere).voice::models::download— install a local model, checksum-verified.voice::models::remove— delete a downloaded model.voice::doctor— backends, model state, open sessions.
Reactive triggers
voice::transcript— partial, final, closed and error events of dictation sessions (filtersession_id).voice::session-started,voice::session-stopped— session lifecycle.voice::model-progress— download progress, one event per megabyte and a finaldone.