TurboBias 2.0: Streaming Context-Biasing for Production-Efficient ASR Systems
TurboBias 2.0 занимается той частью распознавания речи, где редкое имя или лекарство нужно добавить для одного пользователя без переобучения общей модели и без загрязнения соседних запросов в пакете. Работа объединяет нечувствительный к регистру граф фраз, отдельный контекст для каждого потока и полностью графический поиск по лучу. На публичных финансовых записях это существенно повышает полноту редких терминов при небольшом падении пропускной способности, если контекст подготовлен заранее.
Метод. Пользовательские фразы компилируются в взвешенный граф на GPU. Для BPE авторы разворачивают токены до канонической цепочки символов, добавляют допустимые объединённые дуги и задают вес как разность потенциалов состояний, поэтому разные разбиения и регистр получают один суммарный бонус. Графы активных пользователей складываются в общие тензоры, а каждый поток хранит только идентификатор и смещения своего участка; контексты можно добавлять и удалять во время работы. Состояния поиска по лучу сохраняются между звуковыми блоками, что переносит тот же механизм в потоковый Transducer.
Результаты. На Contextual Earnings-22, 2,63 часа и 1259 вхождений ключевых фраз, Parakeet Unified без контекста получает F1 65,9 и WER 14,0%. Реалистичный глобальный список для каждого потока с лучом 32 повышает F1 до 87,5 и снижает WER до 12,6%; идеализированный локальный список даёт 91,2 и 12,2%. В потоке при худшей алгоритмической задержке 1,12 с F1 растёт с 62,2 до 81,7, WER падает с 16,3% до 14,3%. На 128 одновременных потоках заранее зарегистрированный контекст даёт RTFx 1714 при жадном поиске против 1812 без усиления.
Ограничения. Все модели англоязычные, по 600 млн параметров и из экосистемы NVIDIA; скорость измерена только на RTX A5000. Второй набор - три часа медицинской речи - закрыт. Contextual Earnings-22 состоит из 15-секундных отрезков, уже центрированных вокруг ключевого слова, а идеальный локальный список заранее знает нужные фразы. RTFx не включает сеть, очередь и полный серверный тракт. Предварительная регистрация скрывает цену компиляции и передачи графа; при частой смене списков она становится заметной. Нечувствительность к регистру также может объединить разные сущности.
Фишка из статьи. Главное производственное число находится не в таблице WER, а в разборе кэша. Если перестраивать и загружать отдельный граф внутри распознавания, скорость обрушивается; хранение готовых графов в памяти почти возвращает исходную пропускную способность. То есть алгоритм дешёвый, а жизненный цикл контекста - нет.
| Жадное декодирование, 128 потоков | F1 ключевых фраз | RTFx | Потеря скорости к режиму без контекста |
|---|---|---|---|
| Без контекста | 65,2 | 1812 | - |
| Общий граф, без кэша | 75,4 | 1726 | 4,7% |
| Отдельные графы, без кэша | 81,5 | 695 | 61,6% |
| Отдельные графы, кэш в памяти CPU | 81,5 | 1467 | 19,0% |
| Отдельные графы, регистрация до сессии | 81,5 | 1714 | 5,4% |
Как это читать: независимый пользовательский контекст даёт ещё 6,1 пункта F1 относительно общего графа, но без продуманного кэша съедает большую часть производительности. Если зарегистрировать модели до начала сессии, этот выигрыш сохраняется при потере лишь около 5% RTFx.