Налаштування кастомного словника для STT: реалізація та оптимізація

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
Налаштування кастомного словника для STT: реалізація та оптимізація
Простий
від 1 дня до 3 днів
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    956
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1188
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    646
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    929

Реалізація кастомного словника для STT-системи

Ви інтегруєте STT для call-центру, але розпізнавання імен клієнтів і юридичних термінів дає 40% помилок. Модель не знає «ОГРН», «СНИЛС», «ІНН». Кожен пропущений номер поліса або код продукту — втрачені дані. Кастомний словник — ефективний метод підвищити точність розпізнавання специфічних термінів, імен та абревіатур без перенавчання моделі. Він функціонує як контекстна підказка STT-двигуну: «звертай особливу увагу на ці слова». Наші сертифіковані інженери — понад 8 років досвіду та 30+ впроваджень STT — налаштують словник під ваш домен за 2–4 години. Зниження Word Error Rate досягає 40% вже на другий день. Вартість базової інтеграції — від 5000 грн. При обсязі 100 000 хвилин аудіо на місяць економія на доопрацюванні транскриптів сягає 15 000 грн/міс.

Чому кастомний словник, а не перенавчання моделі?

Перенавчання (fine-tuning) вимагає розмічених аудіоданих (мінімум 10 годин) і займає 2–4 тижні. Кастомний словник забезпечує приріст точності за 1–2 дні, знижуючи Word Error Rate на 30–50% для цільових термінів. При цьому не змінює архітектуру — ви можете міняти словник на льоту, без порушення режиму роботи сервісу. Кастомізація Speech-to-Text через словник в 10 разів швидша за fine-tuning.

Реалізація для основних провайдерів

AWS Transcribe Custom Vocabulary:

import boto3

transcribe = boto3.client('transcribe')

# Створюємо словник з файлу (S3)
transcribe.create_vocabulary(
    VocabularyName='corporate-terms-v1',
    LanguageCode='ru-RU',
    VocabularyFileUri='s3://my-bucket/vocabulary.txt'
)

# Формат файлу vocabulary.txt:
# Phrase\tSoundsLike\tIPA\tDisplayAs
# Б-Ф-И-О\tбэ эф и о\t\tБФИО
# ИНН\tин эн эн\t\tИНН

Azure Custom Speech (Phrase List):

# Додаємо domain adaptation data через Azure Portal або REST API
# Підтримує: pronunciation dictionary, phrase list
import requests

phrase_list = {
    "kind": "PhraseList",
    "locale": "ru-RU",
    "phrases": ["ОГРН", "СНИЛС", "КПП", "розрахунковий рахунок"]
}

faster-whisper з initial prompt:

model = WhisperModel("large-v3", device="cuda")

initial_prompt = "ІНН, ОГРН, СНИЛС, КПП, розрахунковий рахунок, генеральний директор."

segments, _ = model.transcribe(
    audio,
    initial_prompt=initial_prompt,
    language="uk"
)

Метод з initial_prompt працює ненадійно для довгих файлів — промпт обробляється тільки для першого вікна. Для продакшену краще використовувати вбудований custom vocab провайдера.

Порівняння підходів

Метод Час впровадження Зниження WER Latency overhead Складність підтримки
AWS Custom Vocabulary 1–2 дні 30–50% 5–10% Низька
Azure Phrase List 1–2 дні 20–40% 5–10% Низька
faster-whisper initial prompt 1 година 10–20% 0% Середня (потребує тестування)
Fine-tuning моделі 2–4 тижні 50–70% 0% Висока

Кастомний словник працює в 10 разів швидше, ніж перенавчання моделі, і забезпечує достатню для 90% завдань точність. Кастомізація через словник в 15 разів дешевша за fine-tuning для малих проєктів. AWS Custom Vocabulary показує в 2 рази більше зниження WER, ніж initial prompt faster-whisper.

Як ми знижуємо WER на 40% за 2 дні?

Процес включає аудит поточного STT, проєктування доменного словника, реалізацію через API обраного провайдера та A/B тестування на 100+ аудіофайлах. Ми використовуємо звукову подібність (SoundsLike) для абревіатур і варіанти вимови (IPA) для складних слів. Результат — вимірний приріст точності без зміни інфраструктури. Для одного з проєктів у сфері страхування WER на термінах «ДМС», «ВЗР», «ОМС» впав з 55% до 12%.

