Кастомный словарь STT: где ломается распознавание
Распознавание речи ошибается неравномерно: на бытовых фразах качество расшифровки держится высоким, а на узкоспециальной терминологии проседает предсказуемо. Модели вроде Whisper обучены на общей речи, поэтому при неоднозначности выбирают более частотный вариант — фамилия «Курило» превращается в «курила», аббревиатура читается по буквам, а артикул детали в накладной становится случайным набором цифр.
Системно ломаются три класса сущностей. Имена собственные и топонимы: фамилии сотрудников, названия филиалов, редкие привязки. Аббревиатуры — они звучат как слитное слово, которого нет в общем словаре. И составные термины: юридические формулировки, наименования по классификаторам, медицинские и технические названия, где ошибка возникает на стыке слов, и модель начинает «догадываться» по звучанию.
Общие настройки это не лечат. Порог уверенности и авторедактирование лишь маскируют проблему, подменяя редкое слово частым, а языковая модель общего корпуса ваш домен не знает и по одной записи не выучит. Правки в готовом тексте не масштабируются: следующий файл приходит с теми же ошибками, а искажённые сущности уезжают в поиск по архиву, отчёты и выжимки — доля корректно распознанных сущностей остаётся низкой.
Решается это на уровне декодирования: кастомный словарь STT подсказывает системе ожидаемые слова и их произношение до разбора записи, а не после. Дальше разбираем, как это закрывается — откуда брать словарь, как описывать произношения и как измерять, что ошибки распознавания речи действительно ушли.
Эффект от подстройки: меньше ошибок на терминах и именах
Первый замер делаем до любых правок: расшифровываем 30–50 минут реальных записей и вручную помечаем расхождения. База считается на той же модели, что пойдёт в работу, — обычно это Whisper или её дообученная ветка, — иначе сравнение «до и после» ничего не доказывает. Считаем не общую точность, а долю ошибок именно на словах домена: терминах, аббревиатурах, названиях продуктов и фамилиях.
После подключения кастомного словаря повторяем тот же замер на том же наборе записей и на новых. Смотрим не среднюю цифру, а разброс по дикторам и условиям записи — он показывает, где словарь работает, а где тянет лишнее.
- Доля ошибок на профильной лексике падает в 2–4 раза; отдельно проверяем термины, которые раньше распознавались неверно всегда.
- Объём ручных правок после расшифровки сокращается в разы, на типовых записях внутри домена доходит до нуля.
- Устойчивость к дикторам: термин верно распознаётся у 8–10 разных голосов, включая женские и низкие мужские, без подстройки под одного спикера.
- Устойчивость к условиям: проверяем запись с телефона, гарнитуры, из переговорной — просадка не должна выходить за несколько процентов.
- Ложные срабатывания: словарь не перетягивает похожие общеупотребительные слова — контролируем на наборе без домена.
- Регрессия при обновлении модели: перезамер после каждого обновления, иначе точность тихо уходит назад.
Способы подстройки распознавания: сравнение подходов
Подстройка под лексику заказчика решается пятью способами — от внешних правил до адаптации модели на записях домена. Различаются они точкой вмешательства: акустика, языковая модель или готовый текст, — отсюда разные срок, обратимость и риск регресса на обычной речи.
В проектах мы комбинируем два-три слоя: подстройку языковой модели домена, словарь замен для аббревиатур и постобработку для артикулов и единиц измерения. Решение принимаем по доле ошибок на профильных терминах, а не по общей метрике — выигрыш на лексике легко просаживает распознавание бытовой речи.
| Способ | Когда подходит | Ограничения |
|---|---|---|
| Словарь замен | устойчивые аббревиатуры, названия, артикулы | не спасает, если модель слышит слово иначе; ложные срабатывания на десятках правил |
| Фонетические подсказки | редкие имена, топонимы, нестандартное произношение | нужен разбор произношения, путаница на омофонах |
| Адаптация на корпусе записей | много размеченных часов, стабильный домен | нужны данные и разметка, риск переобучения, долгий цикл проверки |
| Постобработка расшифровки | форматы, пунктуация, нормализация чисел и дат | не восстанавливает то, что модель не расслышала |
| Подстройка языковой модели домена | отраслевая лексика в целом | нужен текстовый корпус, акустику не меняет |
Выбор фиксируем по замерам на слепой выборке записей заказчика: доля ошибок на терминах, число ложных замен, время на добавление слова. Начинаем с обратимых слоёв; адаптацию на корпусе подключаем, когда остаются ошибки, которые правилами не закрыть.
Этапы внедрения: от сбора терминов до передачи
Правка словаря без замеров превращается в перебор догадок: термин добавили, доля ошибок не изменилась. Поэтому идём обратным порядком — сначала считаем, где ломается распознавание, потом трогаем лексику.
Шаги и проверки
- Аудит ошибок распознавания. Размечаем расшифровки реальных каналов по типам: незнакомый термин, аббревиатура, латиница внутри фразы, омонимия. На выходе — таблица частот по классам.
- Сбор терминологии заказчика. Интервью с носителями домена, выгрузки из справочников. Для каждого термина — произношение, допустимые варианты, границы применимости.
- Тестовая выборка записей. Откладываем размеченный набор, не участвующий в настройке: разные дикторы, каналы, шум. Иначе подгонку под примеры не отличить от улучшения.
- Схема подстройки словаря. Решаем, куда вносить термин — словарь произношений, замена на выходе, языковая модель — и с каким весом.
- Настройка и проверка словаря. После каждой итерации прогоняем отложенные записи: смотрим общую долю ошибок и новые ложные срабатывания.
- Передача решения. Отдаём конфигурацию словаря, регламент правок, разметку и отчёты, обучаем команду добавлять термины без регрессий.
После передачи словарь живёт в вашем контуре: правки по регламенту, метрики воспроизводимы, откат к предыдущей версии занимает минуты.
Артефакты внедрения: словари терминов, правила замен, регламенты
После внедрения у заказчика остаётся не «модель в чёрном ящике», а комплект артефактов, с которым можно работать без нас: правки вносятся своими силами, поведение системы воспроизводимо, а спорные распознавания разбираются по документу, а не по памяти разработчика.
- Конфигурация словаря — подключаемый к движку распознавания файл: веса терминов, регистр, словоформы, допустимые варианты написания. Одна правка меняет выдачу по всему потоку записей.
- Перечень терминов — согласованный с бизнесом список: продуктовые названия, обозначения внутренних систем, должности, латиница, которую диктуют вслух.
- Правила замен и произношения — таблица «как слышится → как пишем», омофоны и устойчивые искажения конкретных дикторов; применяется поверх распознавания и не портит исходную стенограмму.
- Контрольный набор записей — фрагменты аудио с эталонной расшифровкой, включая шумные дорожки и быструю речь. Прогон по нему показывает, что правка не сломала остальное.
- Скрипты проверки и метрики — расчёт доли ошибок по терминам и отчёт до и после изменения словаря.
- Документация — как добавить термин, какие поля обязательны, что делать при конфликте правил.
- Регламент обновления — кто инициирует правку, кто подтверждает, когда изменение уходит в работу и как откатывается.
Комплект переводит поддержку словаря из разовой настройки в управляемый процесс: новый термин проходит проверку на контрольном наборе и доходит до рабочего контура без нашего участия.
Кейс: как ушёл класс ошибок на узкоспециальных терминах
Задача пришла от проектного института: техсоветы и приёмки записываются, а расшифровки до сих пор готовили вручную. В речи — аббревиатуры, марки оборудования, номера нормативов и фамилии подрядчиков. Базовая открытая модель Whisper уверенно разбирала общий язык, но спотыкалась именно на этой лексике.
Сначала зафиксировали точку отсчёта: контрольный набор записей с ручной разметкой терминов. Доля ошибок на профильной лексике — 17–19%, редактор тратил около 40 минут на каждый час аудио, а готовый текст часа записи появлялся только к концу дня.
Словарь собирали не «на слух»: выгрузили частотные термины из корпуса, добавили произносительные варианты — латиницу и кириллицу, склонения, слитное и раздельное написание, аббревиатуры, которые диктуют по буквам. Отдельно настроили веса терминов, чтобы редкое, но важное название не вытеснялось частым общим словом, и добавили нормализацию после распознавания: единый глоссарий вместо трёх написаний одной марки.
После подстройки доля ошибок на профильной лексике упала до 3%, ручные правки сократились примерно вчетверо, час записи превращается в готовую расшифровку за 40 минут вместо четырёх часов. Проверяли и обратное — что на общем языке качество не просело: словарь расширяет модель, а не заменяет её принудительными подстановками.
Класс ошибок с искажёнными названиями оборудования и нормативов ушёл, редактор правит смысл, а не угадывает термины. Словарь живёт дальше: новые слова попадают в него из правок редактора, а регрессионный набор не даёт улучшениям на одной теме ломать остальные.
Чем подстройка распознавания отличается от дообучения модели?
Это два разных класса работ, и путать их дорого. Подстройка лексики меняет только слой распознавания слов: в словарь добавляются термины, аббревиатуры, названия продуктов, задаются веса и правила нормализации. Веса акустической модели не трогаются — результат предсказуем и обратим.
Дообучение меняет саму модель на размеченном корпусе речи. Оно оправдано там, где расходится не лексика, а произношение: сильный акцент, узкая предметная область с устойчивым жаргоном, запись через конкретный микрофон или канал связи.
| Подход | Когда подходит | Ограничения |
|---|---|---|
| Кастомный словарь STT и веса | Новые термины, аббревиатуры, имена — слово известно, произношение стандартное | Не спасает, если слово звучит неразборчиво |
| Правила замен и нормализация | Постобработка: единый формат чисел, дат, артикулов | Работает поверх распознавания, звук не улучшает |
| Дообучение модели | Акцент, шумный канал, устойчивый жаргон, много однотипной речи | Нужен размеченный корпус, возможна деградация на прежних темах |
Поддержка решает выбор. Словарь — это конфигурация: правки вносит профильный специалист, изменения версионируются, откат занимает одну ревизию, проверка идёт по набору эталонных фраз. Дообученную модель так не откатить: нужен сохранённый корпус, повторный прогон проверок и переобучение при каждом сдвиге домена.
Практическое правило: сначала закрываем задачу словарём и весами и только если доля ошибок на эталонной выборке не падает — переходим к дообучению. Решение остаётся управляемым, а владение им — предсказуемым.
Технические сомнения: объём работ, сроки, поддержка
Возражения по подстройке словаря распознавания повторяются из проекта в проект: непонятен объём работ, сроки внедрения, качество исходных записей и то, что будет после запуска. Ниже — ответы с порядком действий, замерами и границами, за которыми результат не гарантируем.
Сколько реально работы в подстройке словаря?
Объём задаёт не размер словаря, а структура домена. При 200–300 однотипных терминов основное время уходит на произносительные варианты, а не на разметку, а аббревиатуры, латиница и составные названия добавляют работу с нормализацией текста.
Сколько ждать результат?
Начинаем с прогона на части архива: замер доли ошибок до и после, разбор терминов, которые всё ещё теряются. Дальше обрабатываем остальной корпус. Срок зависит от объёма и качества записей, а не от количества слов в словаре.
А если записи шумные?
Качество исходников задаёт потолок: на перекрытой речи и телефонном канале словарь вытянет терминологию, но не восстановит потерянное. Поэтому сначала оцениваем записи и при необходимости ставим предобработку — шумоподавление и разделение речевых фрагментов.
Пересобирать всё при каждой правке терминологии и что с поддержкой?
Нет: словарь и языковая модель отделены от акустической части. Добавление термина или правка произношения — это обновление словаря и прогон на контрольном наборе, без полного переобучения; акустика трогается только при смене домена или канала связи. После запуска работаем по заявкам: регрессионный набор записей, версионирование словаря, замер доли ошибок и откат, если стало хуже.
Обсудим задачу: что прислать для оценки и плана работ
Чтобы вернуться с оценкой и планом работ, а не с уточняющими вопросами, нам достаточно одного набора исходных данных. Чем точнее описан домен, тем меньше итераций уйдёт на согласование схемы решения.
- Аудио из реального канала. 30–60 минут записей по каждому источнику: телефония, микрофон, видеозвонок — с типичным шумом, несколькими дикторами и акцентами.
- Эталонные расшифровки. 10–20 минут выверенных текстов с пометками спорных мест — по ним считаем базовую долю ошибок и видим, где словарь даст основной прирост.
- Список терминов. Названия продуктов, аббревиатуры, должности, ФИО, топонимы — с вариантами произношения и тем, как они должны выглядеть в выдаче.
- Правила нормализации. Регистр, пунктуация, числа, единицы измерения, латиница и кириллица в одном слове, оформление повторов и слов-заполнителей.
- Схема потока. Откуда приходит аудио и в каком формате, где хранится, куда уходит текст, нужна ли разметка по говорящим.
- Ограничения. Требования к задержке выдачи, где разрешено обрабатывать данные, допустимая доля ручной правки.
- Примеры ошибок. 20–50 реальных фраз, которые распознаются неверно сейчас — этого хватает, чтобы оценить объём работы со словарём.
Присылать всё сразу не обязательно: начнём с аудио и списка терминов, остальное доуточним по ходу. Опишите задачу — вернёмся с оценкой, схемой решения и планом работ.







