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 дБ.
Що входить в роботу
- Аудит акустики: вимірювання SNR, спектральний аналіз шуму, визначення типу (стаціонарний/імпульсний).
- Вибір пайплайну: підбір денойзера та STT-моделі під вашу апаратну платформу (CPU/GPU/Edge).
- Кастомізація VAD: налаштування порогів, фільтрація хибних спрацьовувань.
- Інтеграція: REST API, WebSocket, мікросервіс на FastAPI.
- Тестування: MUSHRA, PESQ, WER на ваших записах.
- Документація та навчання: опис pipeline, рекомендації щодо мікрофонного тракту.
Зв'яжіться з нами для тестового запуску пайплайну на ваших записах.
Терміни та досвід
Базове шумоподавлення + STT: 3–4 дні. Оптимізований pipeline під конкретний тип шуму: 1–2 тижні. 5+ років досвіду в аудіообробці, 30+ проектів по STT для складів, колл-центрів та промислових цехів. Економія від зниження WER окупає впровадження протягом кількох місяців.
Отримайте консультацію інженера — проаналізуємо ваші аудіозаписи та запропонуємо рішення з гарантією результату.
Розпізнавання та синтез мовлення: перша лінія проблеми
Ми стикаємося із замовником, який має 40 000 годин записів кол-центру й хоче транскрибувати їх за тиждень — це типова задача розпізнавання мови ASR. Штатний хмарний 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 обрізає короткі вставки. Рішення — збільшити min_duration_on до 0.3 та додати overlap detection через pyannote-overlap-detection.
Клонування голосу — латентність чи якість. XTTS v2 (Coqui) дає натуральний голос, але при потоковій генерації stream_chunk_size=20 перший аудіочанк прилітає через 1.4–2.0 с — неприйнятно для інтерактивних сценаріїв. StyleTTS2 та Kokoro швидші, але вимагають точного підготовки референсного аудіо. Ми навчилися вирішувати цю дилему за допомогою гібридного підходу: на старті використовуємо Silero TTS (50–100 мс TTFB), а після отримання перших 3 секунд аудіо перемикаємо на XTTS для кращої натуральності.
Як вибрати ASR-модель під ваші дані?
| Модель |
WER (українська, чистий запис) |
WER (PSTN, кодек G.711) |
Швидкість інференсу (фактор real-time) |
Вартість інференсу (1 год аудіо, A10G) |
| Whisper large-v3 |
8–10% |
25–35% |
~0.1x (55 с на 40 хв) |
~$0.50 |
| Whisper medium |
12–15% |
30–40% |
~0.3x |
~$0.15 |
| Wav2Vec2 XLSR-53 |
15–18% |
28–35% |
~0.8x |
~$0.08 |
| Whisper large-v3 + fine-tune |
4–7% |
10–15% |
~0.1x |
~$0.50 |
faster-whisper (CTranslate2) швидший за оригінальний Whisper у 4 рази при однаковому WER. Для продакшену ми завжди використовуємо його.
Практичний приклад: fine-tuning Whisper на доменній лексиці
Фінтех-компанія з 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.50 за годину аудіо, що в 6 разів дешевше за хмарне рішення. Проєкт виконано за 6 тижнів, включаючи підготовку даних і валідацію.
Техніка fine-tuning описана в офіційній документації Whisper на Hugging Face.
Як донавчити 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 обов’язково заморожуйте 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. Ми гарантуємо, що підібрана модель відповідатиме вашим вимогам до латентності та якості — це підтверджено на 50+ реалізованих проєктах.
Наш досвід та гарантії
10+ років досвіду в NLP та speech processing. 50+ успішних проєктів для fintech, telecom, медицини. Сертифіковані моделі (Model Card + bias audit). Ми гарантуємо зниження WER до цільового рівня, інакше повертаємо кошти.
Що входить у роботу з нами?
Клієнт отримує:
- Документацію: model card, інструкцію з розгортання, API-специфікацію (OpenAPI 3.0)
- Код: готові скрипти для інференсу, пайплайни обробки (Docker Compose + Kubernetes маніфести за потреби)
- Доступи: до self-hosted інстансів, графіки моніторингу (Grafana + Prometheus)
- Навчання: 2 сесії для вашої команди (налаштування, експлуатація, troubleshooting)
Ми також надаємо сертифікат відповідності моделі (Model Card + bias report), що підсилює довіру до рішення.
Процес роботи та терміни
- Аудит-сесія – беремо 2–4 години ваших записів, проганяємо через кілька моделей, вимірюємо WER/CER, дивимося на розподіл помилок (лексичні, акустичні, мова). Займає 1–2 дні.
- Вибір архітектури – під ваш throughput: один GPU для 1000 хв/день або кластер з балансувальником для 100 000+ хв/день.
- Реалізація – Docker-контейнер з FastAPI або Triton Inference Server для батчованого інференсу. Інтеграція з чергою Kafka.
- Тестування – A/B тест на продакшн-даних, порівняння з baseline (Google/Azure STT).
- Деплой – CI/CD (GitHub Actions + ArgoCD), моніторинг (Grafana + WER/CER алерти).
Терміни:
- Базова інтеграція готової моделі – 1–2 тижні.
- Fine-tuning з підготовкою даних та валідацією – 4–8 тижнів.
- Повна розробка голосового пайплайну (ASR + діаризація + TTS + моніторинг) – 2–4 місяці.
Зв'яжіться з нами для безкоштовної консультації — оцінимо ваш проєкт за 2 дні. Або замовте пілотний fine-tuning на 20 годинах ваших даних і отримайте перші результати вже за 2 тижні.