Silero VAD is an MIT-licensed speech detector of about 2 MB that scores 32 ms of audio at a time on one CPU thread, at 8 or 16 kHz. Voice stacks wrap it in their own start and stop timers. Dograh, the open-source AI voice agent platform we build, ships the v6.2 model, self-hosted or on Dograh Cloud.
Key Takeaways
- Silero v6.2 lists lower quality phone calls among its fixes, without new metrics.
- Offline examples use a 0.5 threshold, while Pipecat's live wrapper asks for 0.7.
- Check which model file your stack ships, not only the package version.
This post is part of our guide to voice activity detection, where Silero is the detector most open-source voice stacks use. Below, we follow the model's releases, explain what each setting means on a live call, show the reset rule and check which file Dograh actually runs.
Silero's releases, from v6.0 to v6.2.3
Silero has changed more in its v6 line than its size suggests, and two releases matter for phone agents. Silero's release notes for v6.0 report 16% fewer errors on noisy real-life data and 11% fewer on its multi-domain validation set. The same notes list known weak spots: music with voice-like instruments, and very high-pitched voices.
Version 6.2 reworked how the model is trained and lists quality gains on known edge cases, including lower quality phone calls, muted speech and child voices. It publishes no new metrics for those gains, so the phone-call fix is a claim to test on your own recordings. The noise-only scores that most comparisons quote come from the earlier wiki page, and our post on WebRTC VAD vs Silero VAD covers them.
The point releases since then are about packaging. Version 6.2.1 made ONNX Runtime optional. Version 6.2.2 added an offline ONNX "sequence" model that releases Python's global lock, for batch jobs, and it takes 16 kHz audio only. Version 6.2.3 is the latest. None of these changes the streaming model a live agent runs.
What each setting means on a live call
Most Silero settings you read online are offline defaults, built for cutting a recording into speech segments. In Silero's own utility code, get_speech_timestamps starts speech above a probability of 0.5 and only ends it once the score falls below a second, lower line, 0.15 under the first. It keeps segments of at least 250 ms, ends one after 100 ms of silence and pads each side by 30 ms.
A live voice stack keeps the same ideas under its own names and values. Pipecat's wrapper, which Dograh uses, starts speech when frames stay above 0.7 and above a volume floor of 0.6 for 0.2 seconds, and stops it after 0.2 seconds below the line. LiveKit's plugin uses 0.5 and waits 0.55 seconds. Our comparison of LiveKit VAD and Pipecat VAD settings tables every parameter in both.
The silence setting tends to move results more than the threshold. In Cekura's test of one recording, the default settings found 19 segments, a 300 ms minimum silence found 12 and 550 ms found 7. That is a single file from a testing vendor, so treat it as a direction to test on your own calls. To try the same change on a real call, our post on voice activity detection in Python runs Silero on an 8 kHz recording, one setting at a time.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
Why the model state gets reset
Silero keeps a memory of the audio it has heard, and that memory can drift during long silence or steady noise. Live wrappers reset it now and then. A reset at the wrong moment costs something too, because the model loses confidence and can miss the start of a word.
Pipecat's Silero wrapper handles this with one rule. A reset falls due after 2 seconds of audio, and it only happens once the detector is quiet and the last five windows, about 160 ms, all scored below 0.1. During speech, or a burst of noise that looks like speech, it waits, so the reset never lands in the middle of a word.

Which Silero file Dograh runs
Dograh runs Silero through its fork of Pipecat, and the model file in that fork is byte-for-byte the v6.2 release. We checked the bundled silero_vad.onnx against Silero's tags by its git hash, and it matches v6.2, while v6.0 and v5.1.2 differ. The pip package version a stack lists can say little about this, because many frameworks ship their own copy of the model file.
The model runs on the CPU through ONNX Runtime, in 32 ms windows: 256 samples at 8 kHz or 512 at 16 kHz. Dograh accepts only those two rates for detection and keeps its audio pipeline at 16 kHz or below for that reason. It creates the detector with a 0.2-second stop time in three places: the caller's turn, the input gate at the start of the call, and the local detector some speech-to-speech models keep.
The other values are Pipecat's defaults, set in code. Self-hosted teams can read them in run_pipeline.py and change them before a rebuild. The settings most teams change sit one layer up in the agent editor, as Turn Detection and interruption settings, and those fix the symptoms callers hear.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Where Silero is skipped
Some setups never run the local detector for parts of the call, so tuning it there changes nothing. If the agent's speech-to-text is Deepgram Flux, Cartesia ink-2, or Dograh's own speech-to-text in Multilingual mode or one of its 10 single languages, the "Voice activity" interruption strategy follows the provider's signal that the caller started speaking.
Speech-to-speech models split two ways. OpenAI Realtime, Azure Realtime and Grok use the provider's own speech signals, with no local Silero. Gemini Live, Vertex, Nova Sonic and Ultravox keep a local Silero detector for the start of the caller's turn. For noise problems on the cascade path, our post on tuning VAD for noisy phone calls goes setting by setting.
Setting it up for phone calls
Run Silero at the rate the carrier sends. Twilio, Plivo, Vobiz and Asterisk deliver 8 kHz audio, and Vonage delivers 16 kHz. Silero takes both natively, so there is no reason to resample a phone call before detection.
A CPU is enough. The Silero VAD project page puts one audio chunk of 30 ms or more at under 1 ms on a single CPU thread, and ONNX can run faster still. Give each call its own model state and keep the 16 kHz sequence model for offline batch work. Tune from your own call recordings, since the v6.2 phone fixes come with no published numbers. Dograh is open source, so the detector values above can be read in its code before you change anything.
Glossary
- neg_threshold
- The lower score Silero's offline code uses to end speech, 0.15 below the start threshold by default. Speech starts above 0.5 and only ends once the score drops below 0.35, so short dips do not split a word.
- Model state reset
- Clearing the memory Silero carries from one audio window to the next. Pipecat's wrapper resets it after 2 seconds, and only when the last five windows all scored below 0.1, so a reset never lands mid-word.
- ONNX Runtime
- The engine that runs Silero's exported model file on a CPU without PyTorch. Dograh's fork runs Silero this way, in 32 ms windows, on 8 or 16 kHz audio.
- Sequence model
- Silero's offline ONNX model added in v6.2.2. It processes whole files, releases Python's global lock for batch work and accepts 16 kHz audio only, so it is not the model a live 8 kHz phone agent runs.

