Реализация Voice Activity Detection (VAD) для сегментации аудио
VAD определяет, есть ли в данном аудиофрагменте речь. Это критический препроцессинговый шаг: без VAD STT-модель тратит ресурсы на тишину и шум, а голосовые боты не знают, когда пользователь закончил говорить.
Основные инструменты
Silero VAD — лучший баланс качности и скорости для продакшена:
import torch
import torchaudio
model, utils = torch.hub.load(
repo_or_dir='snakers4/silero-vad',
model='silero_vad'
)
(get_speech_timestamps, _, read_audio, _, _) = utils
audio = read_audio('audio.wav', sampling_rate=16000)
speech_timestamps = get_speech_timestamps(
audio,
model,
threshold=0.5,
sampling_rate=16000,
min_speech_duration_ms=250,
min_silence_duration_ms=100
)
# [{'start': 1600, 'end': 24320}, ...]
WebRTC VAD — минимальная задержка (<5 мс), подходит для real-time:
import webrtcvad
import collections
vad = webrtcvad.Vad(3) # агрессивность 0–3
def frame_generator(frame_duration_ms, audio, sample_rate):
n = int(sample_rate * (frame_duration_ms / 1000.0) * 2)
for offset in range(0, len(audio) - n + 1, n):
yield audio[offset:offset + n]
Сравнение VAD-библиотек
| VAD | Задержка | Качество | Лицензия |
|---|---|---|---|
| Silero VAD | 5–20 мс | Отличное | MIT |
| WebRTC VAD | <5 мс | Хорошее | BSD |
| pyannote VAD | 50+ мс | Отличное | MIT |
| faster-whisper VAD | 10–30 мс | Отличное | MIT |
Silero VAD — рекомендуемый выбор для большинства задач.
Сроки интеграции: 0.5–1 день.







