Repository navigation
v2.13.0
Voice Fingerprint multi-template profile
Replaces the single-centroid + EMA profile architecture with a ring buffer of up to 20 templates per device. Fixes a real production failure: at ~150-200 recordings the previous design's centroid had drifted toward a "generic-voice" hub through positive-feedback contamination from borderline-pass samples, and the gate started accepting kids and partner. The new design caps profile size, and high-confidence-only updates kill the contamination loop entirely.
Behaviour changes
- Score is now mean cosine across all templates (matches Apple's "Personalized Hey Siri" formulation).
- Border samples (0.55 ≤ similarity < 0.70) still pass through to transcription — you don't lose your message — but no longer enter the profile, so they can't drift it toward neighbour voices.
- FIFO eviction once the ring is full at 20 templates.
Migration
Existing profiles with > 40 enrolments are reset on first launch (the centroid was already too contaminated to seed safely). 5 fresh recordings re-bootstrap the new ring. Profiles below the threshold migrate cleanly: legacy centroid seeds slot 0, your existing enrolment count is preserved.
Download the DMG, drag SpeechButton.app into /Applications. brew users: brew upgrade --cask speechbutton. Existing users: "Check for Updates" picks this up automatically.