Об этом проекте

Premove ITN — это библиотека с открытым исходным кодом для контекстно-зависимой обратной нормализации текста (ITN), предназначенная для транскриптов голосовых агентов на английском языке. Она преобразует выходные данные автоматического распознавания речи (ASR) в канонические письменные формы для структурированных значений, таких как номера телефонов, адреса электронной почты, идентификаторы, даты, время, деньги, измерения и буквенно-цифровые коды. Основная задача, которую решает Premove ITN, — это неоднозначность разговорного языка. Например, «one oh five» может означать идентификатор 105, время 1:05 или что-то совершенно иное. Традиционные системы, основанные на правилах, не всегда могут определить, какую интерпретацию имел в виду говорящий. Premove ITN решает эту проблему с помощью контекстно-зависимого скоринга для выбора правильной письменной формы. Архитектура представляет собой трёхэтапный конвейер: генерация, оценка и декодирование. Сначала уровень реализации на Rust перечисляет все допустимые письменные формы для фрагментов произнесённого текста. Затем контекстный скоринг на основе DeBERTa-v3-large (435,6 млн параметров) один раз кодирует транскрипт и оценивает каждого кандидата с учётом контекстного исходного фрагмента, меток типов кандидатов и предлагаемой замены. Наконец, точный декодер на основе динамического программирования находит совместимый путь с наибольшим баллом по транскрипту, обрабатывая перекрывающихся кандидатов. Поддерживаемые формы включают числа, цифровые последовательности, время, даты, деньги, десятичные дроби, измерения, порядковые числительные, номера телефонов, адреса электронной почты и URL-адреса, версии и идентификаторы, пунктуацию и сокращения. Инструмент поддерживает только английский язык и не предоставляет полноценной нормализации для неанглийской речи, почтовых адресов, свободного переписывания или произвольных форматов, специфичных для приложений. На фиксированном эталоне из 1500 строк с выделенным подмножеством из 400 строк для голосовых агентов Premove ITN достигает 99,50% семантической точности на подмножестве голосовых агентов, по сравнению с 68,25% для text-processing-rs и 67,00% для NVIDIA Thutmose. Эталон представляет собой синтетический набор стресс-тестов, исключённый из обучения и выбора контрольных точек. Инструмент распространяется как пакет Python (premove-itn) на PyPI, а веса модели размещены на Hugging Face (premove-ai/premove-itn). Текущий выпуск — v0.2.0. Загрузка модели требует больших затрат (инициализация занимает несколько секунд, первая загрузка — около 1,6 ГБ), но тёплые вызовы нормализации выполняются быстро (средняя задержка тёплого вызова 56,49 мс на Apple M4 MacBook Air). Ограничения включают поддержку только английского языка, ограниченную нормализацию детерминированными реализациями на Rust, отклонение входных данных длиннее 512 токенов DeBERTa и непроверенную поддержку CUDA, Windows, macOS Intel, Linux ARM64 и других ускорителей. Исходный код и веса модели распространяются под лицензией MIT. Контекстный скоринг использует microsoft/deberta-v3-large в качестве базового кодировщика, а уровень реализации на Rust использует text-processing-rs (лицензия Apache-2.0).