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 After=maven-voice-tunnel.service
[Service] [Service]
# card 0 is the fifine USB microphone. Named, and not "default", because the # The Scarlett Solo 4th Gen, and not the fifine. The fifine was the device
# default device follows whatever pipewire last decided and this daemon should # here for three days and mavwaked never logged one utterance in them, because
# not change ears when he plugs in a headset. # 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 # 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 # whole pipeline is canonical in. Neither microphone offers it, so bare hw
# 48000 and nothing else, so bare hw:0,0 dies on "Channels count non # dies on "Channels count non available" before a frame is read. plughw puts
# available" before a frame is read. plughw puts ALSA's downmix and resampler # ALSA's downmix and resampler in front. Any replacement wants the same.
# in front. Any replacement microphone wants the same treatment. #
# 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 Environment=LD_LIBRARY_PATH=%h/.local/lib
ExecStart=%h/.local/bin/mavwaked \ ExecStart=%h/.local/bin/mavwaked \
-device plughw:0,0 \ -device plughw:CARD=Gen,DEV=0 \
-addr 127.0.0.1:9100 \ -addr 127.0.0.1:9100 \
-lang ru \ -lang ru \
-vad-model %h/.local/share/maven/models/silero_vad.onnx \ -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 `-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. 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 The device is `plughw:CARD=Gen,DEV=0`, the Scarlett Solo. It is `plughw` and
44100 or 48000 and nothing else, and mavwaked asks arecord for 16kHz mono. Bare not `hw` because mavwaked asks arecord for 16kHz mono. No microphone here
`hw` dies on "Channels count non available" before a frame is read. 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 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 them and the loop runs open, which is what it did before. The threshold is the