Tooluck logoTooluck
SKILL.md

Speaker Clustering Methods

Agent skill frombenchflow-ai/skillsbench

Choose and implement clustering algorithms for grouping speaker embeddings after VAD and embedding extraction. Compare Hierarchical clustering (auto-tunes speaker count), KMeans (fast, requires known count), and Agglomerative clustering (fixed clusters). Use Hierarchical clustering when speaker count is unknown, KMeans when count is known, and always normalize embeddings before clustering.

How to install Speaker Clustering Methods

install Speaker Clustering Methods
# install the skillsbench pack with the skills CLI
npx skills add benchflow-ai/skillsbench

# or add only this skill to Claude Code: copy the folder

tasks-extra/speaker-diarization-subtitles/environment/skills/speaker-clustering/

# into

~/.claude/skills/speaker-clustering/ (all projects)

.claude/skills/speaker-clustering/ (one project)

tasks-extra/speaker-diarization-subtitles/environment/skills/speaker-clustering/SKILL.md

Apache-2.0Full file
1# Speaker Clustering Methods
2
3## Overview
4
5After extracting speaker embeddings from audio segments, you need to cluster them to identify unique speakers. Different clustering methods have different strengths.
6
7## When to Use
8
9- After extracting speaker embeddings from VAD segments
10- Need to group similar speakers together
11- Determining number of speakers automatically or manually
12
13## Available Clustering Methods
14
15### 1. Hierarchical Clustering (Recommended for Auto-tuning)
16
17**Best for:** Automatically determining number of speakers, flexible threshold tuning
18
19```python
20from scipy.cluster.hierarchy import linkage, fcluster
21from scipy.spatial.distance import pdist
22import numpy as np
23
24# Prepare embeddings
25embeddings_array = np.array(embeddings_list)
26n_segments = len(embeddings_array)
27
28# Compute distance matrix
29distances = pdist(embeddings_array, metric='cosine')
30
31# Create linkage matrix
32linkage_matrix = linkage(distances, method='average')
33
34# Auto-tune threshold to get reasonable speaker count
35min_speakers = 2
36max_speakers = max(2, min(10, n_segments // 2))
37
38threshold = 0.7
39labels = fcluster(linkage_matrix, t=threshold, criterion='distance')
40n_speakers = len(set(labels))
41
42# Adjust threshold if needed
43if n_speakers > max_speakers:
44 for t in [0.8, 0.9, 1.0, 1.1, 1.2]:
45 labels = fcluster(linkage_matrix, t=t, criterion='distance')
46 n_speakers = len(set(labels))
47 if n_speakers <= max_speakers:
48 threshold = t
49 break
50…

Excerpt shown under the repository's Apache-2.0 license.

More skills in skillsbench

Keep exploring

Similar skill repositories

thedotmack /

claude-mem
116k

Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More

CCCXGHGM+135 skills

Newsletter

Join the Community

Subscribe to our newsletter for the latest news and updates