Dograh

WebRTC VAD vs Silero VAD: Which Works on Phone Calls

WebRTC VAD vs Silero VAD: Which Works on Phone Calls
ComparisonNovember 6, 2026·6 min read

WebRTC VAD vs Silero VAD: Which Works on Phone Calls

Abhishek Kumar
Abhishek Kumar·Co-founder, Dograh AI

Co-founder of Dograh, building the future of open-source voice AI agents. Own your voice AI stack.

Silero VAD is the better fit for phone calls. WebRTC VAD is tiny and fast, but it often mistakes noise for speech, the main phone-line problem. Silero is what Pipecat and LiveKit ship, and what Dograh, the open-source AI voice agent platform we build, uses on every call. You can self-host it or run it on Dograh Cloud.

Key Takeaways

  • WebRTC VAD separates silence from noise well, and speech from noise poorly.
  • Silero's published scores are measured at 16 kHz, so test at 8 kHz yourself.
  • A TV is real speech to any detector, so guard interruptions with words.

This post is part of our guide to voice activity detection, where phone lines trip up the detector in four ways. Below, we compare how WebRTC VAD and Silero VAD detect speech, where each fails on phone audio and which one voice stacks, Dograh included, ship.

How WebRTC VAD decides a frame is speech

WebRTC VAD is the detector from the WebRTC project, and it makes a yes or no call on each short frame of audio. It is a statistical model, a Gaussian mixture model over a handful of frequency bands, that compares the energy in each band with what speech and noise usually look like. There is no neural network and almost nothing to load, which is why it runs anywhere.

The common Python wrapper, py-webrtcvad, takes 16-bit mono audio at 8,000, 16,000, 32,000 or 48,000 Hz, in frames of 10, 20 or 30 milliseconds. Its one tuning knob is an aggressiveness mode from 0 to 3. Mode 0 is the least aggressive about filtering out non-speech, and mode 3 the most. You get a plain yes or no per frame, with no score to set a threshold on.

How Silero VAD decides a frame is speech

Silero VAD is a small neural network trained to tell speech from everything else. Silero's repo describes a model of about 2 MB, trained on audio in more than 6,000 languages, that processes a chunk of 30 milliseconds or more in under a millisecond on one CPU thread. It ships under the MIT licence, with an ONNX version that voice frameworks load directly.

Silero accepts 8,000 or 16,000 Hz audio and returns a speech probability between 0 and 1 for each chunk. That probability is the big practical difference. The framework around it picks the threshold and the timers, so you can trade missed soft speech against noise counted as speech in fine steps, where WebRTC VAD gives you four modes.

Where each one fails on 8 kHz phone audio

Most phone calls still reach the agent as 8 kHz audio, while a browser demo runs at 16 kHz. This narrowband audio keeps only the lower part of a voice's frequency range, and codecs squeeze it further, so both detectors have less to work with than in a web test.

WebRTC VAD fails on noise that looks like speech. Silero's own write-up puts it plainly: WebRTC VAD is "extremely fast and pretty good at separating noise from silence, but pretty poor at separating speech from noise". On a call that means traffic or a busy room can mark frames as speech and stop the agent mid-sentence. Raising the mode to 3 filters more of that out, but it also trims quiet speech, so soft-spoken callers get cut short.

A caller stands near passing traffic. Their call audio moves as short frames under WebRTC VAD with its mode turned up to 3: silence and traffic are marked no and the caller's speech yes, but a soft-spoken caller's quiet speech is also marked no.
WebRTC VAD gives a plain yes or no per frame, with one knob, an aggressiveness mode from 0 to 3. Silero returns a speech probability instead, so the framework around it can trade missed soft speech against noise in fine steps.

Silero fails more quietly. Its published accuracy numbers are all measured at 16 kHz, so the 8 kHz behaviour is yours to test. Pipecat's Silero wrapper resets the model every 2 seconds because its state drifts during long silence or noise, which a comment in its source notes is strongest at 8 kHz.

