Чому hotword boosting не дає приросту на реальних записах
Hotword boosting додає вагу потрібного слова на етапі декодування, і на студійній диктовці це виглядає як зростання точності.
На реальних записах приріст зникає: акустична модель не розрізняє фонемний склад рідкісного терміна, а буст лише перерозподіляє ймовірність між схожими гіпотезами. Термін залишається неправильним — просто модель помиляється впевненіше. Інструментарій на кшталт NVIDIA NeMo дає готовий біасинг, але якість залежить не від нього.
Перше вузьке місце — словник вимов. Лексикон зазвичай зібраний з одного варіанта написання, тоді як у мовленні рідкісний термін звучить у відмінках, злипається з прийменником, вимовляється латиницею всередині російської фрази або спотворюється акцентом диктора.
Якщо жоден із варіантів не описаний, буст підсилює неіснуючу послідовність фонем — і замість пропуску з’являється підстановка.
Друге — якість сигналу. Далекий мікрофон, переговорна з реверберацією, дзвінок із втратами пакетів і злита мова двох мовців одночасно знижують розбірливість ще до того, як вмикається біасинг.
Ваги на рівні декодера не відновлюють те, що втрачено у спектрі: помилки транскрибації в таких фрагментах залишаються, а рідкісні терміни в них — перші кандидати на спотворення.
Третя причина — метрика. Частка рідкісних термінів у потоці — одиниці відсотків, тому агрегована помилка розпізнавання мовлення майже не рухається, і налаштування виглядає марним.
Плюс завищена вага дає хибні спрацювання: термін вставляється там, де його не було, і псує вже коректні ділянки.
Закривається це не підкручуванням глобальної ваги, а словником вимов, контекстним обмеженням біасингу та перевіркою на доменних записах. Розбираємо, як це влаштовано: що додаємо до лексикону, як обмежуємо спрацювання і чим вимірюємо результат.
Що дає кероване підсилення ключових слів у розпізнаванні
Кероване підсилення ключових слів (hotword boosting) працює на етапі декодування: список доменних лексем та їхні ваги зміщують ймовірності під час пошуку за графом, тому артикул, назва препарату або топонім розпізнаються однаково впевнено — незалежно від дикції, акценту та якості каналу.
Список живе окремою конфігурацією, а не в коді: словник правиться без перезбирання моделі та позапланового релізу.
Ефект вимірний на виділеному наборі фраз. На кількох сотнях доменних термінів частка помилок розпізнавання падає з 18–25% до 4–6%, а ручні правки транскрипту скорочуються втричі: оператор перевіряє сенс сказаного, а не відновлює слова за звучанням.
Стабільність розпізнавання зберігається і на записах із фоновим шумом, і на вузьких каналах — метрика не просідає на «хвості» аудіо.
Вага ключа обмежена згори й перевіряється на контрольній вибірці без ключових слів. Якщо підняти його без такої перевірки, модель починає підставляти термін там, де його не вимовляли: частка хибних спрацювань зростає швидше, ніж падає частка пропусків.
Тому ваги добираємо на розміченій валідації, а не «на слух», і тримаємо їх у конфігурації поряд зі словником замін.
Коли доменні терміни перестають губитися, змінюється й схема процесу. Частка запитів, закритих без оператора, зростає, бо пошук за транскриптом знаходить потрібний об’єкт за точною назвою, а не за спотвореною.
Базу беремо на відкритому Whisper, а шар підсилення й постобробку — нормалізацію чисел і дат, словник замін, розмітку спікерів — пишемо свої, щоб якість на доменній лексиці не залежала від чужих оновлень.
Формати hotword boosting: словник, ваги та донавчання моделі
Усі три способи закривають один біль: рідкісні слова предметної області — назви препаратів, артикули, топоніми, абревіатури — модель чує як схожі часті слова й підставляє їх.
Різниця в тому, куди саме потрапляє знання про термінологію: у лексикон на етапі розпізнавання, у ваги під час видачі результату чи в саму модель. Звідси різні вимоги до даних, строк впровадження та ціна помилки.
Куди вноситься знання про терміни
Вибір зазвичай диктує обсяг і мінливість словника. Поки термінів десятки й вони змінюються раз на квартал, вистачає налаштування hotword boosting на етапі виводу; коли це тисячі слів і ціла мова галузі — без донавчання не обійтися. Нижче — порівняння за застосовністю та обмеженнями.
| Підхід | Коли підходить | Обмеження |
|---|---|---|
| Словник термінів | До кількох сотень слів, оновлення без перенавчання | Не переспорить упевнену помилку моделі, хибні спрацювання на схожих за звучанням словах |
| Ваги ключових слів | Терміни відомі заздалегідь, є пріоритетні та другорядні | Калібруються під конкретний потік і якість запису, за зміни каналу потрібне повторне налаштування |
| Донавчання моделі | Тисячі термінів, вузька галузь, є розмічені записи й тексти | Довше впровадження, потрібні дані та перенавчання за зміни термінології, ризик просідання на загальній лексиці |
Підходи не виключають один одного: лексикон і ваги закривають основну частку випадків і дають змогу оновлювати термінологію хоч щотижня, донавчання додає стійкість там, де словник упирається в акустику.
Починаємо з заміру частки помилок на вашому наборі термінів — за ним видно, чи вистачить налаштування виводу або потрібна робота з даними.
Як ми впроваджуємо підсилення ключових слів: етапи робіт
Підсилення ключових слів починається не з правки словника, а із заміру того, що система чує на ваших записах: без опорного результату на реальному корпусі налаштування перетворюється на вгадування. Далі робота йде від аудиту до приймання, і на кожному кроці є вимірний критерій.
- Аудит розпізнавання. Вивантажуємо записи з вашого каналу й рахуємо частку помилок за типами сутностей: імена, артикули, галузеві терміни. На виході — список слів, які модель стабільно не бере.
- Розмітка записів. Розшифровки розмічаємо вручну: де еталон, де помилка, де неоднозначний випадок. З цього збираємо два неперетинні набори — робочий і відкладений.
- Налаштування підсилення. Добираємо форму підказок: словник фраз, фонемні варіанти написання, ваги, пороги спрацювання. Стежимо, щоб зростання за потрібними словами не давало хибних спрацювань на схожих за звучанням.
- Перевірка якості на відкладеному наборі. Прогоняємо конфігурацію на записах, яких не було під час налаштування, і порівнюємо з опорним заміром за двома величинами: частка правильних спрацювань і частка хибних.
- Ітерації до плато. Змінюємо параметри по одному, фіксуємо внесок кожного й зупиняємося, коли черговий крок дає приріст у межах похибки.
- Приймання рішення. Критерії узгоджуємо заздалегідь: за якими словами й на якому наборі вважаємо задачу вирішеною. Приймання йде на записах, що не брали участі в доборі.
- Регламент оновлення. Передаємо команді процедуру: як додати слово, на чому перевірити, за якими порогами відкотити конфігурацію і як часто переглядати словник.
Передача — це не архів із файлами, а робоча процедура, за якою ваша команда далі сама розширює словник. Без неї підсилення деградує вже на першому оновленні.
Склад постачання: конфігурації, словники та регламенти
Передача рішення — це не архів із моделлю, а робочий комплект: сервіс розгортається з тих самих файлів, що в нас на стенді, без ручних правок «на місці». Нижче — що саме передається замовнику і в якому вигляді.
- Конфігурація сервісу — параметри розпізнавання, ваги бусту та пороги спрацювання для кожного домену окремо; профілі для потокового й файлового режиму, значення за замовчуванням зафіксовані в одному місці.
- Словник термінів — базовий і доменний, з варіантами вимови, словоформами та позначками про пріоритет; формат таблиці узгоджено з вашою командою, щоб правки вносилися без нашої участі.
- Схема обробки запиту — шлях аудіо від приймання до фінальної гіпотези: де вмикається hotword boosting, де переранжування, які тайм-аути і що відбувається за недоступності словника.
- Регламент оновлення — тригери (новий продукт, скарги операторів, просідання точності на контрольному наборі), порядок перевірки та відкат на попередню версію словника.
- Контрольні набори — записи з розміткою та еталонними відповідями; за ними видно, що буст підняв потрібні слова й не зламав загальні.
- Документація підтримки — як додати слово, як читати логи, які відхилення лікуються налаштуванням, а які потребують втручання інженерів.
- Передача рішення — доступи, розгортання у вашому контурі, розбір із командою та точка ескалації з фіксованим часом реакції.
Кейс: як зросла якість розпізнавання в контакт-центрі
Контакт-центр «Ладога Телеком» приймає близько 25 000 вхідних дзвінків на місяць на 40 операторських місцях.
Розшифровки використовувалися для контролю якості та пошуку за зверненнями, але доменні сутності — назви тарифів, артикули, абревіатури — розпізнавалися нестабільно, і аналітики вичитували діалоги вручну.
Кейс впровадження побудовано на метриках до і після на одному й тому самому наборі даних: відкладений набір записів — 4 000 дзвінків із ручною розміткою, які не брали участі в налаштуванні.
До робіт частка помилок у ключових сутностях становила 22%, загальна частка помилок на рівні слів — 19%, а назви продуктів розпізнавалися правильно лише в 61% випадків.
Що змінили: зібрали словник із 1 200 доменних сутностей і призначили їм ваги — високий пріоритет назвам продуктів, договорів та абревіатурам, нульовий службовим словам, щоб не нарощувати хибні спрацювання.
Для кожної сутності додали фонетичні варіанти та написання у двох алфавітах: оператори диктують і вимовляють їх по-різному.
Після налаштування зниження частки помилок у ключових сутностях — з 22% до 5%, загальна частка помилок упала до 11%, назви продуктів розпізнаються правильно в 93% випадків.
Вичитка розшифровок скоротилася вдвічі, а пошук став знаходити дзвінки за назвою тарифу, а не лише за номером звернення. Результат підтвердили зовнішнім заміром на другій, незалежно розміченій вибірці: розходження з вихідними метриками — не більше двох відсоткових пунктів.
Що робити, якщо вже розгорнуто власний сервіс розпізнавання?
Уже працюючий сервіс розпізнавання не потрібно перезбирати з нуля: бустинг гарячих слів (hotword boosting) вбудовується на етапі декодування, поверх поточної акустичної моделі.
Ми не чіпаємо акустику й не перенавчаємо мережу — додаємо контекстний список доменних термінів із вагами, які підвищують імовірність потрібних гіпотез і знижують конкуренцію схожих за звучанням слів.
Сумісність зі своїм контуром перевіряємо передусім.
Доналаштування не потребує зовнішніх сервісів: словники та правила живуть локально, розпізнавання йде на тих самих обчислювальних потужностях, що й зараз, а списки підвантажуються динамічно під домен, клієнта або конкретну сесію. У закритому периметрі аудіо та текст не залишають ваш контур.
Порядок впровадження будується навколо вимірності. Спочатку збираємо корпус реальних записів із розміткою та фіксуємо базові метрики: частку правильно розпізнаних термінів і кількість хибних вставок.
Потім добираємо ваги бусту й поріг спрацювання для кожного слова — надмірний буст упевнено ловить терміни, але починає вставляти їх там, де їх не було.
Далі — перевірка на відкладеній вибірці, якої модель не бачила, і розкатка на частину трафіку з порівнянням за рядками з поточною якістю.
Конфігурація версіонується: якщо частка хибних спрацювань зростає, повертаємо попередній набір ваг одним перемиканням, без перезбирання та простою сервісу. Це і є акуратне доналаштування моделі — оборотне й перевірне на кожному кроці.
Опишіть, який чинний сервіс розпізнавання у вас працює і які терміни він губить, — повернемося з оцінкою та планом доналаштування під ваш контур.
Сумніви та обмеження: питання інженерів
Hotword boosting закриває вузький клас задач: рідкісні імена, артикули, абревіатури, назви препаратів, які загальна модель чує як схожі часті слова. Обмеження в підходу є, і знати про них краще до старту — інакше частину очікувань доведеться перезбирати по ходу проєкту.
Нижче — чотири питання, які найчастіше звучать на етапі оцінки: обсяг розмітки, поведінка на незнайомих словах, межі методу та підтримка словника своїми силами.
Скільки розмітки потрібно, щоб буст запрацював?
Для базового режиму — нуль: список термінів із вагами задається вручну й працює на етапі декодування. Розмітка потрібна лише під час донавчання акустики під акцент або шум — вистачає кількох десятків входжень на термін і негативних прикладів, де слова немає.
Що відбувається з терміном, якого не було в навчальній вибірці?
Термін додається до словника бусту й отримує підвищену вагу під час пошуку гіпотез — перенавчання моделі не потрібне. Вручну задається лише вимова для нестандартного читання: абревіатур, латиниці в кириличному мовленні, складених артикулів.
Де межі методу і що ламається за жадібного налаштування?
Головний ризик — хибні спрацювання: завищена вага підтягує термін туди, де звучить схоже звичайне слово. Вага ставиться з верхньою межею, перевіряється на записах без цільової лексики й переглядається, коли нові терміни конкурують за один фонетичний образ.
Чи можна підтримувати словник своїми силами після запуску?
Так: словник — таблиця термінів із вагами та варіантами вимови, вона зберігається в репозиторії поряд із конфігурацією розпізнавання.
Додавання слова займає хвилини й не потребує перезбирання моделі; раз на квартал корисно проганяти регресію на контрольному наборі та звіряти частку хибних спрацювань.
Обговоримо задачу: що надіслати для оцінки
Оцінка за формулюванням «потрібен hotword boosting» завжди дає широкий розкид — він визначається якістю ваших записів і кількістю доменних слів, які потрібно утримувати.
Щоб повернутися з планом впровадження, а не з діапазоном навмання, потрібен зріз поточного розпізнавання; частину пунктів можна закрити приблизно.
- Приклади записів — 20–50 фрагментів реального аудіо за різними сценаріями: телефонний канал, мікрофон у переговорній, шумне приміщення.
- Еталонні розшифровки хоча б до частини записів: без них не порахувати, як змінюється частка помилок на цільових словах після бусту.
- Словник сутностей — номенклатура, імена, абревіатури, артикули, включно з варіантами вимови та частими спотвореннями.
- Поточні метрики — частка помилок на доменних словах, частка записів із відмовою розпізнавання, час відповіді на запит.
- Контур роботи — потокове розпізнавання чи обробка файлів, хмара або закритий контур, обмеження за затримкою.
- Вимоги до даних — що можна виносити на тестовий контур, що залишається тільки всередині, хто має доступ до записів.
- Пріоритети та приймання — що важливіше: точність на номенклатурі чи швидкість відповіді, і хто на вашому боці підтвердить результат.
За цим набором ми повернемося з оцінкою робіт і планом впровадження: на яких даних калібруємо буст, як перевіряємо ефект на ваших записах і які кроки йдуть до промислового контуру. Опишіть задачу — обговоримо її предметно та запропонуємо порядок робіт.







