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
4171250 9229375 sil
9229375 15043750 yes
15043750 20430625 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).