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

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

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Реализация кастомного словаря для 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.