Développement d un système de reconnaissance de parole avec HTK HTK (pour Hidden Markov Model Toolkit ou «boîte à outils pour modèles de Markov cachés») est un ensemble de librairies et de programmes en langage C développés à l Université de Cambridge sous la direction de S. Young à partir de 1989, pour faire de la reconnaissance de parole avec des HMM. Depuis septembre 2000, HTK est distribué gratuitement sur le site http://htk.eng.cam.ac.uk pour une utilisation non commerciale et maintenu par P. Woodland et ses collègues. HTK permet de faire des systèmes de reconnaissance de parole à petit/moyen vocabulaire, avec une grammaire simple (par automate ou par bigramme). On peut aussi l utiliser pour autre chose que de la parole (reconnaissance d écriture manuscrite par HMM, par exemple). L équipe de Cambridge a obtenu de très bons résultats en reconnaissance de parole sur les tâches «Wall Street Journal» et «Broadcast News», lors des évaluations américaines DARPA/NIST des années 90 et en transcription de parole spontanée depuis. Un décodeur plus performant permettant l utilisation de trigrammes a ensuite été intégré. Présentation générale de HTK HTK est constitué d une vingtaine de programmes autonomes, dont les paramètres sont transmis par la ligne de commande ou par des variables d environnement, et qui réalisent chacun une étape de l apprentissage ou de la reconnaissance. On peut les enchaîner automatiquement par des scripts (en C-shell, Perl, etc). Le manuel de HTK est très complet, avec un tutorial général, une présentation approfondie et un manuel de référence des différents modules. Le 1 er chapitre constitue une bonne introduction à la reconnaissance de la parole par HMM. La documentation est aussi disponible au format HTML pour une consultation en ligne. L illustration suivante, tirée du manuel, donne l architecture globale du développement d un système de reconnaissance : C. Barras, LIMSI-CNRS Présentation de HTK 1
Description synthétique des outils de HTK Manipulation du signal et des paramètres HList Affiche le contenu d un fichier (signal ou paramètres) HCopy Copie et convertit des fichiers d un format à un autre (en particulier calcule des paramètres LPC, MFCC - à partir d un signal) HQuant Réalise la quantification vectorielle des paramètres d apprentissage HCompV Calcule la moyenne et la matrice de covariance de fichiers de paramètres (permet d initialiser les modèles en l absence de segmentation initiale) Manipulation des étiquettes HSLab Edition interactive de fichiers d étiquetage avec affichage du signal HLEd Edition automatisée des fichiers d étiquetage (suppression, remplacement, fusion d étiquettes ) HLStats Calcule diverses statistiques sur des fichiers d étiquetage, en particulier des matrices bigrammes utilisées en reconnaissance Manipulation de la grammaire et du dictionnaire HBuild Convertit une grammaire probabiliste dans un format connu du décodeur HParse Convertit une grammaire déterministe dans un format connu du décodeur HSGen Génère aléatoirement des phrases respectant une grammaire HDMan Crée un dictionnaire de prononciation adapté à la tâche Apprentissage et manipulation des modèles HInit Apprentissage initial d un modèle en mode isolé par l algorithme de Viterbi HRest Re-apprentissage d un modèle en mode isolé par l algorithme de Baum- Welch (une itération) HERest Ré-apprentissage de tous les modèles en mode connecté (sur du signal non segmenté) par l algorithme de Baum-Welch (une itération) HHEd Edition des modèles au moyen d un script (duplication de modèles, augmentation du nombre de gaussiennes, création de triphones ) HEAdapt Adaptation supervisée des modèles par les techniques MLLR ou MAP HSmooth Lissage de modèles dépendants du contexte par l algorithme «deleted interpolation» (utilisation très spécifique) Reconnaissance et évaluation: HVite Décodage par l algorithme de Viterbi HResults Calcul du taux d erreur de la reconnaissance en comparaison avec le fichier de référence Syntaxe des programmes Chaque programme, lorsqu il est lancé sans paramètres, fournit un résumé de sa syntaxe (ex : HInit ). Certaines options sont communes à un grand nombre d outils : -C config désigne un fichier de configuration pour l exécution de la commande -D affiche les valeurs de configuration utilisées -S filelist ajoute à la ligne de commande la liste de noms contenue dans le fichier -T trace affiche une trace d exécution (d autant plus précise que la valeur est élevée) -V affiche la version de l outil C. Barras, LIMSI-CNRS Présentation de HTK 2
Architecture d un système de reconnaissance avec HTK Les principaux outils de HTK s'enchaînent naturellement pour réaliser les différentes étapes d'un système de reconnaissance: calcul des paramètres du signal, apprentissage des modèles, et expériences de reconnaissance. Définition de la tâche Il faut définir la grammaire de la tâche, la liste des mots du vocabulaire, et un dictionnaire de prononciation de ces mots dans les unités acoustiques modélisées (en phonèmes par exemple). A partir d une grammaire déterministe à états finis décrite dans un fichier texte sous forme d expressions régulières, HParse produit un réseau utilisable par le décodeur pour contraindre la recherche. Si l on utilise plutôt une grammaire probabiliste, par exemple un bigramme estimé par HLStats sur des données d apprentissage transcrites, HBuild sera utilisé pour produire le réseau correspondant. HDMan est utilisé pour produire un dictionnaire de prononciation adapté au lexique à partir de plusieurs sources d information disponibles (dictionnaires phonétisés pré-existants, par exemple). Enregistrement des données Pour un bon apprentissage des modèles, il est nécessaire de disposer de grandes quantités de données de parole transcrite. Il faut d abord enregistrer des phrases représentatives de la tâche ; des textes peuvent être générés automatiquement par HSGen à partir d une grammaire déterministe. Une fois l enregistrement réalisé, HList permet d'afficher la valeur numérique des échantillons d'un fichier de signal. L'outil HSLab, destiné à l enregistrement et à l'étiquetage manuel d'un signal, peut aussi servir à afficher simplement le signal temporel et à le jouer. Transcription des données d apprentissage Les phrases d'apprentissage doivent être toutes accompagnées d un étiquetage de référence, au minimum une transcription orthographique. Si l on travaille avec de la parole lue, on dispose normalement déjà du texte, qu il suffit de traduire dans un format reconnu par HTK. Si l on travaille sur de la parole spontanée, il est nécessaire de réaliser une transcription a posteriori, ce qui est beaucoup plus long. Il existe des bases de données de parole avec une segmentation et un étiquetage au niveau phonétique, ce qui facilite l initialisation des modèles acoustiques, mais elles sont en quantité limitées et très coûteuses à réaliser. L'éditeur HLEd permet de modifier les étiquettes (mots ou phonèmes), par exemple pour regrouper plusieurs phonèmes différents dans une seule classe ou pour fusionner des segments adjacents, ou de fabriquer une transcription phonétique à partir de la transcription en mot et du dictionnaire de prononciation. Afin d évaluer les performances du système, il est nécessaire de réserver certaines phrases transcrites pour le test : elles ne seront donc pas utilisées pour l apprentissage. Calcul des paramètres du signal Avant l apprentissage des modèles acoustiques ou la reconnaissance, il faut passer d'une représentation temporelle du signal à une représentation fréquentielle. Des paramètres classiques pour représenter le signal sont les coefficients LPCC ou MFCC (coefficients cepstraux répartis sur une échelle fréquentielle perceptive Mel) typiquement une douzaine et l'énergie du signal, calculés toutes les 10 ms sur une fenêtre de 20 à 30 ms de signal. L outil HCopy permet, associé à un fichier de configuration adéquat, de calculer les paramètres d un signal. C. Barras, LIMSI-CNRS Présentation de HTK 3
Le contenu du fichier de paramètres peut être lui aussi affiché par HList. Les paramètres différentiels (dérivées première et seconde des coefficients MFCC) améliorent les performances des systèmes de reconnaissance, mais HTK permet de les calculer à la volée avant l apprentissage et la reconnaissance, sans les stocker dans un fichier. Définition des prototypes Pour une tâche donnée, il faut choisir ce que l on modélise : des mots ou des unités plus courtes (typiquement des phonèmes), éventuellement dépendantes du contexte (biphones, triphones). Ensuite, il faut choisir la topologie des modèles de Markov : nombre d états, transitions possibles entre états. Un des modèles les plus utilisés pour les phonèmes est un modèle gauche-droit à 3 états avec bouclage possible sur chaque état. Enfin, il faut définir le type de densité de probabilité associée aux états ou aux transitions. La loi la plus utilisée est une gaussienne multi-variable ou une combinaison linéaire de gaussiennes. Modèle gauche-droit Ceci fait, il faut créer, dans la syntaxe de HTK, un prototype du modèle choisi, en donnant une valeur par défaut aux probabilités d'émission des états (décrites par la moyenne et la matrice de covariance des gaussiennes) ainsi que les probabilités de transition sous forme d une matrice. La matrice de covariance, théoriquement symétrique, peut être rendue diagonale si l'on suppose l'indépendance entre les composantes des vecteurs de paramètres, et les vecteurs de paramètres peuvent aussi être séparés en flux de données indépendants. Il n'existe malheureusement pas d'outil standard pour générer les prototypes, mais des scripts et des exemples sont fournis, et les modèles sont enregistrés dans des fichiers texte, ce qui facilite leur manipulation. A noter que, dans HTK, les observations sont émises au niveau des états et non des transitions; de plus, un état non-émetteur est rajouté au début et à la fin du modèle pour faciliter la connexion des modèles en parole continue. Initialisation des modèles Pour chaque modèle de phonème, le prototype est utilisé pour apprendre les lois de probabilité associées. Si l on dispose d une partie de la base étiquetée phonétiquement, on peut faire une initialisation des modèles en mode isolé : les segments de la base d'apprentissage qui portent l'étiquette du modèle en cours d'apprentissage sont extraits. Une première étape, avec l'outil HInit, permet une initialisation approximative des probabilités d'émission des états du modèle au moyen de l'algorithme de Viterbi. Une deuxième étape, avec l'outil HRest, permet une réestimation plus fine des lois de probabilités avec l'algorithme optimal de Baum-Welch. A chaque étape, plusieurs itérations de l'algorithme sont appliquées au modèle, et le modèle final maximise la probabilité que ces observations aient été émises par le modèle. Si l on ne dispose pas d un étiquetage fin permettant cette initialisation, on peut se contenter d une initialisation globale, en attribuant à chaque densité de probabilité de chaque modèle la moyenne et la variance de l ensemble des données d apprentissage, avec l outil HCompV, puis en poursuivant avec une réestimation en modèles connectés ; mais ceci nécessite une quantité de données d apprentissage plus importante, pour éviter que l apprentissage diverge. C. Barras, LIMSI-CNRS Présentation de HTK 4
Réestimation des modèles L'outil HERest, qui applique le même algorithme que HRest mais en mode connecté, permet une ré-estimation simultanée de tous les modèles acoustiques. A partir de données d apprentissage étiquetées en mots, le dictionnaire de prononciations est utilisé pour produire la chaîne phonétique correspondante, avec éventuellement des variantes de prononciation et des silences optionnels. Plusieurs itérations de HERest sont nécessaires pour que l'estimation converge. Amélioration des modèles La densité de probabilité utilisée pour estimer la probabilité d'observation des premiers modèles acoustiques est en général une simple loi normale à matrice de covariance diagonale. Pour améliorer la modélisation des probabilités, on peut choisir une combinaison linéaire de gaussiennes (ou multi-gaussienne) au lieu d'une seule. Bien qu'il soit possible d'apprendre directement un modèle à multi-gaussiennes, il est plus efficace d'augmenter progressivement le nombre de gaussiennes à partir d'un modèle mono-gaussien. L'éditeur de modèles HHEd réalise l'augmentation du nombre de gaussiennes d une densité de probabilité, en dupliquant certaines. Il faut ensuite procéder au ré-apprentissage de tous les modèles par HRest ou HERest. Le choix du nombre optimal de gaussiennes est un problème délicat, guidé par des heuristiques. HTK offre aussi des facilités pour travailler avec des modèles acoustiques contextuels, dépendants des contextes phonétiques gauches et/ou droits, ce qui nécessite de partager des paramètres entre plusieurs modèles lorsque la fréquence d un phonème dans un contexte donné est trop faible pour une estimation fiable des paramètres du modèle. L adaptation de modèles à de nouvelles conditions acoustiques ou à un nouveau locuteur est réalisée en mode supervisé par HEAdapt avec les algorithmes MAP ou MLLR, ou par HVite en mode non-supervisé en MLLR. Décodage Le décodage des phrases de test est réalisé avec l'outil HVite, qui applique l'algorithme de Viterbi pour trouver la chaîne de mots la plus probable correspondant à un fichier de paramètres. Ce décodage est contraint par la grammaire de la tâche : une réseau déterministe, ou un bigramme estimé sur les étiquettes des phrases d'apprentissage par l'outil HLStats. Résultats La transcription obtenue après le décodage est comparée avec l'étiquetage de référence par un alignement dynamique réalisé par HResults, afin de compter les étiquettes identifiées, omises, substituées par une autre, et insérées, et de calculer le taux de reconnaissance. Les résultats fournis sont les taux d'identification correcte des phrases complètes et des mots, ainsi qu un pourcentage global de reconnaissance tenant compte de tous les types d erreurs. Des options permettent obtenir, en plus du taux global de reconnaissance, la matrice de confusion des mots ou l'alignement temporel entre les chaînes de référence et celles résultant de la reconnaissance automatique. C. Barras, LIMSI-CNRS Présentation de HTK 5