Що входить в роботу

  • Документація: інструкція з експлуатації словника та опис форматів.
  • Доступи: створення IAM-ролей або ключів API для інтеграції.
  • Навчання: 2-годинний вебінар для вашої команди.
  • Підтримка: гарантійне обслуговування 1 місяць після впровадження.

Якщо словник не допомагає: діагностика та альтернативи

Буває, що кастомний словник дає приріст менше 10% — це сигнал, що проблема глибша: можливо, аудіо низької якості, модель не адаптована до шуму або контекст перекривається омонімією. У таких випадках ми рекомендуємо поєднувати словник з полегшеним fine-tuning або аугментацією даних. Ми проводимо діагностику та пропонуємо оптимальну стратегію.

Типові помилки при налаштуванні: не вказані варіанти вимови для абревіатур (наприклад, «БФИО» розпізнається як «бэфио»), занадто довгі фрази (понад 10 слів), ігнорування регіональних діалектів, відсутність тестового датасету.

Процес налаштування

Етап Тривалість Результат
Аналітика 0,5 дня Список з 50–100 цільових термінів
Проєктування 0,5 дня Формат SoundsLike та IPA
Інтеграція 0,5 дня Словник підключений до STT
Тестування 0,5 дня WER на репрезентативній вибірці
Деплой 0,5 дня Робота в стейджингу та проді

Покрокова інструкція для швидкого старту:

  1. Визначте 50–100 цільових термінів, характерних для вашого домену.
  2. Створіть файл словника у форматі провайдера (SoundsLike, IPA, DisplayAs для AWS).
  3. Завантажте словник через API або консоль (AWS Transcribe, Azure Speech, faster-whisper).
  4. Проведіть A/B тестування на 100+ аудіофайлах, виміряйте WER.
  5. Запустіть в продуктивне середовище з моніторингом якості.

Як підтримувати словник в актуальному стані

  • Версіонування: кожна зміна — новий тег в Git (v1.0, v1.1).
  • Автоматичне оновлення: CI/CD приймає нові терміни з Jira/таблиці.
  • Моніторинг: алерти при падінні точності більш ніж на 5%.

Для налаштування STT словника використовуйте API провайдера. Ми пропонуємо STT для специфічних термінів з кастомним словником. Проблема абревіатур в розпізнаванні мовлення вирішується через SoundsLike. Юридичні терміни STT потребують окремого словника з IPA.

Терміни: базова інтеграція — 1–2 дні, включаючи наповнення словника. Оцінимо ваш проєкт за 2 дні. Отримайте консультацію по вашому кейсу за 1 день — наші інженери мають сертифікати AWS AI та Azure AI Engineer.

Для детального вивчення рекомендую офіційну документацію: AWS Transcribe Custom Vocabulary та Wikipedia: Speech recognition.

Розпізнавання та синтез мовлення: перша лінія проблеми

Ми стикаємося із замовником, який має 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), що підсилює довіру до рішення.

Процес роботи та терміни

  1. Аудит-сесія – беремо 2–4 години ваших записів, проганяємо через кілька моделей, вимірюємо WER/CER, дивимося на розподіл помилок (лексичні, акустичні, мова). Займає 1–2 дні.
  2. Вибір архітектури – під ваш throughput: один GPU для 1000 хв/день або кластер з балансувальником для 100 000+ хв/день.
  3. Реалізація – Docker-контейнер з FastAPI або Triton Inference Server для батчованого інференсу. Інтеграція з чергою Kafka.
  4. Тестування – A/B тест на продакшн-даних, порівняння з baseline (Google/Azure STT).
  5. Деплой – CI/CD (GitHub Actions + ArgoCD), моніторинг (Grafana + WER/CER алерти).

Терміни:

  • Базова інтеграція готової моделі – 1–2 тижні.
  • Fine-tuning з підготовкою даних та валідацією – 4–8 тижнів.
  • Повна розробка голосового пайплайну (ASR + діаризація + TTS + моніторинг) – 2–4 місяці.

Зв'яжіться з нами для безкоштовної консультації — оцінимо ваш проєкт за 2 дні. Або замовте пілотний fine-tuning на 20 годинах ваших даних і отримайте перші результати вже за 2 тижні.