Speech

VAD

Voice Activity Detection — автоматическое определение участков аудио, содержащих речь.

Что такое VAD

VAD (Voice Activity Detection, определение речевой активности) — компонент, определяющий временные отрезки аудиозаписи, на которых присутствует речь, и отделяющий их от тишины, фонового шума и нережевых звуков.

VAD применяется как предобработка перед ASR: убрать паузы, сэкономить время inference и VRAM.

Silero VAD

Наиболее популярный open-source VAD. Лёгкая модель (~1 MB), быстрая, точная. Работает в реальном времени:

import torch

model, utils = torch.hub.load(
    repo_or_dir='snakers4/silero-vad',
    model='silero_vad',
    force_reload=False,
)
(get_speech_timestamps, _, read_audio, _, _) = utils

wav = read_audio('audio.wav', sampling_rate=16000)
speech_timestamps = get_speech_timestamps(wav, model, sampling_rate=16000)

# [{start: 0, end: 4800}, {start: 6400, end: 12800}, ...]

VAD в Whisper pipeline

faster-whisper включает встроенный VAD:

segments, info = model.transcribe(
    "audio.mp3",
    vad_filter=True,          # Включить VAD
    vad_parameters=dict(
        min_silence_duration_ms=500,  # Минимальная тишина для разбивки
        speech_pad_ms=400,            # Padding вокруг речевых сегментов
    )
)

WebRTC VAD

Классическая non-ML реализация от Google (из проекта WebRTC). Работает на CPU, очень быстрая, но менее точная, чем Silero. Доступна через webrtcvad Python-пакет.

Streaming VAD

Для real-time приложений VAD работает на коротких фреймах (например, 30 мс) и накапливает решения:

# Поток: каждые 30ms принять решение — речь или тишина
for chunk in audio_stream:
    is_speech = vad_model(chunk)
    if is_speech:
        buffer.append(chunk)
    elif buffer:  # Закончилась речь
        transcribe(buffer)
        buffer = []

Связанные термины

  • ASR — VAD как препроцессинг перед распознаванием
  • endpointing — определение конца высказывания (похоже на VAD)
  • диаризация — использует VAD как первый шаг
  • faster-whisper — встроенный VAD-фильтр

Готовы запустить GPU-задачу?

Запустить GPU-сервер