Skip to content
Anthony ERIBON

Projects / Experiments

Continuous voice assistant

Keep a conversation running hands-free

Enable listening from the tray or mute shortcut; utterances then pass through recognition, dialogue and speech workers.

  • Voice-activity detection separates utterances; the settings control microphone, recognition model and end-of-speech silence.
  • Local faster-whisper recognition is separate from the selected dialogue and speech providers.
  • Warm-up prepares recognition and voice resources, then work continues through queues.

Interrupt an answer that is no longer useful

New speech marks the old turn interrupted, stops playback and prevents its stale answer becoming the next spoken response.

Recognition, dialogue, sentence handoff and playback cooperate, with a new utterance interrupting the obsolete turn.
Source-derived turn lifecycle; no latency measurement is implied. Full size
  • Discard queued sentences from an interrupted turn.
  • Check interruption during model streaming and after recognition.
  • Buffer sentences until a completed non-tool answer, then hand them to the speech worker.

Turn a request into a supported action

Registered tools resolve or remember contacts, compose email drafts, send a known draft and read the day’s calendar.

Local recognition produces text; dialogue requests supported tools; an executor checks arguments, draft state and saved send policy; results return to dialogue and session evidence.
Conceptual action workflow derived from the implementation, not a fabricated conversation screen. Full size
  • A separate executor parses arguments, checks required fields and verifies draft state before sending.
  • Tool results return to dialogue for another model round; tool-call text is not spoken as a final answer.
  • The current send policy can persist across turns; its prototype confirmation behaviour is explained in Technical details.

Configure speech without coupling it to credentials

The settings window separates provider/model selection, recognition, voice playback and interaction controls.

  • Select an online or available local voice, rate, silence threshold and barge-in behaviour.
  • Keep saved model selection when provider model discovery fails.
  • Store API credentials in a separate usage-specific key registry; the settings list displays masks rather than key contents.

Keep evidence for a turn

JSONL session records retain recognized text, replies, tool calls/results, usage and stage timings.

  • Track failures and exhausted tool rounds as recorded outcomes.
  • Bound the conversation context while retaining valid tool-call/result boundaries.
  • There is no transcript or performance dashboard in this prototype; the graphical surface is the settings window and native tray menu.

Who does what

The user enables listening. Subsequent turns are automatic; action execution follows the configured confirmation policy.