STT с шумоподавлением: WER < 10% даже при SNR 5 дБ

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
STT с шумоподавлением: WER < 10% даже при SNR 5 дБ
Средний
от 1 недели до 3 месяцев
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1348
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1247
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    949
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1183
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    642
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    921

Noise Robust STT: распознавание речи в шумной среде под ключ

При SNR ниже 10 дБ стандартные STT-модели показывают WER от 30% до 60% — это непригодно для голосового управления, диктовки или транскрибации в промышленных условиях. Например, для складского комплекса с гудением конвейеров удалось снизить WER с 45% до 8% после внедрения пайплайна с DeepFilterNet и Whisper large-v3. Ключевое отличие нашего подхода — индивидуальная настройка под акустику помещения, что невозможно при использовании универсальных решений. Мы решаем задачу комплексно: шумоподавление на базе DNN, адаптивная VAD-фильтрация и подбор устойчивых акустических моделей. Получите консультацию инженера — проанализируем ваши аудиозаписи и предложим оптимальный пайплайн.

Как добиться WER < 10% при SNR 5 дБ?

Первый этап — спектральное вычитание с адаптивной оценкой шума. Затем — DNN-денойзер, например, Facebook Denoiser (DNS64) или DeepFilterNet. После этого VAD-фильтр на основе Silero VAD отсекает неречевые фрагменты. Финальное распознавание выполняем на whisper-large-v3 или Wav2Vec2-XLSR, которые дополнительно fine-tuned на зашумлённых данных. Пример пайплайна на Python:

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)
Развёрнутый пайплайн с VAD и ASR
import faster_whisper
from silero_vad import get_speech_timestamps, read_audio

def process_audio(audio_path: str) -> str:
    denoised = denoise_audio(audio_path)
    speech_timestamps = get_speech_timestamps(denoised, model, sampling_rate=16000)
    model = faster_whisper.WhisperModel("large-v3", device="cuda")
    segments, info = model.transcribe(denoised, vad_filter=True)
    return ' '.join(seg.text for seg in segments)

Для минимизации latency на edge-устройствах используем ONNX Runtime с INT8-квантизацией денойзера и ASR-модели. Это снижает время инференса в 2-3 раза при падении WER не более чем на 2%.

Инструменты шумоподавления

Инструмент Тип Качество PESQ Задержка
Facebook Denoiser DNN >3.5 50–100 мс
RNNoise RNN 2.8-3.0 <10 мс
DeepFilterNet DNN >3.2 20–50 мс
Speex DSP DSP <2.0 <5 мс
noisereduce (scipy) Stat 1.5-2.0

Результаты получены на синтетических миксах с SNR 0–15 дБ из датасета CHiME-5.

Сравнение VAD-решений

VAD Точность (F1) Задержка Применение
Silero VAD 0.95 30 мс off/online
WebRTC VAD 0.85 10 мс real-time
InaSpeechSegmenter 0.88 100 мс batch

Почему Facebook Denoiser выгоднее классических DSP-фильтров?

Традиционные методы (спектральное вычитание, фильтр Винера) дают PESQ <2.5 и оставляют музыкальный шум. DNN-модель, обученная на 64 тыс. часов шумов, достигает PESQ >3.5 и снижает WER в среднем на 20% по сравнению с DSP. Это подтверждают наши тесты на датасетах CHiME-5 и LibriSpeech с искусственным шумом. Метрика PESQ показывает субъективное качество.

Что включает аудит акустики?

На первом этапе измеряем SNR и спектральный профиль шума с помощью импульсной характеристики помещения. Для типовых сценариев (офис, склад, улица) подбираем оптимальный денойзер и конфигурацию VAD. Пример: для склада с гудением кондиционеров эффективен DeepFilterNet с подавлением до 30 дБ на частоте 50 Гц. Добавляем анализ микрофонного тракта: расположение, диаграмма направленности, защита от ветра. Это позволяет снизить стоимость последующих этапов за счёт точного выбора компонентов.

Как VAD-фильтрация улучшает Whisper?

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
    }
)

Без VAD WER может быть выше на 15–25% при импульсных шумах. Наши кейсы показывают, что комбинация DeepFilterNet + Silero VAD + whisper-large-v3 даёт стабильное качество при SNR до 0 дБ.

Что входит в работу

  1. Аудит акустики: измерение SNR, спектральный анализ шума, определение типа (стационарный/импульсный).
  2. Выбор пайплайна: подбор денойзера и STT-модели под вашу аппаратную платформу (CPU/GPU/Edge).
  3. Кастомизация VAD: настройка порогов, фильтрация ложных срабатываний.
  4. Интеграция: REST API, WebSocket, микросервис на FastAPI.
  5. Тестирование: MUSHRA, PESQ, WER на ваших записях.
  6. Документация и обучение: описание pipeline, рекомендации по микрофонному тракту.

Свяжитесь с нами для тестового запуска пайплайна на ваших записях.

Сроки и опыт

Базовое шумоподавление + STT: 3–4 дня. Оптимизированный pipeline под конкретный тип шума: 1–2 недели. 5+ лет опыта в аудиообработке, 30+ проектов по STT для складов, колл-центров и промышленных цехов. Экономия от снижения WER окупает внедрение в течение нескольких месяцев.

Получите консультацию инженера — проанализируем ваши аудиозаписи и предложим решение с гарантией результата.

