| --- |
| license: mit |
| language: |
| - multilingual |
| tags: |
| - coreml |
| - speaker-verification |
| - speaker-embedding |
| - voice-identity |
| base_model: PalabraAI/redimnet2 |
| library_name: coreml |
| pipeline_tag: audio-classification |
| --- |
| |
| # 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 |
|
|
| | Property | Value | |
| |---|---:| |
| | Parameters | 12.3 million | |
| | Format | Compiled Core ML, Float16 weights | |
| | Compiled size | 24.7 MiB | |
| | Input | 96,000 mono Float32 samples | |
| | Sample rate | 16 kHz | |
| | Window | 6 seconds | |
| | Output | 192-dimensional L2-normalized embedding | |
| | Minimum deployment | macOS 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 |
|
|
| | File | Size | Description | |
| |---|---:|---| |
| | `ReDimNet2B6.mlmodelc/` | 24.7 MiB | Precompiled Core ML model | |
| | `config.json` | <2 KiB | Input, output, source revision, checksum, and validation metadata | |
| | `README.md` | <4 KiB | This model card | |
| | `LICENSE` | 1.0 KiB | MIT license from the upstream implementation | |
|
|
| ## Performance |
|
|
| Measured on an Apple M2 Max after two warm-up predictions: |
|
|
| | Measurement | Result | Meaning | |
| |---|---:|---| |
| | Warm six-second inference | 13.8 ms | One voice-profile embedding | |
| | Warm throughput | 72.6 embeddings/s | Repeated six-second windows after warm-up | |
| | Meeting pilot equal-error rate, 2-second clips | 1.50% | Lower is better; WeSpeaker Core ML was 5.17% | |
| | Meeting pilot equal-error rate, 3-second clips | 0.00% | Lower is better; WeSpeaker Core ML was 1.50% | |
| | LibriSpeech test-clean equal-error rate, 40 speakers | 0.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](https://github.com/PalabraAI/redimnet2) B6 |
| `vb2+vox2_v0` large-margin checkpoint. The source revision and checkpoint |
| SHA-256 are recorded in `config.json`. |
|
|
| ## Links |
|
|
| - [speech-swift](https://github.com/soniqo/speech-swift) — Apple SDK |
| - [Docs](https://soniqo.audio/getting-started) — install and CLI docs |
| - [soniqo.audio](https://soniqo.audio) |
| - [blog](https://soniqo.audio/blog) |
|
|