Commit Graph
5 Commits
Author SHA1 Message Date
JavisandCopilot 1fa75e58fc End recording when the user stops, not the music
Silero VAD answers "is this voice-like?", which music, TV and podcasts
satisfy just as well as the user does. With Spotify playing through the
device's own speakers the VAD never went quiet, so record_utterance never
saw the end of the command and ran to the 20 s cap on master and slave
alike -- and music alone was enough to defeat the "no speech during the
grace window" early return.

Wrap the VAD in a SpeechEndpointer that tracks the background loudness of
the recent window and only reports speech while a frame is clearly louder
than it. Both wake-word loops feed their idle audio through observe(), so
the gate is already calibrated when a turn starts, and only non-voice
frames update the background so a long sentence cannot raise the gate onto
itself. Onset/release hysteresis keeps trailing quiet syllables.

The master owns the knob (wake_word.voice_gate_ratio, 0 = off) and pushes
it to satellites in the wake-word block.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-10 13:04:13 +02:00
JavisandCopilot 74bc1be2d6 Start listening for expected follow-ups
Propagate the master's follow-up decision to slave devices and skip wake-word detection for one turn after response playback.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-10 12:51:36 +02:00
JavisandCopilot b921938970 Handle CUDA context loss gracefully
Fall back to CPU for speaker identification and fail speech recognition with an actionable restart message when the NVIDIA driver resets.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-10 12:46:59 +02:00
Javis 0ca4b4bf7a v1.0 2026-10-04 15:31:44 +02:00
Javis 435c645f36 Initial commit: Javis project 2026-09-21 21:44:00 +02:00