File size: 3,171 Bytes
1272aa3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
---
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)