v2.19.0 — Speaker-enrollment redesign + wakeword v4 + duck-on-listen
The full speaker-recognition rebuild that ends the ambient auto-enroll pollution loop — deployed and live (backend 2026-07-06-duck, frontend v2.15.52; SPEAKER_CONTROLLED_ENROLLMENT_ENABLED + DUCK_ON_LISTEN_ENABLED on).
Speaker-enrollment redesign (Phases 0–4)
- Phase 0 (#915) — quality gating: L2-normalized centroids, short-turn duration gate, confidence-gated continuous learning. Stops the worst of the pollution loop.
- Phase 1 (#916) — controlled multi-sample ONNX enrollment (voice-server model, same space as inference) + cohesion gate + user-link;
bin/purge_unknown_speakers.py. - Phase 2 (#917/#918) — guided multi-take enrollment UI on
/speakers. - Phase 3 (#919/#920) — controlled recognition: identify against enrolled profiles only, margin gate, immutable references; unmatched voices →
speaker_candidatesreview bucket + admin API. Migrationpc20260707. - Phase 3b (#922) — review-bucket UI (promote/dismiss) +
bin/calibrate_speaker_threshold.py(recommends threshold/margin from real enrolled separation). - Phase 4 (#923) — persisted softened XVF3800 DSP tuning (chip flash + provisioning) and duck-on-listen.
Voice
- renfield_de wakeword v4 (#921) — audiobook/media-speech hard-negatives. Held-out false wakes 22.7/hr → 0 at threshold 0.8, recall intact; fixed the Arbeitszimmer false-firing on an audiobook. Deployed.
- Duck-on-listen — the industry "duck the source" answer to AEC-with-an-external-loudspeaker: lowers room DLNA media while a satellite listens, restores on turn-end. Dark-safe, now enabled.
Also
- Schicht A document facts wired into
internal.knowledge_search(+ circle-filtered fact-source titles, per-doc re-extract advisory lock) — #911/#912. - Kiosk active-subsystem pulse from the voice path; core "processing" for web-chat — #909/#910.
- Speaker delete/merge FK ON DELETE actions (#914, migration
pc20260705).
Operational follow-ups
- Enroll the remaining household members (via the review bucket bootstrap) + run the calibration script to raise the threshold off the 0.25 default.
- XVF3800 DSP tuning needs a live far-field recall A/B on the Fitnessraum ("Renfield").