Реализация распознавания речи в шумной среде (Noise Robust STT)
Стандартные STT-модели деградируют при SNR ниже 10 дБ: WER вырастает с 8% до 30–60%. Noise Robust STT решает задачу через предобработку аудио и применение шумоустойчивых моделей.
Пайплайн предобработки
import torch
import torchaudio
from denoiser import pretrained
# Facebook Denoiser — state-of-the-art шумоподавление
denoiser_model = pretrained.dns64()
def denoise_audio(audio_path: str) -> torch.Tensor:
waveform, sr = torchaudio.load(audio_path)
if sr != 16000:
waveform = torchaudio.functional.resample(waveform, sr, 16000)
with torch.no_grad():
denoised = denoiser_model(waveform.unsqueeze(0))[0]
return denoised.squeeze(0)
Инструменты шумоподавления
| Инструмент | Тип | Качество | Задержка |
|---|---|---|---|
| Facebook Denoiser | DNN | Высокое | 50–100 мс |
| RNNoise | RNN | Хорошее | <10 мс |
| DeepFilterNet | DNN | Высокое | 20–50 мс |
| Speex DSP | DSP | Среднее | <5 мс |
| noisereduce (scipy) | Stat | Среднее | — |
Для real-time: RNNoise или DeepFilterNet. Для batch: Facebook Denoiser.
Whisper с VAD-фильтрацией
Whisper имеет тенденцию галлюцинировать на зашумлённых участках. VAD-фильтр в faster-whisper отсекает шумные сегменты:
segments, _ = model.transcribe(
audio,
vad_filter=True,
vad_parameters={
"threshold": 0.5,
"min_speech_duration_ms": 250,
"min_silence_duration_ms": 2000,
"speech_pad_ms": 400
}
)
Тестирование на зашумлённых данных
Используем MUltiple Stimuli with Hidden Reference and Anchor (MUSHRA) тест и метрику PESQ для оценки качества после шумоподавления. Целевой PESQ > 3.0 для комфортного прослушивания.
Сроки: базовое шумоподавление + STT — 3–4 дня. Оптимизированный pipeline под конкретный тип шума — 1–2 недели.







