Downloads · 30 days
119
60% of all-time downloads
aufklarer/SpeechBrain-ECAPA-VoxCeleb-20M-MLX
SpeechBrain-ECAPA-VoxCeleb-20M-MLX is a feature extraction model from aufklarer. Use it when you need embeddings to search or compare text. It is set up for mlx. The card lists the license as apache-2.0.
This is a reproducible MLX weight export of speechbrain/spkrec-ecapa-voxceleb for native Apple Silicon inference. It produces a 192-dimensional, L2-normalized voice embedding for cosine-similarity speaker comparison.
Downloads · 30 days
119
60% of all-time downloads
All-time downloads
199
Public
Parameters
20.8M
41.6 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors41.6 MB · 100%
From the Hugging Face model README
This is a reproducible MLX weight export of
speechbrain/spkrec-ecapa-voxceleb
for native Apple Silicon inference. It produces a 192-dimensional,
L2-normalized voice embedding for cosine-similarity speaker comparison.
| Property | Value |
|---|---|
| Parameters | 20.77 million |
| Weights | Safetensors, FLOAT16 |
| Weight size | 39.7 MiB |
| Input | SpeechBrain log-mel [1, frames, 80] |
| Sample rate | 16 kHz |
| Output | 192-dimensional L2-normalized embedding |
| File | Description |
|---|---|
model.safetensors | MLX-layout ECAPA weights |
mlx_model.py | Native MLX ECAPA graph |
frontend.py | Reproducible SpeechBrain log-mel frontend |
config.json | Architecture, frontend, source revision, and checksums |
artifact_manifest.json | SHA-256 and size of every artifact file |
validation.json | PyTorch/MLX parity and local latency measurements |
requirements.txt | Pinned standalone runtime dependencies |
LICENSE | Apache 2.0 license |
| Check | Result |
|---|---|
| Minimum PyTorch/MLX output cosine | 0.999999 |
| Maximum absolute error | 0.000372 |
| Warm local inference | 5.2 ms |
The source model reports 0.80% equal-error rate on cleaned VoxCeleb1. Run a fresh VoxCeleb1-O evaluation before treating that upstream score as conversion parity or changing a production threshold.
import mlx.core as mx
import soundfile as sf
from frontend import compute_fbank
from mlx_model import SpeakerModel
audio, sample_rate = sf.read("voice.wav", dtype="float32")
assert sample_rate == 16000 and audio.ndim == 1
features = compute_fbank(audio, 80)[None, :, :]
model = SpeakerModel()
model.load_weights(list(mx.load("model.safetensors").items()), strict=True)
embedding = model(mx.array(features))
mx.eval(embedding)
print(embedding.shape, float(mx.linalg.norm(embedding).item()))
The exact frontend contract is in config.json. Speaker embeddings are not
secure authentication and should not be used alone for access control.
Converted from the official SpeechBrain checkpoint at revision
0f99f2d0ebe89ac095bcc5903c4dd8f72b367286. The original checkpoint and graph revisions are pinned
in config.json.