LiveKit and Pipecat both run the Silero VAD model, so the difference is in their defaults. LiveKit fires at a 0.5 speech probability and waits 0.55 seconds of silence. Pipecat asks for 0.7 plus a volume floor and waits 0.2 seconds. Dograh, the open-source AI voice agent platform we build on Pipecat, can be self-hosted or run on Dograh Cloud.
Key Takeaways
- Both frameworks wrap the same Silero model with different trigger and silence defaults.
- LiveKit waits 0.55 seconds of silence before speech stops. Pipecat waits 0.2.
- On noisy lines, raise the speech threshold and the minimum speech time first.
This post is part of our guide to voice activity detection, where VAD marks speech and turn detection decides when callers finish. Below, we list each framework's VAD and interruption settings from its own code, then what to change for noisy phone lines and where Dograh fits.
Pipecat's VAD settings, from its code
Pipecat keeps its VAD settings in one small class, VADParams, which every analyzer takes. Pipecat's source sets confidence to 0.7, start_secs to 0.2, stop_secs to 0.2 and min_volume to 0.6. A frame counts as speech only when the Silero score clears the confidence and the volume clears the floor, and the two timers turn those frames into speech start and speech stop events.
The Silero wrapper, SileroVADAnalyzer, accepts audio at 8,000 or 16,000 Hz only and reads 512 samples at 16 kHz or 256 at 8 kHz, 32 milliseconds either way. It runs the ONNX model on the CPU and resets the model's state every 2 seconds, because the state drifts in long silence or noise. The repo also carries a Krisp VIVA analyzer, which accepts more sample rates, and an AIC Quail analyzer.
Pipecat's VAD only marks speech, and the turn ends in a separate strategy. The default SpeechTimeoutUserTurnStopStrategy waits a user_speech_timeout of 0.6 seconds and for the transcript. The Smart Turn option is a small audio model that runs on the CPU and listens to how a sentence sounds, with a stop_secs of 3 seconds for turns it judges unfinished. Interruptions are a third setting, a turn start strategy such as a minimum word count.
LiveKit's VAD settings, from its code
LiveKit sets its Silero options when the plugin loads, through VAD.load. The Silero plugin docs list activation_threshold 0.5, min_speech_duration 0.05 seconds, min_silence_duration 0.55 seconds and prefix_padding_duration 0.5 seconds, with up to 60 seconds of buffered speech. The sample_rate takes 8,000 or 16,000 and defaults to 16,000, and force_cpu keeps inference on the CPU.
Speech ends when the score falls below a deactivation threshold, set 0.15 under the activation threshold by default, so a score hovering near 0.5 does not flicker on and off. The docs spell out the trade-off for the main threshold: a higher value "might miss soft speech", and a lower one "might identify noise as speech".
Turn and interruption settings sit in a separate object. In LiveKit Agents' turn handling options, the endpointing delay runs from 0.5 to 3 seconds after speech before a turn ends, in a fixed or dynamic mode. Interruptions are on by default and need 0.5 seconds of speech (min_duration), with min_words at 0. After a false interruption, the agent resumes its line once 2 seconds of silence pass. The older AgentSession arguments for these settings are deprecated in favour of this object.
One Silero model, two sets of defaults
The two frameworks load the same model and make different bets. LiveKit fires sooner on soft speech and waits longer before calling speech stopped. Pipecat asks for a higher score and a volume floor, then stops quickly and leaves the patience to its turn strategy. The table adds Dograh, which runs Pipecat's analyzer underneath.

| Setting | Pipecat | LiveKit | Dograh |
|---|---|---|---|
| Detector | Silero, with Krisp VIVA and AIC Quail as options | Silero plugin | Silero through Pipecat |
| Speech threshold | confidence 0.7 and min_volume 0.6 | activation_threshold 0.5, released 0.15 lower | Pipecat's 0.7 and 0.6, set in code |
| Speech before it counts | start_secs 0.2 s | min_speech_duration 0.05 s | 0.2 s |
| Silence before speech stops | stop_secs 0.2 s | min_silence_duration 0.55 s | 0.2 s |
| Sample rates | 8,000 or 16,000 Hz | 8,000 or 16,000 Hz, 16,000 by default | 8,000 or 16,000 Hz, the carrier's rate on phone calls |
| Turn end | Speech timeout 0.6 s, or Smart Turn (3 s) | Endpointing 0.5 to 3 s | Transcription-based, or Smart Turn Analyzer (Incomplete Turn Timeout 2 s) |
| Interruption guard | Turn start strategy, such as minimum words | min_duration 0.5 s, min_words 0 | Minimum words, 2 by default (1 to 10) |
| Licence | BSD 2-Clause | Apache 2.0 | BSD 2-Clause |
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
What to change for noisy phone lines
The right values depend on your callers' audio, so move one setting at a time and re-test on a real call. A TV or a busy shop floor both produce sound that a speech model scores as speech some of the time, and the aim is to keep that sound from starting a turn or stopping the agent.
On Pipecat, raise confidence and min_volume so background speech scores under the line, and raise start_secs so a short bang never becomes a speech start. Use a minimum-word turn start strategy for interruptions, so the agent keeps talking until the transcript holds real words. If Silero still struggles on your audio, the Krisp analyzer is the other detector in the repo to try.
On LiveKit, raise activation_threshold and accept that very soft voices may be missed, then raise min_speech_duration above its 0.05-second default. For interruptions, raise min_duration or set min_words above 0, which needs a speech-to-text model. Keep false-interruption resume on, so an agent stopped by a noise picks its line back up.
Both Silero wrappers take 8 kHz audio directly, and Silero's published scores are measured at 16 kHz, so judge every change on recorded phone calls. Our comparison of WebRTC VAD vs Silero VAD covers how the detector itself behaves on noisy 8 kHz audio.
Where Dograh fits on top of Pipecat
Dograh runs on a fork of Pipecat and uses its SileroVADAnalyzer with a stop time of 0.2 seconds, so the Pipecat column above is what runs under every Dograh call. The detector values are set in code. In the agent editor you get the two settings that change what callers hear, Turn Detection and Interruption Strategy, without writing pipeline code.
For noisy phone lines, the lever is Minimum words. It is the default Interruption Strategy, and the agent keeps talking until the caller's transcript holds 2 words, or up to 10 if you raise it. Voice activity, the other strategy, stops the agent on any detected speech and fits quiet lines. For callers who pause mid-sentence, Smart Turn Analyzer waits up to its Incomplete Turn Timeout, 2 seconds by default.
If you are still choosing a framework, LiveKit vs Pipecat compares them beyond VAD, and Dograh vs Pipecat shows what a ready platform adds on top of the framework. Because Dograh is open source under the BSD 2-Clause licence, every default in the last column can be read in its code.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Glossary
- Activation threshold
- The Silero score above which LiveKit counts a frame as speech, 0.5 by default. Pipecat's equivalent is confidence, 0.7 by default, paired with a volume floor.
- Deactivation threshold
- The lower score at which LiveKit's plugin marks speech as ended, 0.15 under the activation threshold by default. The gap stops a borderline score from switching speech on and off.
- Endpointing delay
- How long LiveKit waits after speech before ending the caller's turn, between 0.5 and 3 seconds by default. It sits after the VAD silence timer, not inside it.
- False interruption
- An interruption that turns out to be noise or a short sound, judged by silence afterwards. LiveKit treats one as false after 2 seconds of silence and resumes the agent's line.

