À propos du projet

Premove ITN est une bibliothèque open-source de normalisation inverse de texte (ITN) sensible au contexte, conçue pour les transcriptions d'agents vocaux en anglais. Elle convertit la sortie ASR (reconnaissance automatique de la parole) en formes écrites canoniques pour des valeurs structurées telles que les numéros de téléphone, les adresses e-mail, les identifiants, les dates, les heures, les montants, les mesures et les codes alphanumériques. Le défi principal auquel Premove ITN répond est l'ambiguïté du langage parlé. Par exemple, « one oh five » pourrait désigner l'identifiant 105, l'heure 1:05, ou toute autre chose. Les systèmes traditionnels basés sur des règles ne peuvent pas toujours déterminer l'interprétation voulue par le locuteur. Premove ITN résout ce problème en utilisant un scoring contextuel pour sélectionner la forme écrite correcte. L'architecture suit un pipeline en trois étapes : générer, scorer et décoder. Premièrement, une couche de réalisation en Rust énumère toutes les formes écrites valides pour les segments de texte parlé. Deuxièmement, un scoreur contextuel DeBERTa-v3-large (435,6 M de paramètres) encode la transcription une seule fois et score chaque candidat en fonction du segment source contextuel, des étiquettes de type de candidat et du remplacement proposé. Troisièmement, un décodeur par programmation dynamique exacte trouve le chemin compatible le plus haut score à travers la transcription, en gérant les candidats qui se chevauchent. Les formes prises en charge comprennent les nombres, les séquences de chiffres, les heures, les dates, les montants, les décimales, les mesures, les ordinaux, les numéros de téléphone, les e-mails et URL, les versions et identifiants, la ponctuation et les abréviations. L'outil est uniquement en anglais et ne fournit pas de normalisation de première classe pour les discours non anglais, les adresses postales, la réécriture libre ou les formats arbitraires spécifiques à une application. Sur un benchmark figé de 1 500 lignes avec un sous-ensemble dédié de 400 lignes d'agents vocaux, Premove ITN atteint une précision sémantique de 99,50 % sur le sous-ensemble d'agents vocaux, contre 68,25 % pour text-processing-rs et 67,00 % pour NVIDIA Thutmose. Le benchmark est une suite de stress synthétique exclue de l'entraînement et de la sélection des points de contrôle. L'outil est distribué sous forme de paquet Python (premove-itn) sur PyPI, avec les poids du modèle hébergés sur Hugging Face (premove-ai/premove-itn). La version actuelle est la v0.2.0. Le chargement du modèle est coûteux (initialisation de plusieurs secondes, ~1,6 Go lors du premier téléchargement), mais les appels de normalisation à chaud sont rapides (latence moyenne à chaud de 56,49 ms sur MacBook Air Apple M4). Les limitations incluent la prise en charge uniquement en anglais, une normalisation bornée par les réalisateurs déterministes en Rust, le rejet des entrées dépassant 512 jetons DeBERTa, et un support non validé pour CUDA, Windows, macOS Intel, Linux ARM64 et d'autres accélérateurs. Le code source et les poids du modèle sont sous licence MIT. Le scoreur contextuel utilise microsoft/deberta-v3-large comme backbone d'encodeur, et la couche de réalisation en Rust utilise text-processing-rs (licence Apache-2.0).