Skip to content

Harden human labeling path against cross-person name reuse (voiceprint contamination) #25

Description

@pretyflaco

Follow-up to v0.13.3 (which hardened the AUTO many-to-one voiceprint fold).

Problem

The 0.13.3 fix guards the automatic identify_speakers Pass-2 fold, but a real field incident came through the human labeling path, which has no equivalent guard:

  • millet label --auto correctly left a new founder’’s cluster (SPEAKER_08, "Humphrey") raw — no voiceprint match, because he had no profile.
  • A human then labeled that raw cluster as an existing, already-matched participant ("Bright", who was a different cluster SPEAKER_06 in the same session) via the vezir TUI → millet label --apply-json ... --update-profiles.
  • Result: two different people merged under one name in the transcript/summary, AND --update-profiles blended Humphrey’’s voice into Bright’’s team voiceprint (n_sessions 11→12/13), causing profile drift that would degrade future auto-labeling.

Why it matters

Voiceprint contamination is silent and compounding: once a profile is polluted, future sessions mis-match, and each --update-profiles can deepen the drift.

Proposed guard (millet side)

  1. In update_profiles_from_confirmed_labels (and/or the --apply-json --update-profiles path in cli/label.py): when a human assigns a name to a cluster that (a) did NOT voiceprint-match that name in this session AND (b) the name already belongs to a different cluster in the same session, emit a loud warning and, by default, skip the profile update for that cluster (require an explicit --force-profile to enroll it). Applying the transcript label is fine; polluting the profile is the dangerous part.
  2. Optionally: cross-check the newly-assigned cluster’’s embedding cosine against the existing profile of that name; if it’’s below MATCH_THRESHOLD, warn that "this cluster does not sound like " before enrolling.

Vezir side (entry point)

The vezir TUI label screen (vezir/client/tui/label_screen.py) is where the human picks names; a pre-submit warning when reusing a name already bound to another cluster would catch this at the source. Cross-ref: pretyflaco/vezir.

Repro / evidence

Session 01KXZNWT2YNCQ7K6PTK8ZKJSTR (Blink Startups): SPEAKER_08 (Humphrey/BitZ/Zambia) labeled "Bright"; job log shows auto left it unrecognized, human apply-json added the mislabel, --update-profiles ran. Fixed manually (transcript re-split, Bright profile restored from backup, Humphrey enrolled fresh; post-fix cosine(Bright,Humphrey)=0.20).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions