spkrec-ecapa-voxceleb
by speechbrain
192-dimensional speaker embeddings from VoxCeleb 1 and 2
speechbrain/spkrec-ecapa-voxcelebmixpeek://transcription@v1/speechbrain_ecapa_voxceleb_v1Deploy SpeechBrain ECAPA-TDNN
Single-tenantMixpeek has no managed extractor that runs these weights. On a single-tenant deployment you upload them and a custom plugin serves them next to the rest of your pipeline.
Overview
This model turns a stretch of speech into 192 numbers that describe the voice rather than the words. Two clips of the same person land close together under cosine distance and clips of different people land apart, which is the entire interface. Verification, diarization and open-set naming against a gallery you supply are all built on that one operation.
SpeechBrain trains it on the VoxCeleb 1 and VoxCeleb 2 training sets and expects 16 kHz mono audio. The model card reports 0.80% EER on the cleaned VoxCeleb1 test set. It is Apache-2.0 and runs on a CPU, so there is no key to get and no per-minute charge.
On Mixpeek the embedding is what you store. Put it on a per-segment document beside the transcript and the speaker becomes a filter instead of a search, so a query for the moment somebody pushed back on a deadline can be narrowed to one voice you already resolved.
Architecture
Time-delay neural network with squeeze-excitation Res2Blocks, multi-layer feature aggregation and attentive statistics pooling, which is what the ECAPA acronym spells out. The SpeechBrain configuration reads 80 mel filterbanks into channels of [1024, 1024, 1024, 1024, 3072] and projects to a 192-dimensional embedding (lin_neurons: 192 in hyperparams.yaml). Scoring is cosine similarity between two embeddings, so adding a speaker means storing one more vector and retraining nothing.
Mixpeek SDK Integration
// No extractor runs these weights, so ECAPA-TDNN runs on your side and the
// embedding is upserted through POST /v1/namespaces/{namespace_id}/documents/upsert.
// On a single-tenant deployment the other path is to upload the weights:
// POST /v1/namespaces/{id}/models accepts the huggingface format and a custom
// plugin loads them.
const res = await fetch(
"https://api.mixpeek.com/v1/namespaces/ns_your_namespace/documents/upsert",
{
method: "POST",
headers: {
Authorization: "Bearer API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
collection_id: "col_call_segments",
documents: [
{
document_id: "call-00412-seg-07",
// Keep the resolved speaker and the score as payload so they are
// filterable, and store the 192-d vector so an unknown voice can be
// matched against the gallery later.
payload: {
transcript: segment.text,
speaker_id: match.speakerId,
speaker_score: match.cosine,
start_s: segment.start,
end_s: segment.end,
},
vectors: { "speaker-embedding": ecapaEmbedding },
},
],
}),
},
);
// Managed alternative, if this exact model is not the requirement:
// multimodal_extractor@v2 runs transcription over a bucket with
// run_transcription. It gives you the words without the voice identity.Capabilities
- 192-dimensional speaker embedding from any length of 16 kHz mono speech
- Speaker verification by cosine distance, with no per-speaker training
- Open-set identification against a gallery you build yourself
- Supplies the embedding step of a diarization pipeline
- Apache-2.0 and CPU-capable, so a back catalogue costs machine time and nothing else
Use Cases on Mixpeek
Benchmarks
| Dataset | Metric | Score | Source |
|---|---|---|---|
| VoxCeleb1-test (cleaned) | EER | 0.80% | speechbrain/spkrec-ecapa-voxceleb model card, 05-03-21 release row |
Performance
We have not published our own measurement on Mixpeek infrastructure, so no latency figure is quoted here. Accuracy on short probes is the number that moves: a one-second clip carries much less speaker evidence than ten seconds.
Common Pipeline Companions
Frequently Asked Questions
Does this tell me who is speaking?
Only against a gallery you build. The model gives you a vector, and naming a voice means comparing that vector to labelled examples you already have and applying a threshold. With no gallery it can still tell you that two clips are the same person.
How much audio does it need?
More is better and the curve is steep at the short end. Published speaker-verification work and our own reading both show accuracy climbing sharply from around one second up to roughly ten, so segment length is worth treating as a tuning parameter rather than an accident of the diarizer.
ECAPA-TDNN or WeSpeaker ResNet34-LM?
Both are free, self-hosted and close enough on VoxCeleb that the published EER will not decide it for you. Score them on your own audio: room acoustics, codec and segment length move the result more than the architecture does.
Explore on Mixpeek
Compare alternatives in this category
Hand-picked tools & platforms compared
Deep-dive technical guide
See how Mixpeek runs models as extractors
Store & search embeddings at scale
Usage-based pricing for pipelines
Compare models, APIs & infrastructure
Specification
Research Paper
ECAPA-TDNN: Emphasized Channel Attention, Propagation and Aggregation in TDNN Based Speaker Verification
arxiv.orgBuild a pipeline with spkrec-ecapa-voxceleb
Add this model to a processing pipeline alongside other extractors. Combine with retrieval stages for end-to-end search.
Run it on your own data, free