Idea Silero VAD settings

I’ve built an outbound Dialer and looking to optimize the VAD. I currently have my VAD set to:

min_silence_duration=0.5

activation_threshold=0.6

min_speech_duration=0.05

but experiencing issues with agent detecting silence. any suggestions for optimal settings?

What do you mean by silence? Have you tried other VAD providers maybe? Silero is just a basic one, and from my experience it can sometimes trigger on random sounds.

i hate silero. open to suggestions

Why? Have you tried increasing the min speech duration? What’s your current setup? You have customers mainly talking on the phone, or maybe multiple speakers being a bit further away from the mic? You can always test our VAD models VAD | ai-coustics | Audio intelligence

@Robert_hooman, “Detecting silence” splits into two different problems, and the fix differs, so pin which you have first: the VAD misses the caller’s speech and treats it as silence, or the agent is slow to decide the caller finished. Tuning VAD only helps the first.

On your values, the defaults are min_speech_duration=0.05, min_silence_duration=0.55, activation_threshold=0.5 (vad.py#L62-L66). Your activation_threshold=0.6 is above the default, so it needs stronger speech to trigger. Narrowband phone audio is lower energy, so 0.6 can drop quiet callers and read them as silence. Move it back toward 0.5, lower if callers are quiet. That value also sets the exit point: deactivation_threshold defaults to activation - 0.15 (#L137), so 0.6 gives a 0.45 release. Your min_speech_duration=0.05 is already the default; raise it to about 0.1 to reject line-noise clicks, which is the “random sounds” trigger.

from livekit.plugins import silero

vad = silero.VAD.load(
    activation_threshold=0.5,   # default; lower for quiet phone callers
    min_speech_duration=0.1,    # reject short line-noise clicks
    min_silence_duration=0.55,
)

If the real problem is response pace, VAD is the wrong knob. End-of-turn is the VAD silence floor, plus the turn-detector model, plus the endpointing delay: the agent waits up to max_endpointing_delay after VAD silence before it speaks (agent_session.py#L471). Those session params (min/max_endpointing_delay, turn_detection) now go through turn_handling=TurnHandlingOptions(...); the flat kwargs are deprecated (#L372-L381). For a dialer, keep Silero as the acoustic floor and let the turn-detector model handle context, then tune the endpointing delay for pace. That is usually why Silero alone feels wrong: it is not meant to judge turns on its own.