Silero VAD for BirdNET-Go
Unmodified re-host of the Silero VAD
weights (release v6.2.1, commit 7e30209), packaged with an interface spec
and checksums for use as a privacy filter in BirdNET-Go: detecting human
speech in soundscape recordings so those windows can be discarded or anonymized
before storage.
Silero VAD is a small streaming voice activity detector. It emits a per-window speech probability and never transcribes, so it is a good fit for a privacy gate: it answers "is someone speaking" without ever recording what was said.
Why this model for BirdNET-Go
- Tiny (1.3 to 2.3 MB) and MIT licensed, no telemetry or keys.
- Runs on onnxruntime, which BirdNET-Go already links for the Perch v2 and BirdNET v3.0 models, so it adds no new runtime dependency.
- Negligible CPU cost: under 1 ms per 30 ms window on a single thread.
Files
| File | Role | Size | Opset / IR | Sample rates |
|---|---|---|---|---|
silero_vad.onnx |
primary, recommended | 2.3 MB | 16 / 8 | 16 k + 8 k |
silero_vad_16k_op15.onnx |
compact, 16 k only | 1.3 MB | 15 / 8 | 16 k |
silero_vad_op18_ifless.onnx |
mobile / delegate builds | 2.8 MB | 18 / 10 | 16 k + 8 k |
silero_vad.jit |
TorchScript reference | 2.3 MB | n/a | 16 k + 8 k |
For BirdNET-Go on CPU use silero_vad.onnx. The op18_ifless variant removes
almost all If control-flow nodes for hardware delegates (NNAPI, CoreML) that
cannot run subgraphs, but its IR 10 needs onnxruntime >= 1.17. metadata.json
carries per-file sizes, sha256, opset, and IR version in machine-readable form.
Interface
Stateful streaming model. Reset state to zeros per independent stream, feed one fixed window at a time, and thread the returned state forward.
Inputs
inputfloat32[1, samples]mono PCM in [-1, 1];samples= 512 at 16 kHz or 256 at 8 kHz (a 32 ms window).statefloat32[2, 1, 128]LSTM state; zeros to start, then the previousstateN.srint64 scalar,16000or8000.
Outputs
outputfloat32[1, 1]speech probability in [0, 1].stateNfloat32[2, 1, 128]state to carry into the next call.
BirdNET-Go runs audio at 48 kHz. Resample to 16 kHz and feed exact 512-sample windows. Off-spec window sizes may execute but yield unreliable scores, so use the trained sizes only.
Thresholding
Higher probability means more likely speech. Upstream default is 0.5. Wire the
probability onto BirdNET-Go's existing PrivacyFilter.Confidence setting and
bias conservative (a lower threshold) for a privacy gate, so borderline speech is
filtered rather than leaked.
Caveat: some bird vocalizations have speech-like harmonic structure and can raise the score. Field-test false-positive behavior against real soundscapes before trusting this as a privacy gate.
Verification
All three ONNX files pass onnx.checker (full check) and an onnxruntime
CPUExecutionProvider smoke test (onnx 1.22.0, onnxruntime 1.27.0). See
SHA256SUMS for integrity and metadata.json for the full review.
License and attribution
MIT, unchanged from upstream. All credit to the Silero Team. The original weights and code are at https://github.com/snakers4/silero-vad. This repository only re-hosts the released artifacts with integration metadata; the model itself is not modified.