Voxa.Audio.Diarization.Onnx
0.7.2-alpha
dotnet add package Voxa.Audio.Diarization.Onnx --version 0.7.2-alpha
NuGet\Install-Package Voxa.Audio.Diarization.Onnx -Version 0.7.2-alpha
<PackageReference Include="Voxa.Audio.Diarization.Onnx" Version="0.7.2-alpha" />
<PackageVersion Include="Voxa.Audio.Diarization.Onnx" Version="0.7.2-alpha" />
<PackageReference Include="Voxa.Audio.Diarization.Onnx" />
paket add Voxa.Audio.Diarization.Onnx --version 0.7.2-alpha
#r "nuget: Voxa.Audio.Diarization.Onnx, 0.7.2-alpha"
#:package Voxa.Audio.Diarization.Onnx@0.7.2-alpha
#addin nuget:?package=Voxa.Audio.Diarization.Onnx&version=0.7.2-alpha&prerelease
#tool nuget:?package=Voxa.Audio.Diarization.Onnx&version=0.7.2-alpha&prerelease
Voxa.Audio.Diarization.Onnx
The reference ONNX implementations for Voxa speaker diarization (VLS-005 WS2) — the model-backed engines
that plug into the seams shipped by Voxa.Audio.Diarization and run on the shared Voxa.Audio.Onnx host.
PyannoteOnnxSegmentation (ISpeakerSegmentation)
Speaker segmentation / speech-region detection backed by pyannote segmentation-3.0 (MIT, © CNRS).
The reason it's a clean ONNX-on-host fit: the model's SincNet front-end is inside the graph, so it takes raw 16 kHz audio — there's no external STFT/mel to implement or get numerically wrong. This engine only:
- frames the audio into the model's sliding windows (geometry read from the ONNX metadata — nothing hard-coded, so a re-export carries its own parameters),
- runs the graph on the
OnnxModelHost(weights load once, process-wide), and - decodes the powerset output into absolute-time speech regions in pure C#
(
PowersetSegmentationDecoder— a faithful port of the sherpa-onnx reference: powerset→speech per frame, Hamming-weighted overlap-add of the windows, onset/offset binarisation). That decoding is unit-tested on synthetic logits — no model needed.
var host = new OnnxModelHost();
var path = await cache.ResolveAsync(PyannoteSegmentationCatalog.Model, ct); // pinned, SHA-256-verified
var segmentation = new PyannoteOnnxSegmentation(path, host);
var pipeline = new DiarizationPipeline(segmentation, embedding); // embedding = WeSpeaker (follow-up)
Pinned model
PyannoteSegmentationCatalog.Model pins the sherpa-onnx export of pyannote-3.0 — an ungated, plain
.onnx (the official pyannote/segmentation-3.0 repo is HF-gated; this byte-identical mirror isn't), so it
resolves through VoxaModelCache with no archive step or HF token. SHA-256 sourced from the real artifact.
Status / follow-ups
- Shipped: the segmentation engine + the pinned model + the pure decoder (unit-tested) + a
LocalModelssmoke test that runs the real model end-to-end. - Follow-ups: the
ISpeakerEmbeddingONNX impl (WeSpeaker, CC-BY-4.0 — needs an Fbank front-end) to complete the full diarization stack, and thevoxa transcribe --diarizeCLI consumer.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.ML.OnnxRuntime (>= 1.26.0)
- Voxa.Audio.Diarization (>= 0.7.2-alpha)
- Voxa.Audio.Onnx (>= 0.7.2-alpha)
- Voxa.Speech.Abstractions (>= 0.7.2-alpha)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.7.2-alpha | 86 | 7/10/2026 |
| 0.7.1-alpha | 64 | 7/10/2026 |
| 0.7.0-alpha | 66 | 7/10/2026 |
| 0.6.0-alpha | 81 | 6/22/2026 |