Compare commits

...

4 Commits

Author SHA1 Message Date
claude 9f714b7ae8 Name the device that returns audio, not the one that did not (V-487)
docs/deployment.md still told the next reader the microphone was the fifine on
card 0. Three days of silence started there, so the paragraph now carries the
levels and the check that finds it: stop the unit, arecord five seconds,
measure. A live room floor reads near 0.001.
2026-08-09 17:25:56 +04:00
claude ef3ee1e00a Merge pull request 'mavwaked has no wake word, only an energy VAD — add silero-vad and a keyword gate' (#222) from task/487-capture-device into master 2026-08-09 15:25:05 +02:00
claude 99e73ea653 Listen on the Scarlett, because the fifine returns silence (V-487)
mavwaked has logged zero completed utterances in three days of journal, and
the wake word is not why: the count was zero before it existed too. The fifine
returns RMS 0.00004 over five seconds with its capture switch on and its ALSA
volume at the full 496 of 496, so the silence is in the hardware and no flag
reaches it.

Measured over eight seconds of the same speech: fifine 0.00004, onboard ALC897
0.142 clipping at peak 1.0, USB camera 0.289 clipping, Scarlett Solo 0.003
clean. The two loud ones clip, so the quiet clean one wins.

Named CARD=Gen rather than card 4, because a USB card number moves when
something else is replugged and this daemon must not change ears quietly.

Verified in the room: keyword heard at score 0.999, utterance complete in
1.65s, and she answered "сейчас 17 часов 24 минуты".
2026-08-09 17:24:41 +04:00
claude ab1784f5e1 Merge pull request 'mavwaked has no wake word, only an energy VAD — add silero-vad and a keyword gate' (#221) from task/487-wake-word-deploy into master 2026-08-09 13:56:25 +02:00
2 changed files with 32 additions and 11 deletions
+17 -8
View File
@@ -41,18 +41,27 @@ Requires=maven-voice-tunnel.service
After=maven-voice-tunnel.service
[Service]
# card 0 is the fifine USB microphone. Named, and not "default", because the
# default device follows whatever pipewire last decided and this daemon should
# not change ears when he plugs in a headset.
# The Scarlett Solo 4th Gen, and not the fifine. The fifine was the device
# here for three days and mavwaked never logged one utterance in them, because
# it returns RMS 0.00004 with its capture switch on and its ALSA volume at the
# full 496 of 496. That silence is in the hardware, so no flag reaches it.
#
# Named CARD=Gen and not card 4, because a USB card number moves when
# something else is replugged and this daemon must not change ears quietly.
# Not "default" either: that follows whatever pipewire last decided.
#
# plughw and not hw. mavwaked asks arecord for 16kHz mono, which is what the
# whole pipeline is canonical in. The fifine offers 2 channels at 44100 or
# 48000 and nothing else, so bare hw:0,0 dies on "Channels count non
# available" before a frame is read. plughw puts ALSA's downmix and resampler
# in front. Any replacement microphone wants the same treatment.
# whole pipeline is canonical in. Neither microphone offers it, so bare hw
# dies on "Channels count non available" before a frame is read. plughw puts
# ALSA's downmix and resampler in front. Any replacement wants the same.
#
# The Scarlett measured RMS 0.003 against 0.14 on the onboard input, so its
# front-panel gain is the thing to raise if she mishears. That is a knob, not
# a control ALSA exposes. The two loud devices, the onboard ALC897 and the
# camera, both clip at peak 1.0 and are worse candidates, not better ones.
Environment=LD_LIBRARY_PATH=%h/.local/lib
ExecStart=%h/.local/bin/mavwaked \
-device plughw:0,0 \
-device plughw:CARD=Gen,DEV=0 \
-addr 127.0.0.1:9100 \
-lang ru \
-vad-model %h/.local/share/maven/models/silero_vad.onnx \
+15 -3
View File
@@ -166,9 +166,21 @@ the GPU. A model that will not load is logged and not fatal.
`-barge-in` is not passed. The threshold is room-specific and this room has no
number yet. Read the "suppressed while speaking" means out of the journal first.
The device is `plughw:0,0` and not `hw:0,0`. The fifine offers 2 channels at
44100 or 48000 and nothing else, and mavwaked asks arecord for 16kHz mono. Bare
`hw` dies on "Channels count non available" before a frame is read.
The device is `plughw:CARD=Gen,DEV=0`, the Scarlett Solo. It is `plughw` and
not `hw` because mavwaked asks arecord for 16kHz mono. No microphone here
offers that, so bare `hw` dies on "Channels count non available" before a
frame is read. It is named `CARD=Gen` and not card 4 because a USB card number
moves when something else is replugged.
It used to be the fifine on card 0, and that cost three days. mavwaked logged
zero completed utterances across them, before the wake word existed and after.
The fifine returns RMS 0.00004 with its capture switch on and its ALSA volume
at the full 496 of 496. That silence is in the hardware and no flag reaches
it. Over the same eight seconds of speech the onboard ALC897 read 0.142 and
the camera 0.289, both clipping at peak 1.0. The Scarlett read 0.003 clean.
Check the level before blaming the gate. Stop the unit, run `arecord` against
the device for five seconds, and measure. A live room floor reads near 0.001.
The three `-wake-` flags require the keyword "Мэйвен" (V-487 stage two). Drop
them and the loop runs open, which is what it did before. The threshold is the