Распознавание и синтез речи: ASR, TTS, клонирование голоса

Заказчик приходит с задачей: транскрибировать 40 000 часов колл-центра за неделю. Штатный облачный ASR (Google Speech-to-Text) выдаёт WER 28% на отраслевой лексике и стоит ощутимо дорого при таких объёмах. Задача — снизить WER ниже 10% и перейти на self-hosted инференс.

Типовые проблемы, с которыми приходят

WER не сходится к нужной метрике. Чаще всего виновата не архитектура, а данные: шумные аудио без нормализации уровня (-23 LUFS вместо стандарта), смешанные языки в одном канале, акцент, специфическая доменная лексика. Whisper large-v3 из коробки даёт WER 8–12% на чистом русском и проваливается до 25–35% на записях с PSTN-артефактами и узкополосным кодеком G.711.

Диаризация ломается при больше двух спикеров. pyannote/speaker-diarization-3.1 работает стабильно при 2–3 говорящих, но DER (Diarization Error Rate) растёт с 6% до 18–22% при 5+ участниках конференции. Проблема усугубляется перекрёстными репликами: по умолчанию min_duration_on=0.1 срезает короткие вставки.

Клонирование голоса — латентность или качество. XTTS v2 (Coqui) даёт натуральный голос, но при потоковой генерации stream_chunk_size=20 первый аудиочанк прилетает через 1.4–2.0 с — неприемлемо для интерактивных сценариев. StyleTTS2 и Kokoro быстрее, но требуют точной подготовки референсного аудио.

Как это решается на практике

Базовый стек для production-пайплайна:

  • ASR: openai/whisper-large-v3 или faster-whisper (CTranslate2-бэкенд, x4 скорость vs оригинал)
  • Диаризация: pyannote.audio 3.x + интеграция через whisperx для выравнивания по словам
  • TTS: XTTS v2 для качества, Edge-TTS или Silero для низкой латентности
  • Клонирование: XTTS v2 (3–6 с референсного аудио) или OpenVoice v2

Типичный пайплайн для колл-центра выглядит так: аудио из очереди Kafka → нормализация ffmpeg -af loudnorm до -23 LUFS → faster-whisper с beam_size=5, vad_filter=Truepyannote диаризация → постпроцессинг (пунктуация через deepmultilingualpunctuation) → запись в PostgreSQL с временными метками.

Кейс из практики. Финтех-компания с 12 000 звонков/день. Исходный WER на русском с банковской лексикой — 22% (Google STT). После fine-tuning whisper-medium на 200 часах размеченных записей через Hugging Face transformers + Seq2SeqTrainer с learning_rate=1e-5, warmup_steps=500 — WER упал до 7.3%. Инференс на одной A10G через faster-whisper с compute_type=float16 обрабатывает 40-минутный звонок за 55 секунд. Итоговая стоимость инференса — $0.0008/мин против $0.016/мин у облачного провайдера.

Дообучение Whisper на доменных данных

Когда общая модель не справляется, fine-tuning — первый инструмент. Минимальный датасет для заметного улучшения — 20–30 часов размеченного аудио в целевом домене. Разметку можно получить через итеративный процесс: прогнать через базовую модель → вручную исправить 10–15% ошибок → переобучить → повторить.

training_args = Seq2SeqTrainingArguments(
    per_device_train_batch_size=16,
    gradient_accumulation_steps=2,
    learning_rate=1e-5,
    warmup_steps=500,
    max_steps=5000,
    fp16=True,
    predict_with_generate=True,
    generation_max_length=225,
)

Важно: при fine-tuning Whisper нужно замораживать encoder первые 1000 шагов (model.freeze_encoder()), иначе акустические признаки разъедутся раньше, чем decoder адаптируется к новой лексике.

Синтез речи: выбор под задачу

Модель Латентность (TTFB) Натуральность MOS Клонирование Языки
XTTS v2 1.2–2.0 с 4.1–4.3 Да, 3 с референса 17
StyleTTS2 0.3–0.6 с 4.0–4.2 Да, требует адаптации en, + fine-tune
Kokoro-82M 0.08–0.15 с 3.7–3.9 Нет en, ja
Silero TTS 0.05–0.1 с 3.4–3.6 Нет ru, en, de, и др.
Edge-TTS ~0.4 с (cloud) 4.0 Нет 100+

Для интерактивных ботов с требованием TTFB < 300 мс — Silero или Kokoro. Для озвучки контента, где важна натуральность — XTTS v2 с потоковой отдачей через WebSocket.

Процесс работы

Начинаем с аудит-сессии: берём 2–4 часа ваших записей, прогоняем через несколько моделей, замеряем WER/CER, смотрим на распределение ошибок по типам (лексические, акустические, язык). Это занимает 1–2 дня и сразу показывает, нужен ли fine-tuning или достаточно пост-обработки.

Далее — выбор архитектуры под ваш throughput: один GPU для 1000 мин/день или кластер с балансировщиком для 100 000+ мин/день. Деплой через Docker-контейнер с FastAPI или Triton Inference Server для батчированного инференса.

Сроки зависят от сложности: базовая интеграция готовой модели — 1–2 недели. Fine-tuning с подготовкой данных и валидацией — 4–8 недель. Полная разработка голосового пайплайна (ASR + диаризация + TTS + мониторинг) — 2–4 месяца.