ReDimNet2-B3 (vox2, large-margin) β ONNX
An ONNX export of ReDimNet2-B3 for on-device speaker diarization and cross-meeting voice recognition. The mel frontend is inside the graph, so the model takes raw audio and returns an embedding with no feature code on the caller's side.
This file exists because the upstream project publishes PyTorch checkpoints only. It is a format conversion and nothing else: no retraining, no fine-tuning, no quantisation. Weights, architecture and all credit belong to the upstream authors.
Provenance and license
| Upstream | PalabraAI/redimnet2 v1.0.0 |
| Checkpoint | b3-vox2-lm.pt (VoxCeleb2, large-margin fine-tuned) |
| Upstream license | MIT, Copyright (c) 2026 Palabra.ai |
| This export | MIT, same terms |
| Exported | 2.8.0, opset 18 |
Upstream reports 0.42 / 0.66 / 1.22 % EER on VoxCeleb1-O / E / H for this architecture. Those are the authors' numbers for the PyTorch model; this export matches it numerically (below), so they carry over.
Interface
waveform float32 [batch, samples] 16 kHz mono, any length
->
embedding float32 [batch, 192]
Both axes of the input are dynamic. Compare embeddings with cosine
similarity. The graph contains no STFT operator β the upstream frontend is
convolutional β so it loads on any ONNX Runtime build with the standard CPU
kernels.
import numpy as np, onnxruntime as ort
session = ort.InferenceSession("redimnet2-b3-vox2-lm.onnx", providers=["CPUExecutionProvider"])
embedding = session.run(["embedding"], {"waveform": audio[None, :].astype(np.float32)})[0]
Verification
Reproduced by export-redimnet2.py in this repository, which exports and
then checks the result against PyTorch on a fixed waveform:
| Check | Result |
|---|---|
| Cosine vs PyTorch, 3 s input | 1.000000 |
| Cosine vs PyTorch, 6 s input | 1.000000 |
| File size | 18,045,013 bytes |
| SHA-256 | dcecdce7d52bbd4739b24d0874359ec564d43f4b3a392f0104f505593b566d41 |
The same file was then run through the Rust ort crate (ONNX Runtime
2.0.0-rc.13) on macOS arm64 and Windows x86_64: cosine 1.000000 against the
PyTorch reference on both, agreeing with each other to six decimal places.
Reproducing
uv run export-redimnet2.py --out redimnet2-b3-vox2-lm.onnx
The script pins every dependency inline and fetches the upstream checkpoint by
release tag. Note two things a clean environment hits: scipy is imported by
the upstream frontend but not declared in its hubconf.py, and the dynamo
exporter fails on the frontend's normalisation under torch 2.8, so the export
uses the TorchScript path.
Why this file exists
It is the speaker embedding for EverTranscript, a local-only meeting notetaker, where it does both in-meeting clustering and cross-meeting voice recognition. Published so that application's builds and CI can fetch a checksummed artifact rather than each installation running a PyTorch export. Anyone else is welcome to it under the same MIT terms.