- 实时语音交互的前端门控:每 30ms 一帧判断是否有人说话,CPU 单线程开销小到可以塞进主线程外的独立线程,比 WebRTC VAD 在噪声下的误触发少,代价是要带 torch 或 onnxruntime
- 离线批量转写/评测预处理:先用它把长录音切成语音段再送 ASR,省掉大量静音推理开销;比直接整段喂 Whisper 便宜,但需要自己写切分和拼接逻辑
- 移动端/ARM 设备上的唤醒前过滤:JIT 模型约 2MB,走 ONNX Runtime 可以脱离 PyTorch 部署,适合包体积敏感的场景;换 Silero 之外的选择通常是自研小 CNN 或厂商 SDK
- 给已有 ASR 流程加端点检测:只做「这句说完了没有」的判断,不引入完整对话框架
silero-vad
snakers4MIT活跃维护 有专家点评预训练的企业级语音活动检测(VAD)模型,能精准切分音频中的说话段与静音段,支持 ONNX 和 PyTorch 部署,适合语音识别、语音指令等场景的前置处理。
Silero VAD: pre-trained enterprise-grade Voice Activity Detector
专家点评
上手难度:进阶更新于 2026-11-11在音频流水线最前面切掉静音段的轻量 VAD,替掉 WebRTC VAD 那套老实现
适用场景
踩坑
- 装
silero-vad[audio]在 Python 3.9+ 会拉 torchcodec,而它要求系统里有 FFmpeg 4-9;容器镜像里没装 FFmpeg 的话 import 阶段就会失败,且报错信息不指向 FFmpeg - 走 torchaudio 后端时还要在 FFmpeg / sox_io / soundfile 里挑一个配好,三者行为不完全一致,换环境时容易在读取格式上出问题
- issue 里反复出现 ONNX 的 GPU 支持和 Mobile/ARM 部署这两类问题,说明跨出「x86 CPU + PyTorch」这条主路径后,文档覆盖不到的地方需要自己趟;纯 ONNX 路线在非 x86 架构上能不能跑通,取决于你选的 onnxruntime 后端,README 没有给出保证
- API 在版本间有过重构(get_speech_ts 相关),从 torch.hub 直接拉示例代码的写法会随版本失效,锁版本比跟最新更省事
同类对比
WebRTC VAD 是零依赖的替代,代价是噪声环境下准确率明显更差;如果只需要端点检测且已经在用 Whisper 生态,faster-whisper 自带的 VAD 能省掉一个依赖,但灵活度和独立部署能力不如它。
pip install silero-vad[audio]x86-64 系统需 1G 以上内存和带 AVX、AVX2、AVX-512 或 AMX 指令集的现代 CPU;纯 ONNX Runtime 方式可运行在 onnxruntime 支持的其他架构上;README 未说明显存要求。
项目说明
由 README 自动翻译提炼预训练语音活动检测器,轻量快速,适合在边缘和移动端做语音检测
预训练的企业级语音活动检测(VAD)模型,能精准切分音频中的说话段与静音段,支持 ONNX 和 PyTorch 部署,适合语音识别、语音指令等场景的前置处理。
核心能力
- 单线程 CPU 处理 30ms 音频块耗时不到 1ms
- JIT 模型仅约 2MB,适合边缘和移动端部署
- 支持 8000Hz 与 16000Hz 两种采样率
- 基于 PyTorch 和 ONNX 运行时,可跨平台移植
- MIT 许可,无遥测、无密钥、无注册
容易踩的坑
模型本身只依赖 torch,若自行加载音频可只装 pip install silero-vad;[audio] 在 Python 3.9+ 会拉入 torchcodec,而 torchcodec 需要系统安装 FFmpeg(4-9);用 torchaudio 时还需额外配置 FFmpeg、sox_io 或 soundfile 之一作为音频后端。
- v6.2.3v6.2.3 Make torchaudio optional最新正式版2026-09-23 · 2026-09-23 11:36 UTC
torchaudio is now an optional dependency instead of required. Only torch is required — the model itself never used torchaudio, only the
read_audio/save_audiohelpers did.Users who need audio I/O must now install a backend explicitly:
pip install silero-vad[audio](torchaudio)pip install silero-vad[codec](torchcodec)pip install silero-vad[all](everything)
Key changes:
read_audio/save_audionow work with either torchaudio or torchcodec; with neither installed they raise an error naming the extra to install- Fixed:
import silero_vadfailed when onnxruntime was not installed — the sequence path is now imported lazily - numpy is now declared in [onnx-cpu] / [onnx-gpu]
If you load audio yourself, no backend is needed at all:
from silero_vad import load_silero_vad, get_speech_timestamps model = load_silero_vad() audio = ... # 1-D float32 torch.Tensor from any source ts = get_speech_timestamps(audio, model, return_seconds=True) - v6.2.2v6.2.2: Sequence silero-vad2026-09-17 · 2026-09-17 14:48 UTC
查看更新说明
Added offline ONNX sequence to release GIL- #795
- 16 kHz only for now
- separate
silero_vad_16k_sequence.onnxmodel
from silero_vad import load_silero_vad, get_speech_timestamps_sequence, read_audio model = load_silero_vad(sequence=True) # loads silero_vad_16k_sequence.onnx audio = read_audio("audio.wav", sampling_rate=16000) ts = get_speech_timestamps_sequence(audio, model, return_seconds=True) - v6.2.1v6.2.1: Make ONNX Runtime optional2026-02-24 · 2026-02-24 08:41 UTC
查看更新说明
- onnxruntime is now an optional dependency instead of required.
You now need to install ONNX Runtime explicitly:
pip install onnxruntime# for CPUpip install onnxruntime-gpu# for GPU - v6.2v6.2 Edge Case Improvements2025-11-06 · 2025-11-06 08:38 UTC
查看更新说明
- VAD training paradigm reworked;
- Overall slight quality improvement (no metrics update);
- Higher stability on OOD / rare / strange / unique data;
- Significant quality improvements on various known edge cases:
- Unusual voices
- Child voices
- Cartoon voices
- Muted voices
- Muted speech
- Lower quality phone calls
What's Changed
- Fix type hint for min_silence_at_max_speech (float -> int) by @Purfview in https://github.com/snakers4/silero-vad/pull/714
- Adamnsandle by @adamnsandle in https://github.com/snakers4/silero-vad/pull/717
- Adamnsandle by @adamnsandle in https://github.com/snakers4/silero-vad/pull/719
Full Changelog: https://github.com/snakers4/silero-vad/compare/v6.1...v6.2
- v6.1Publish fix for PyTorch 2.9 to pip2025-11-05 · 2025-11-05 05:39 UTC
查看更新说明
What's Changed
- Remove ipdb and raise error directly in get_speech_timestamps by @mpariente in https://github.com/snakers4/silero-vad/pull/695
- Update java example for v6 by @VvvvvGH in https://github.com/snakers4/silero-vad/pull/697
- fix bug in tuning/utils.py: add optimizer.zero_grad() before loss.bac… by @JiJiJiang in https://github.com/snakers4/silero-vad/pull/699
- resolve torchaudio 2.9 utils by @adamnsandle in https://github.com/snakers4/silero-vad/pull/704
- Fixes few typos by @Purfview in https://github.com/snakers4/silero-vad/pull/707
- Removes redundant hop_size_samples variable by @Purfview in https://github.com/snakers4/silero-vad/pull/708
- drop_chunks fix by @adamnsandle in https://github.com/snakers4/silero-vad/pull/712
- Fixes and refines - use_max_poss_sil_at_max_speech arg by @Purfview in https://github.com/snakers4/silero-vad/pull/710
New Contributors
- @mpariente made their first contribution in https://github.com/snakers4/silero-vad/pull/695
- @JiJiJiang made their first contribution in https://github.com/snakers4/silero-vad/pull/699
- @Purfview made their first contribution in https://github.com/snakers4/silero-vad/pull/707
Full Changelog: https://github.com/snakers4/silero-vad/compare/v6.0...v6.1
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。

