Reconnaissance de Yes/No à l’aide du HTK Adapté d’un tutoriel du HTK par Nicolas Moreau
Étapes de la réalisation 1.Création de l’ensemble d’apprentissage : Chaque élément du vocabulaire est enregistré plusieurs fois, et étiqueté avec le mot correspondant 2.Analyse acoustique : Les signaux enregisrés sont convertis en une séries de vecteurs de traits. 3.Définition des modèles HMM : Un prototype de HMM est construit pour chaque élément du vocabulaire de la tâche de reconnaissance. 4.Entraînement des modèles : Chaque HMM est initialisé et entraîné avec l’ensemble d’apprentissage correspondant. 5.Définition de la tâche de reconnaissance : La grammaire à suivre est définie. 6.Reconnaissance et évaluation de la performance sur un corpus de test.
Organisation d’un espace de travail On crée la hiérarchie de répertoires suivante : data/ : emmagasine les données d’apprentissage et de test (signaux acoustiques, étiquettes, etc.) suivant deux sous-répertoires data/train/ et data/test/. analysis/ : emmagasine les donnés de l’etape d’analyse acoustique. training/ : emmagasine les fichiers concernant l’initialisation et l’apprentissage. model/ : Emmagasine les modèles (HMMs). def/ : emmagasine les fichier de définition de la tâche de reconnaisance. test/ : emmagasine les fichier ayant trait à la validation (test).
Création du corpus d’apprentissage L’enregistrement et l’étiquetage sont accomplis à l’aide de l’outil à interface graphique HSLab (boutons rec, stop, mark et labelas) : HSLab any_name.sig Après l’etiquetage, on obtient un fichier texte.lab de la forme sil yes sil On recommence le processus avec des noms de fichiers différents pour chaque enregistrement (e.g. yes01.sig, yes01.lab, yes02.sig, yes02.lab, etc.)
Analyse acoustique Est effectuée à l’aide de l’outil HCopy : –HCopy -A -D -C analysis.conf -S targetlist.txt Où analysis.conf est un fichier de configuration pour l’extraction de coefficients acoustiques et targetlist.txt spécifie les noms et locations de chaque signal à traiter et du fichier de coefficients correspondant à générer.
MFCC_0_D_A = 12 MFCC + DC + 13 Delta + 13 Acceleration =39 coeff.
Définition structurelle des HMM Il faut définir le nombre d’états, les fonctions d’observation et les probabilité de transition entre états : pas évident ! Il faut définir 3 prototypes de HMM avec les options ~h "yes", ~h "no" and ~h "sil " dans les fichiers de description (hmm_yes, hmm_no, hmm_sil, )
Entraînement des HMM Elle comprend une phase d’initialisation et une phase d’entraînement HInit -A -D –T 1 -S trainlist.txt -M model/hmm0 \ -H model/proto/hmmfile -l label -L label_dir nameofhmm nameofhmm : le nom du HMM à initialiser hmmfile : fichier descriptif contenant le prototype du HMM trainlist.txt : liste complète des dichiers.mfcc constituant le corpus d’apprentissage label_dir : Répertoire des fichiers d’étiquetage (.lab) correspondant au corpus d’apprentissage label : indique quel segment étiqueté doit être utilisé sans l’ensemble d’apprentissage (yes,no, ou sil, puisqu’on a utilisé ces noms pour étiqueter les HMMs) model/hmm0 : Répertoire de sortie (doit exister) pour la description de HMM résultante. La procédure doit être répétée pour chaque modèle (hmm_yes, hmm_no, hmm_sil).