CoolFace
Modelpublic

aufklarer/ReDimNet2-B6-CoreML

sourceHugging Facemitupdated 2mo agoView on Hugging Face
2likes451downloads
Model Card

ReDimNet2-B6 Core ML Speaker Embeddings

ReDimNet2-B6 produces local speaker embeddings for comparing clean voice samples. It does not diarize audio or assign names by itself.

Model

PropertyValue
Parameters12.3 million
FormatCompiled Core ML, Float16 weights
Compiled size24.7 MiB
Input96,000 mono Float32 samples
Sample rate16 kHz
Window6 seconds
Output192-dimensional L2-normalized embedding
Minimum deploymentmacOS 15 / iOS 18

The checkpoint was trained on VoxBlink2 and VoxCeleb2. The fixed six-second shape avoids the slow Core ML fallback observed with a flexible waveform shape. Applications should repeat clean two-to-six-second speech to fill the input and center-crop longer samples.

Files

FileSizeDescription
ReDimNet2B6.mlmodelc/24.7 MiBPrecompiled Core ML model
config.json<2 KiBInput, output, source revision, checksum, and validation metadata
README.md<4 KiBThis model card
LICENSE1.0 KiBMIT license from the upstream implementation

Performance

Measured on an Apple M2 Max after two warm-up predictions:

MeasurementResultMeaning
Warm six-second inference13.8 msOne voice-profile embedding
Warm throughput72.6 embeddings/sRepeated six-second windows after warm-up
Meeting pilot equal-error rate, 2-second clips1.50%Lower is better; WeSpeaker Core ML was 5.17%
Meeting pilot equal-error rate, 3-second clips0.00%Lower is better; WeSpeaker Core ML was 1.50%
LibriSpeech test-clean equal-error rate, 40 speakers0.00%Two- and three-second controls

The meeting pilot contains five recurring speakers and is not a universal quality claim. Thresholds must be calibrated for the intended microphones, languages, and acoustic conditions. Speaker embeddings are useful for labeling; they are not biometric authentication and do not protect against voice spoofing.

Python usage

python
import coremltools as ct
import numpy as np

model = ct.models.CompiledMLModel("ReDimNet2B6.mlmodelc")
audio = np.zeros((1, 96_000), dtype=np.float32)
embedding = model.predict({"audio": audio})["embedding"]

speech-swift

bash
speech embed-speaker voice.wav --engine redimnet2 --json
swift
import SpeechVAD

let model = try await ReDimNet2SpeakerModel.fromPretrained()
let embedding = try model.embed(audio: samples, sampleRate: 16_000)

Source

Converted from the official PalabraAI/ReDimNet2 B6 vb2+vox2_v0 large-margin checkpoint. The source revision and checkpoint SHA-256 are recorded in config.json.

Links