Both share one limit. A TV in the room carries real speech, so a better detector still scores it as speech. No detector can tell the caller's voice from a newsreader's on sound alone, which is why the interruption rule on top of VAD matters as much as the detector.

Dograh

Open Source Alternative to Vapi / Retell

Self-hosted voice agent platform — no per-minute fees

dograh-hq/dograh

Star on GitHub

WebRTC VAD vs Silero VAD by the numbers

The best-documented comparison comes from Silero, so read it as a vendor measuring itself. Silero's quality metrics, all at 16 kHz, give WebRTC VAD a ROC-AUC of 0.73 on a mixed set of domains against 0.97 for Silero v6. On clips with no speech at all, Silero v6 judged 87% correctly and WebRTC VAD none, and on private noisy calls without speech the scores were 0.71 and 0.15.

A second vendor view points the same way with one twist. Picovoice, which sells its own detector, measured Silero catching 87.7% of speech at a 5% false-alarm rate against 50% for WebRTC VAD. At a looser 25% false-alarm rate, WebRTC VAD came out ahead, so a setup that tolerates many false alarms is the one place it competes.

WebRTC VADSilero VAD
MethodGaussian mixture model over frequency bandsSmall neural network
Output per frameSpeech yes or noSpeech probability, 0 to 1
Sample rates8, 16, 32 or 48 kHz8 or 16 kHz
Frame size10, 20 or 30 ms32 ms in voice frameworks
TuningAggressiveness mode 0 to 3Threshold and timers set by the framework
Size and speedVery small, very fastAbout 2 MB, under 1 ms per chunk on one CPU thread
Mixed-domain ROC-AUC, 16 kHz (Silero's metrics)0.730.97 (v6)
Noise-only clips judged correctly, 16 kHz (Silero's metrics)0%87% (v6)
Used in Pipecat, LiveKit and DograhNoYes

Which one voice agent stacks ship

The voice agent frameworks have settled on Silero. Pipecat ships it as its main analyzer, with Krisp VIVA and AIC Quail as alternatives, and LiveKit ships a Silero plugin. WebRTC VAD still turns up in browser tools, where its small size matters more than its noise handling.

Dograh uses Silero through Pipecat on every cascade call, and the same detector handles turn start for speech-to-speech models from Google, Vertex, Nova Sonic and Ultravox. OpenAI Realtime, Azure Realtime and Grok bring their own detection, so local Silero is skipped on those calls. Even with Silero, Dograh's Minimum words Interruption Strategy keeps a TV or a cough from stopping the agent, since the caller has to say 2 words first, a number you can raise to 10.

Silero runs under different defaults in each framework, which our comparison of LiveKit VAD and Pipecat VAD settings lays out parameter by parameter. For callers in noisy places, our post on accents and background noise covers the speech-to-text side.

Join the Dograh Community

Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.

Glossary

Aggressiveness mode
WebRTC VAD's only setting, from 0 to 3. Higher modes filter out more non-speech and also trim more quiet speech, so mode 3 on a phone line can clip soft-spoken callers.
Gaussian mixture model
A statistical model that describes a signal as a mix of simple bell-curve shapes. WebRTC VAD uses one over frequency band energies to judge speech or noise, which is fast but easily fooled by noise that has speech-like energy.
ROC-AUC
A single score for how well a detector separates speech from non-speech across every possible threshold, where 1.0 is perfect and 0.5 is a coin toss. Silero's metrics give WebRTC VAD 0.73 and Silero v6 0.97 on a mixed set, at 16 kHz.
Narrowband audio
Phone audio sampled at 8 kHz, which keeps only the lower part of a voice's frequency range. Most phone calls still reach a voice agent this way, so detector scores measured at 16 kHz need re-checking.

Frequently Asked Questions

Get started with Dograh

Build, deploy, and scale AI agents with Dograh. Join the community of developers building the future.