Розпізнавання та Синтез Мовлення: ASR, TTS, Клонування Голосу
Замовник приходить з задачею: транскрибувати 40 000 годин записів колл-центру за тиждень. Хмарний ASR (Google Speech-to-Text) дає WER 28% на галузевій лексиці та коштує відчутно. Задача — знизити WER нижче 10% та перейти на self-hosted інференс.
Типові Проблеми
WER не сходить до потрібної метрики. Частіше всього винна не архітектура, а дані: шумні аудіо без нормалізації (-23 LUFS замість стандарту), змішані мови, акцент, спеціальна лексика. Whisper large-v3 дає 8–12% WER на чистій російській та падає до 25–35% на записах з PSTN-артефактами та вузькополосним кодеком G.711.
Діаризація ламається при більше двох спікерів. pyannote/speaker-diarization-3.1 працює стабільно при 2–3 говорящих, але DER зростає з 6% до 18–22% при 5+ учасниках конференції. Перекрес репік погіршує: по дефолту min_duration_on=0.1 знімає короткі вставки.
Клонування голосу — latency або якість. XTTS v2 (Coqui) натуральний, але при потоковій генерації stream_chunk_size=20 перший chunk приходить через 1.4–2.0 с — неприйнятно для інтерактивного. StyleTTS2 та Kokoro швидше, але потребують точної підготовки референсного аудіо.
Практичний Стек Рішення
Базовий production-pipeline:
-
ASR:
openai/whisper-large-v3абоfaster-whisper(CTranslate2-бекенд, 4x швидкість vs оригінал) -
Діаризація:
pyannote.audio 3.x+ інтеграція черезwhisperxдля вирівнювання по словам - TTS: XTTS v2 для якості, Edge-TTS або Silero для низької latency
- Клонування: XTTS v2 (3–6 с референсного аудіо) або OpenVoice v2
Типовий pipeline для колл-центру: аудіо з Kafka → нормалізація ffmpeg -af loudnorm до -23 LUFS → faster-whisper з beam_size=5, vad_filter=True → pyannote діаризація → postprocessing (пунктуація через deepmultilingualpunctuation) → PostgreSQL з timestamps.
Кейс з практики. Фінтех-компанія з 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 адаптується до нової лексики.
Синтез Мовлення: Вибір під Задачу
| Модель | Latency (TTFB) | Натуральність MOS | Клонування | Мови |
|---|---|---|---|---|
| XTTS v2 | 1.2–2.0 с | 4.1–4.3 | Так, 3 с ref | 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 | Ні | uk, en, de тощо |
| Edge-TTS | ~0.4 с (cloud) | 4.0 | Ні | 100+ |
Для інтерактивних ботів з вимогою TTFB < 300 мс — Silero або Kokoro. Для озвучки контенту, де важлива натуральність — XTTS v2 з потоковою відачею через WebSocket.
Процес Роботи
Починаємо з audit-сесії: беремо 2–4 години ваших записів, прогоняємо через кілька моделей, вимірюємо WER/CER, дивимося на розподіл помилок (лексичні, акустичні, мова). Це займає 1–2 дні та одразу показує, потрібен ли fine-tuning.
Далі — вибір архітектури під ваш throughput: один GPU для 1000 мін/день або кластер для 100 000+ мін/день. Деплой через Docker-контейнер з FastAPI або Triton Inference Server для батчованого інференса.
Терміни залежать від складності: базова інтеграція готової моделі — 1–2 тижні. Fine-tuning з підготовкою даних та валідацією — 4–8 тижнів. Повна розробка голосового pipeline (ASR + діаризація + TTS + моніторинг) — 2–4 місяці.







