Sobre o projeto
Premove ITN é uma biblioteca de normalização inversa de texto (ITN) de código aberto e sensível ao contexto, projetada para transcrições de agentes de voz em inglês. Ela converte saídas de ASR (Reconhecimento Automático de Fala) em formas escritas canônicas para valores estruturados, como números de telefone, endereços de e-mail, identificadores, datas, horários, valores monetários, medidas e códigos alfanuméricos.
O principal desafio que o Premove ITN aborda é a ambiguidade da linguagem falada. Por exemplo, 'um zero cinco' pode significar o identificador 105, o horário 1:05 ou algo completamente diferente. Sistemas tradicionais baseados em regras nem sempre conseguem determinar qual interpretação o falante pretendia. O Premove ITN resolve isso usando pontuação sensível ao contexto para selecionar a forma escrita correta.
A arquitetura segue um pipeline de três etapas: gerar, pontuar e decodificar. Primeiro, uma camada de realização baseada em Rust enumera todas as formas escritas válidas para trechos de texto falado. Em segundo lugar, um pontuador contextual DeBERTa-v3-large (435,6 milhões de parâmetros) codifica a transcrição uma vez e pontua cada candidato com base no trecho de origem contextual, nos rótulos de tipo do candidato e na substituição proposta. Terceiro, um decodificador exato de programação dinâmica encontra o caminho compatível de maior pontuação através da transcrição, lidando com candidatos sobrepostos.
As formas suportadas incluem números, sequências de dígitos, horários, datas, valores monetários, decimais, medidas, ordinais, números de telefone, e-mails e URLs, versões e identificadores, pontuação e abreviações. A ferramenta é exclusivamente em inglês e não fornece normalização de primeira classe para fala não inglesa, endereços de rua, reescrita de forma livre ou formatos arbitrários específicos de aplicativos.
Em um benchmark congelado de 1.500 linhas com um subconjunto dedicado de 400 linhas de agentes de voz, o Premove ITN alcança 99,50% de precisão semântica no subconjunto de agentes de voz, em comparação com 68,25% para text-processing-rs e 67,00% para NVIDIA Thutmose. O benchmark é um conjunto de estresse sintético mantido fora do treinamento e da seleção de checkpoints.
A ferramenta é distribuída como um pacote Python (premove-itn) no PyPI, com pesos de modelo hospedados no Hugging Face (premove-ai/premove-itn). A versão atual é a v0.2.0. O carregamento do modelo é caro (inicialização de vários segundos, ~1,6 GB no primeiro download), mas as chamadas de normalização em modo aquecido são rápidas (latência média aquecida de 56,49 ms no Apple M4 MacBook Air).
As limitações incluem suporte exclusivo para inglês, normalização limitada por realizadores Rust determinísticos, rejeição de entradas com mais de 512 tokens DeBERTa e suporte não validado para CUDA, Windows, macOS Intel, Linux ARM64 e outros aceleradores.
O código-fonte e os pesos do modelo são licenciados sob MIT. O pontuador contextual usa microsoft/deberta-v3-large como espinha dorsal do codificador, e a camada de realização Rust usa text-processing-rs (licenciado sob Apache-2.0).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.