> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zeroruntime.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Silero

> Use the Silero voice activity detection plugin in a Zero Runtime pipeline to detect when the caller is speaking. Setup, options, and usage in Python, JavaScript, and Go.

Silero is a **voice activity detection (VAD)** plugin. It tells the pipeline when the
caller is speaking rather than silent, so the agent reacts to speech instead of background
noise.

## Usage

Import the plugin and pass it to the pipeline's `vad` slot.

<CodeGroup>
  ```python Python theme={null}
  from zrt.plugins import SileroVAD

  vad = SileroVAD(threshold=0.4)

  # Pipeline(vad=vad, ...)
  ```
</CodeGroup>

## Parameters

*Constructor parameters for the Python SDK (`SileroVAD`). The JavaScript and Go SDKs expose equivalent options where supported, in their idiomatic form (camelCase / `VADOptions` struct).*

| Parameter               | Type    | Default | Description                                                                                                                     |
| ----------------------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `threshold`             | `float` | `0.4`   | Speech-probability cutoff for classifying a frame as speech (0-1). Lower catches softer speech but allows more false positives. |
| `start_threshold`       | `float` | `None`  | Probability needed to start a speech segment. When set, overrides `threshold`.                                                  |
| `end_threshold`         | `float` | `None`  | Probability below which a speech segment ends. When set, overrides `stop_threshold`.                                            |
| `stop_threshold`        | `float` | `0.25`  | Probability below which a speech segment ends (used when `end_threshold` is unset).                                             |
| `min_speech_duration`   | `float` | `0.3`   | Minimum seconds of speech before it counts as a segment.                                                                        |
| `min_silence_duration`  | `float` | `0.4`   | Silence (seconds) required to mark the end of speech.                                                                           |
| `padding_duration`      | `float` | `0.5`   | Audio (seconds) kept before and after each segment.                                                                             |
| `max_buffered_speech`   | `float` | `60.0`  | Maximum seconds of speech buffered in memory.                                                                                   |
| `sample_rate`           | `int`   | `16000` | Sample rate the model runs at (used when `model_sample_rate` is unset).                                                         |
| `input_sample_rate`     | `int`   | `48000` | Sample rate (Hz) of the incoming audio.                                                                                         |
| `model_sample_rate`     | `int`   | `None`  | Sample rate the model runs at; falls back to `sample_rate` when unset.                                                          |
| `smoothing_factor`      | `float` | `0.35`  | EMA smoothing weight applied to speech probabilities.                                                                           |
| `force_cpu`             | `bool`  | `False` | Run inference on CPU even if a GPU is available.                                                                                |
| `min_volume`            | `float` | `0.0`   | Minimum normalized volume for a frame to be considered.                                                                         |
| `energy_filter_enabled` | `bool`  | `True`  | Apply the `min_volume` energy filter (when disabled, `min_volume` is treated as `0.0`).                                         |

Silero works with [turn detection](/plugins/turn-detection/namo), which decides when a
detected speaker has finished their turn.
