Skip to main content
Status: Beta — Voice works end-to-end with all three providers but latency tuning and edge-case reconnection are still being hardened.

Voice Pipeline

FERAL supports three voice paths optimized for different latency, cost, and quality tradeoffs. All paths share a common VoiceRouter that selects the best pipeline per session.

Voice Paths

OpenAI Realtime

The lowest-latency option. Audio streams bidirectionally over a single WebSocket — no transcription step, no TTS step. The model hears your voice and speaks back directly.
Latency: ~150ms end-to-end. Best for conversational use where natural interruption matters.

Gemini Live

Google’s bidirectional streaming voice API. Similar architecture to OpenAI Realtime but uses Gemini models.
Supports tool calling mid-stream — the model can pause speech, execute a tool, and resume with the result.

Whisper + Classic TTS

The fallback pipeline that works with any LLM provider. Audio is transcribed locally, sent as text to the LLM, and the response is synthesized back to speech.
Latency: 400–800ms depending on Whisper model size and LLM speed. Works offline with Ollama + Piper TTS.

Wake Word Detection

FERAL uses openwakeword for always-on, local wake word detection. No audio leaves the device until the wake word fires.
The default wake phrase (“hey feral”) is the only one shipped today. Custom wake-word training is on the post-v1.0 roadmap and is not exposed as a CLI command. To verify the built-in detector is loaded and microphones are wired, run:
The wake word detector runs in a dedicated thread with ~2% CPU overhead on modern hardware.

VoiceRouter

The VoiceRouter decides which pipeline handles each session based on configuration, provider availability, and client capabilities.
Fallback chain: realtime → gemini_live → whisper. If the preferred provider is down, the router degrades gracefully.

Router Configuration

Sub-200ms Latency Architecture

Achieving low latency requires minimizing hops between the user’s mic and the model’s audio output. Realtime path (OpenAI/Gemini):
One network hop. The model generates audio tokens directly — no intermediate text. Optimizations applied: Whisper path optimizations:

API Endpoints

Client Integration

The web UI connects via WebSocket and negotiates the voice path during the handshake:
The server responds with the resolved pipeline and codec parameters. Audio frames flow as binary WebSocket messages from that point.