Overcast voiceprint
Voice lineup — enroll a reference speaker into a local voice-print index, then rank WHERE that speaker talks inside a clip and WHICH recordings contain them, reading the anchored 0–100 rank score and its margin, and corroborating before naming anyone.From its SKILL.md
npx -y skills add kdr/overcast --skill overcast-voiceprintAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.6 KB, 859 tokens by cl100k_base, as published. Nobody here has run it
overcast-voiceprint
Use this skill to answer "is this the same speaker, and where do they talk?" with
the local voice-print DB (pyannote/wespeaker speaker embeddings — no media
leaves the case, ungated windowed default). It verifies a VOICE, not a phrase. Use
the broad overcast skill and overcast/reference/verbs.md for exact flags.
Prerequisites
overcast doctor --json # confirm uv + visual-db (pyannote) are ready
scripts/visual-db-uv.sh --voice # install pyannote.audio (once per machine)
overcast case init --json
overcast index create voices --type voice-print --local --json
Workflow
- Enroll the reference speaker (and any known recordings).
voice addembeds the clip's voiced windows into the index:
overcast voice add ./known-speaker.wav --index voices --json # the reference person
overcast voice add ./interview.m4a --index voices --json # other recordings to search
- Rank WHERE the reference speaker talks inside a clip (pairwise, windowed scan).
voice match <clip> <sample>scans<clip>for the<sample>speaker;--diarizeupgrades to overlap-aware diarize-then-match (HF_TOKEN + accepted pyannote license, windowed fallback if ungated):
overcast voice match ./call.wav ./known-speaker.wav --json # where in call.wav does the sample speaker talk?
overcast voice match ./call.wav ./known-speaker.wav --diarize --min-margin 10 --json # overlap-aware; gate on margin
- Rank WHICH enrolled recordings contain the reference speaker (index search):
overcast voice match ./known-speaker.wav --index voices --json # members ranked by the speaker's presence
- Read the score honestly and corroborate before concluding.
similarityis an anchored-cosine 0–100 RANK score (never 0–1) plus a rawcosine;--min-margingates best-vs-runner-up. Corroborate with content (alistentranscript) before naming anyone, then promote through triage:
overcast listen ./call.wav --json # what was said, to corroborate WHO
overcast finding list --state triage --json # a >=80 voice match auto-suggests a lead
overcast finding accept <id> --target <target-id> --json
overcast note "call.wav 00:38-01:12 ranks 87/100 for the known speaker (margin 22); transcript corroborates" --ref <voice-match-record-id> --at 38-72 --confidence medium --json
overcast brief --export ./voiceprint.html --json
Output
For each match: the reference sample, WHERE (time windows) or WHICH (member
recordings) the speaker appears, the 0–100 rank score + raw cosine + margin, and the
corroborating transcript content — every claim cited to a record.id + media.at.
Report a time WINDOW, not a single frame.
Caveats
Not liveness. A cloned / TTS / impersonated voice can score high, so a voice
match is a lead to corroborate, never an identification — every record carries
payload.caveat; surface it verbatim. The same speaker scores LOWER across
languages, heavy compression, or noise, so a miss isn't proof of a different person.
--diarize LABELS overlapping speakers, it does not name them. Scores are 0–100
(percent), not 0–1 — set --min-similarity/--min-margin on that scale. Leads
flow through finding triage; they stay out of ask/brief until accepted.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.