Silero VAD - pre-trained enterprise-grade Voice Activity Detector (also see our STT models).
Please note, that video loads only if you are logged in your GitHub account.
System requirements to run python examples on x86-64 systems:
python 3.8+;- 1G+ RAM;
- A modern CPU with AVX, AVX2, AVX-512 or AMX instruction sets.
Required:
torch>=1.12.0.
Everything else is optional and installed via extras:
| Extra | Installs | Needed for |
|---|---|---|
silero-vad[audio] | torchaudio>=0.12.0,<2.10, plus torchcodec on Python 3.9+ | read_audio / save_audio |
silero-vad[codec] | torchcodec | read_audio / save_audio with no torchaudio at all |
silero-vad[onnx-cpu] | onnxruntime>=1.16.1, numpy | ONNX and sequence models |
silero-vad[onnx-gpu] | onnxruntime-gpu>=1.16.1, numpy | ONNX on GPU |
silero-vad[all] | all of the above | everything |
[audio] pulls in torchcodec on Python 3.9+ because torchaudio>=2.9 hands decoding over to it and does not work without it; on Python 3.8 pip resolves an older torchaudio that decodes on its own. torchcodec itself needs FFmpeg (4-9) on the system.
The model itself needs only torch — if you already load audio yourself, pass a 1-D float32 torch.Tensor straight to get_speech_timestamps and install nothing extra.
The bundled I/O helpers (read_audio, save_audio) work with either backend: torchaudio if present, otherwise torchcodec. Note that torchcodec resamples through FFmpeg rather than torchaudio.transforms.Resample, so results can differ by ~1e-3 on files that need resampling.
With torchaudio, a proper audio backend is required:
- Option №1 - FFmpeg backend.
conda install -c conda-forge 'ffmpeg<7'; - Option №2 - sox_io backend.
apt-get install sox, TorchAudio is tested on libsox 14.4.2; - Option №3 - soundfile backend.
pip install soundfile.
If you are planning to run the VAD using solely the onnx-runtime, it will run on any other system architectures where onnx-runtume is supported. In this case please note that:
- You will have to implement the I/O;
- You will have to adapt the existing wrappers / examples / post-processing for your use-case.
Using pip:
pip install silero-vad[audio] (or plain pip install silero-vad if you load audio yourself)
from silero_vad import load_silero_vad, read_audio, get_speech_timestamps
model = load_silero_vad()
wav = read_audio('path_to_audio_file')
speech_timestamps = get_speech_timestamps(
wav,
model,
return_seconds=True, # Return speech timestamps in seconds (default is samples)
)
Using torch.hub:
import torch
torch.set_num_threads(1)
model, utils = torch.hub.load(repo_or_dir='snakers4/silero-vad', model='silero_vad')
(get_speech_timestamps, _, read_audio, _, _) = utils
wav = read_audio('path_to_audio_file')
speech_timestamps = get_speech_timestamps(
wav,
model,
return_seconds=True, # Return speech timestamps in seconds (default is samples)
)
-
Stellar accuracy
Silero VAD has excellent results on speech detection tasks.
-
Fast
One audio chunk (30+ ms) takes less than 1ms to be processed on a single CPU thread. Using batching or GPU can also improve performance considerably. Under certain conditions ONNX may even run up to 4-5x faster.
-
Lightweight
JIT model is around two megabytes in size.
-
General
Silero VAD was trained on huge corpora that include over 6000 languages and it performs well on audios from different domains with various background noise and quality levels.
-
Flexible sampling rate
Silero VAD supports 8000 Hz and 16000 Hz sampling rates.
-
Highly Portable
Silero VAD reaps benefits from the rich ecosystems built around PyTorch and ONNX running everywhere where these runtimes are available.
-
No Strings Attached
Published under permissive license (MIT) Silero VAD has zero strings attached - no telemetry, no keys, no registration, no built-in expiration, no keys or vendor lock.
- Voice activity detection for IOT / edge / mobile use cases
- Data cleaning and preparation, voice detection in general
- Telephony and call-center automation, voice bots
- Voice interfaces
- Examples and Dependencies
- Quality Metrics
- Performance Metrics
- Versions and Available Models
- Further reading
- FAQ
Try our models, create an issue, start a discussion, join our telegram chat, email us, read our news.
Please see our wiki for relevant information and email us directly.
Citations
@misc{Silero VAD,
author = {Silero Team},
title = {Silero VAD: pre-trained enterprise-grade Voice Activity Detector (VAD), Number Detector and Language Classifier},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/snakers4/silero-vad}},
commit = {insert_some_commit_here},
email = {[email protected]}
}
-
Example of VAD ONNX Runtime model usage in C++
-
Example of VAD ExecuTorch model usage in C++
-
Voice activity detection for the browser using ONNX Runtime Web
-
Rust, Rust (wavekat-vad), Go, Java, C++, C# and other community examples
-
OpenVINO conversion guidelines
-
Optional offline ONNX sequence inference for long recordings
-
A tinygrad model with a pico example in the docsting + separate weights in safetensors format (for simplicity we provided just the 16k model)