Реализация кастомного словаря для STT-системы
Вы интегрируете STT для call-центра, но распознавание имён клиентов и юридических терминов даёт 40% ошибок. Модель не знает «ОГРН», «СНИЛС», «ИНН». Каждый пропущенный номер полиса или код продукта — потерянные данные. Кастомный словарь — самый быстрый способ улучшить распознавание специфических терминов, имён и аббревиатур без переобучения модели. Он работает как подсказка STT-движку: «обращай особое внимание на эти слова». Наши сертифицированные инженеры — более 8 лет опыта и 30+ внедрений STT — настроят словарь под ваш домен за 2–4 часа. Снижение Word Error Rate достигает 40% уже на второй день.
Почему кастомный словарь, а не переобучение модели?
Переобучение (fine-tuning) требует размеченных аудиоданных (минимум 10 часов) и занимает 2–4 недели. Кастомный словарь даёт результат за 1–2 дня, снижая Word Error Rate на 30–50% для целевых терминов. При этом не меняет архитектуру — вы можете менять словарь на лету, без простоя сервиса. Для большинства бизнес-сценариев (обработка заказов, юридические консультации) этого достаточно.
Реализация для основных провайдеров
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:
# Добавляем 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="ru"
)
Метод с 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% задач точность.
Как мы снижаем WER на 40% за 2 дня?
Процесс включает аудит текущего STT, проектирование доменного словаря, реализацию через API выбранного провайдера и A/B тестирование на 100+ аудиофайлах. Мы используем звуковое сходство (SoundsLike) для аббревиатур и варианты произношения (IPA) для сложных слов. Результат — измеримый прирост точности без изменения инфраструктуры. Для одного из проектов в сфере страхования WER на терминах «ДМС», «ВЗР», «ОМС» упал с 55% до 12%.
Что делать, если словарь не помогает?
Бывает, что кастомный словарь даёт прирост менее 10% — это сигнал, что проблема глубже: возможно, аудио низкого качества, модель не адаптирована к шуму или контекст перекрывается омонимией. В таких случаях мы рекомендуем сочетать словарь с легковесным fine-tuning или аугментацией данных. Мы проводим диагностику и предлагаем оптимальную стратегию.
Типичные ошибки при настройке
- Не указаны варианты произношения для аббревиатур (например, «БФИО» распознаётся как «бэфио»).
- Слишком длинные фразы (более 10 слов) — снижают производительность.
- Игнорирование региональных диалектов — для русского языка с акцентом произношение может отличаться.
- Отсутствие тестового датасета — непонятно, улучшился ли WER.
Процесс настройки
| Этап | Длительность | Результат |
|---|---|---|
| Аналитика | 0,5 дня | Список из 50–100 целевых терминов |
| Проектирование | 0,5 дня | Формат SoundsLike и IPA |
| Интеграция | 0,5 дня | Словарь подключён к STT |
| Тестирование | 0,5 дня | WER на репрезентативной выборке |
| Деплой | 0,5 дня | Работа в стейджинге и проде |
Как поддерживать словарь в актуальном состоянии
- Версионирование: каждое изменение — новый тег в Git (v1.0, v1.1).
- Автоматическое обновление: CI/CD принимает новые термины из Jira/таблицы.
- Мониторинг: алерты при падении точности более чем на 5%.
Типичная ошибка — не учитывать омонимы. Например, «БФИО» может распознаваться как «бэфио». В AWS Transcribe для этого используется столбец SoundsLike.
Сроки: базовая интеграция — 1–2 дня, включая наполнение словаря. Оценим ваш проект за 2 дня. Получите консультацию по вашему кейсу за 1 день — наши инженеры имеют сертификаты AWS AI и Azure AI Engineer.
Для детального изучения рекомендую официальную документацию: AWS Transcribe Custom Vocabulary и Wikipedia: Speech recognition.







