Keating now has an optional speech layer. The teacher still thinks, verifies, plans, and steers through the normal model/tool loop, but it can hand short learner-facing moments to a dedicated voice tool when speech is useful.
How It Works
- Opt-in by design: Speech stays disabled until you turn it on. In the web app, use the speaker button in the chat header.
- Voice tool: When enabled, the model gets
keating_voicefor short questions, redirects, recaps, and encouragement. - Gemini Live path: The browser route uses
gemini-3.1-flash-live-previewwith the Google API key stored in Settings. - Normal model remains in charge: Reasoning, verification, and correction still happen through the regular teaching tools instead of being hidden inside the voice layer.
Shell Support
The CLI config now includes a disabled-by-default speech block. When enabled, the Pi extension registers keating_voice and emits transcript-safe voice tags:
[voice voice=conversational tags=question,verify pace=normal affect=curious] What would you expect to happen next?
The first shell version is provider-neutral and tag-based. The web version is the first audio-backed path.