polyvoice
Speaker diarization for Rust — who spoke when, without Python. Silero VAD + WeSpeaker embeddings + AHC clustering in a single call.
Quick Start
[]
= { = "0.6", = ["onnx"] }
Features
- One-call pipeline —
Pipeline::run()wires VAD → embeddings → AHC clustering. - Online & offline —
OnlineDiarizerfor streaming,OfflineDiarizerfor batch. - CPU-only, ~30 MB — ONNX Runtime, no GPU or Python runtime required.
- Multi-language — Rust library, Python bindings (
pip install polyvoice), C FFI, CLI. - Lock-free concurrency —
crossbeam-queuesession pool for parallel inference. - Hardened — Miri (memory), Loom (concurrency), cargo-fuzz (4 targets), model signing (Minisign).
Minimal Example
use ;
use Path;
Python / C FFI
=
=
// cargo build --features ffi
// See include/polyvoice.h and examples/ffi_usage.c
;
;
Benchmarks
| Dataset | DER | Speed |
|---|---|---|
| VoxConverse (232 files) | ~14% | 10x RT (CPU) |
| AMI (16 meetings) | ~23% | 7x RT (CPU) |
~80% of pyannote's accuracy at 10× the speed on CPU — no GPU, no Python.
License
MIT