Стандартні STT-моделі навчені на загальному корпусі, але специфічні терміни — «діоксид кремнію», «апеляційне визначення», «мікроконтролер STM32F407» — часто розпізнаються некоректно. У медичних диктовках WER сягає 25–30%, а половина термінів потребує постредагування. Для юристів помилки в іменах і датах можуть коштувати судового позову. Ми вирішуємо це комбінацією boosting, кастомних словників та fine-tuning Whisper. У нас 5+ років досвіду в NLP та 30+ проєктів з кастомізації STT.
Наприклад, у проєкті для мережі клінік ми знизили WER з 28% до 12% за два тижні, використовуючи комбінацію boosting та посткорекції. Це заощадило лікарям 40% часу на розшифровку. В іншому кейсі для юридичної фірми boosting юридичних фраз з boost=18 зменшив WER за іменами суддів та статтями кодексу втричі. Для технічної лексики (наприклад, STM32, REST API) boosting з адаптивними фразами також ефективний.
Як покращити розпізнавання спеціалізованої лексики?
Найшвидший метод — Custom Vocabulary / Boosting. Він не потребує перенавчання і дає приріст точності на рідкісних термінах у 2–3 рази. Наприклад, boosting 15 медичних фраз з boost=15 підвищує точність їх розпізнавання на 40%. Адаптивні фрази можна задати для Google STT, AWS Transcribe та Azure Speech.
# Google STT — адаптивні фрази from google.cloud import speech speech_context = speech.SpeechContext( phrases=[ "мерцательная аритмия", "фибрилляция желудочков", "атриовентрикулярная блокада", "ЭКГ", "QRS-комплекс" ], boost=15.0 # від 1 до 20 ) config = speech.RecognitionConfig( speech_contexts=[speech_context], language_code="ru-RU" ) Другий метод — посткорекція через словник з fuzzy matching. Він ловить фонетичні помилки, не сповільнюючи обробку.
from fuzzywuzzy import fuzz DOMAIN_TERMS = { "дексаметозон": "дексаметазон", "миокарда инфаркт": "инфаркт миокарда", "гипотиреоз": "гипотиреоз", } def correct_medical_terms(text: str, threshold: int = 80) -> str: words = text.split() for i, word in enumerate(words): for wrong, correct in DOMAIN_TERMS.items(): if fuzz.ratio(word.lower(), wrong) >= threshold: words[i] = correct return " ".join(words) Коли boosting не допомагає?
Boosting слабо впливає на синоніми та граматичні конструкції. Якщо стандартна модель плутає «экстрасистолия» і «экстросистолия», boosting виправить це. Але якщо вона розпізнає «мерцательная аритмия» як «мерцательная аритмия» з помилкою в закінченні — boosting безсилий. Тут потрібна посткорекція, яка замінює цілі фрази за шаблоном.
Чому комбінація методів дає кращий результат?
Boosting ефективний для десятків термінів, але не справляється з синонімією та граматикою. Посткорекція виправляє фонетику, але потребує словника. Разом вони перекривають слабкі місця одне одного. За даними Microsoft Research, комбінований підхід знижує WER на 50–80% без витрат на розмітку.
Що входить в адаптацію STT під ваш домен?
Ми надаємо під ключ:
- словник доменної лексики (500–5000 термінів);
- конфігурацію boosting для хмарних STT (Google, AWS, Azure);
- пайплайн посткорекції з точністю 95%+;
- звіт по WER до та після адаптації;
- навчання операторів роботі з доопрацьованою системою.
Порівняння методів
| Метод | Час впровадження | Зниження WER | Необхідні дані |
|---|---|---|---|
| Boosting | 1–2 дні | 20–40% | Тільки список термінів |
| Посткорекція | 2–3 дні | 10–30% | Словник термінів з варіантами |
| Fine-tuning Whisper | 2–4 тижні | 50–70% | 10+ годин диктовок |
| Комбінований підхід | 3–5 днів | 50–80% | Мінімальні вимоги |
Типовий WER за доменами
| Домен | Стандартна модель | Після адаптації |
|---|---|---|
| Медицина | 25–30% | 8–15% |
| Юриспруденція | 20–25% | 5–10% |
| Техніка | 15–20% | 5–8% |
Приклад налаштування boosting для AWS Transcribe
{ "VocabularyName": "medical-phrases", "LanguageCode": "ru-RU", "Phrases": ["экстрасистолия", "атеросклеротический", "эндопротезирование"], "VocabularyFilter": { "VocabularyFilterName": "medical-filter", "VocabularyFilterMethod": "mask" } } Процес роботи
- Аналіз корпусу — виділяємо рідкісні терміни та типові помилки розпізнавання. На цьому етапі формуємо первинний словник.
- Конфігурація boosting — налаштовуємо адаптивні фрази для хмарних STT. Для кожного сервісу (Google, AWS, Azure) оптимізуємо параметри boost.
- Посткорекція — створюємо словник доменних термінів з fuzzy matching. Враховуємо фонетичні варіанти та друкарські помилки.
- Тестування — вимірюємо WER на репрезентативній вибірці, ітеративно покращуємо. Зазвичай достатньо 2–3 ітерацій.
- Деплой та моніторинг — впроваджуємо пайплайн та відстежуємо якість у продакшені. Налаштовуємо автоматичні сповіщення при рості WER.
Терміни та вартість
Словниковий підхід (boosting + посткорекція) займає 2–3 дні. Fine-tuning Whisper — 2–4 тижні, включаючи збір та розмітку даних. Вартість адаптації розраховується індивідуально — залежить від обсягу корпусу, кількості термінів та обраних методів. Економія на постредагуванні після адаптації сягає 70%, а термін окупності інвестицій — 3–6 місяців.
Додаткові покращення
Для критичних доменів (медицина, юриспруденція) boost ефективніший при вказівці форми слова в кожному контексті. Якщо даних достатньо, fine-tuning Whisper дає WER 8–15% на медичних даних проти 25% у стандартної моделі. При малому обсязі аудіо (менше 100 годин) використовуємо boosting та посткорекцію — результат близький до донавчання за менші терміни.
Гарантія: на всіх проєктах фіксуємо цільовий WER та підтверджуємо його на тестовій вибірці. Досвід команди — 5+ років, сертифікати AWS та GCP. Замовте безкоштовну діагностику вашого корпусу — ми оцінимо поточний WER та підберемо оптимальне рішення. Зв'яжіться з нами для консультації.







