Skip to content

ADR-083: Speaker Identification and Voiceprints (exploration) - #1

Draft
deondon wants to merge 1 commit into
agenticsorg:mainfrom
deondon:adr/speaker-identification-voiceprints
Draft

deondon wants to merge 1 commit into
agenticsorg:mainfrom
deondon:adr/speaker-identification-voiceprints

Conversation

@deondon

@deondon deondon commented Oct 26, 2026

Copy link
Copy Markdown

Summary

Scopes bringing cross-video speaker identification and a per-person knowledge base into the catalog. The catalog today treats participants/transcript_text speaker labels as opaque, source-supplied strings with no identity that persists across videos or platforms (Fireflies and Zoom each diarize independently; nothing here does).

Uses two internal tools' already-working implementation of this pattern as a reference design — not code to port, since neither matches this stack:

  • ListeningBuddy: pyannote.audio diarizes each recording and produces a per-speaker voice embedding; a clustering pass groups embeddings across the entire corpus, surfaces unnamed clusters with sample clips, and a human names each cluster once — the name applies retroactively to every member. New recordings get auto-suggested/confirmed against known voiceprints by cosine similarity.
  • PeopleBuddy: once a voice is named, an LLM builds a running narrative dossier per person from everything they've said across every recording.

This ADR is Proposed (exploration) — it records the problem and the reference design without committing to an implementation. It explicitly leaves open, as decisions for maintainers before any Phase 1 code:

  1. Where diarization compute runs (no GPU host exists in this project's infra today, unlike the reference tools)
  2. Whether identity needs to unify across platforms (e.g. a Fireflies meeting and a raw Zoom recording of the same person)
  3. Access/privacy — this catalog has multiple operator roles (Admin/Publisher/Viewer, ADR-010) vs. the reference tools' single-user context, so a persistent cross-video "who said what" index needs an explicit ownership decision, not an engineering default

Proposes a new event-sourced Speaker aggregate (following the ADR-008 pattern) with participants kept as a synced legacy field, the same precedent ADR-077 §1 set for destination_outcomes.

Test plan

N/A — documentation only (ADR), no code changes. docs/adr/README.md regenerated via scripts/gen-adr-index.sh and diff reviewed to confirm only the new entry was added.

Scopes bringing cross-video speaker identification and a per-person
knowledge base into the catalog, using ListeningBuddy's diarization +
voiceprint clustering and PeopleBuddy's per-person dossier generation
as a reference design (not code to port — different stack end to end).

Deliberately leaves compute placement, cross-platform identity scope,
and the access/privacy model as open questions for a follow-up
decision before Phase 1 implementation.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QHTx7ivcwi7W6oFg8d7Stx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant