Repository: snakers4/silero-vad
Stars: 8821
README.md
   
   
<br/>
<h1 align="center">Silero VAD</h1>
<br/>
Silero VAD - pre-trained enterprise-grade Voice Activity Detector (also see our STT models).
<br/>
<p align="center">
<img src="https://github.com/user-attachments/assets/dfd29c4f-226a-4687-8bea-e8faaaee0287" />
</p>
<details>
<summary>Real Time Example</summary>
https://user-images.githubusercontent.com/36505480/144874384-95f80f6d-a4f1-42cc-9be7-004c891dd481.mp4
Please note, that video loads only if you are logged in your GitHub account.
</details>
<br/>
<h2 align="center">Fast start</h2>
<br/>
<details>
<summary>Dependencies</summary>
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.
Dependencies:
- torch>=1.12.0;
- torchaudio>=0.12.0 (for I/O only);
- onnxruntime>=1.16.1 (for ONNX model usage).
Silero VAD uses torchaudio library for audio I/O (torchaudio.info, torchaudio.load, and torchaudio.save), so 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.
</details>
Using pip:pip install silero-vad
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)
)
<br/>
<h2 align="center">Key Features</h2>
<br/>
- 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#Sampling_rate).
- 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.
<br/>
<h2 align="center">Typical Use Cases</h2>
<br/>
- 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
<br/>
<h2 align="center">Links</h2>
<br/>
- Examples and Dependencies
- Quality Metrics
- Performance Metrics
- Versions and Available Models
- Further reading
- FAQ
<br/>
<h2 align="center">Get In Touch</h2>
<br/>
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]}
}<br/>
<h2 align="center">Examples and VAD-based Community Apps</h2>
<br/>
- 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