430 likes | 594 Views
RAPPORT DE PROJET SOUS HTK Reconnaissance de mots isolés Et Reconnaissance de mots connectés. Présenter par : Mounir GRARI. Reconnaissance de mots isolés Et Reconnaissance de mots connectés. Plan. Introduction Construction de la base de données Construction de modèle de langage
E N D
RAPPORT DE PROJET SOUS HTK Reconnaissance de mots isolés Et Reconnaissance de mots connectés Présenter par : Mounir GRARI
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Plan • Introduction • Construction de la base de données • Construction de modèle de langage • Acquisition des fichiers sons • Étiquetage des fichiers sons • Représentation acoustique du signal • Description des modèles • Modèles de Markov • Fichiers gabarits • Apprentissage • Apprentissage avec l’algorithme Vitervi (HInit) • Apprentissage avec l’algorithme de Baum Welch (HRest) • Ré estimation avec l’algorithme de Baum Welch de tous les models a la fois (HERest) • Reconnaissance • HVite et Hresults • Etude d’autres possibilités; vocabulaire restreint, vocabulaire plus complexe, analyse par mots et analyse par phonème • Etude du cas multi locuteur • Synthèse des résultats trouvés • Conclusion
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Introduction : • Le but est de construire un système de reconnaissance de mots isolés et ensuite de phrase qui suive une certaine syntaxe de plusieurs mots et de le valider sous l'environnement HTK (Hidden Markov Model Toolkit)
Reconnaissance de mots isolés Et Reconnaissance de mots connectés عشرون نادي على Pause محمد أمين Pause كلم Pause و Pause Pause إهتف لي Pause صفر واحد إثنان عشرة تسعون Pause ركب Début Fin modèle de langage
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Acquisition des fichiers sons :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Étiquetage des fichiers sons : • La santaxe de la Commande HSlab: • HSlab –F WAVE –L labels/ihtif.lab Signal/ihtif.wav
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Enregistrement et étiquetage des fichiers sons HSlab Les étiquettes (.lab) Les fichiers sons (.wav) Étiquetage des fichiers sons : • Le résultat de cette phase est une base de données des étiquettes des différents fichiers sons. (Les étiquettes sont dans le dossier labels)
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Fichier de configuration parametrisation.conf Les Fichiers MFCC ihtif.mfcc kallime.mfcc mohammed.mfcc etc Les fichiers sons (.wav) (hcopyliste.conf) Ihtif.wav Kallime.wav Amine.wav Hcopy Représentation acoustique du signal Représentation acoustique du signal : hcopyliste.conf signal/ihtif.wav mfcc/ihtif.mfcc signal/kallime.wav mfcc/kallime.mfcc signal/ala.wav mfcc/ala.mfcc signal/mohamed.wav mfcc/mohamed.mfcc . . . . parametrisation.conf SOURCEFORMAT=WAVE TARGETKIND=MFCC_E_D WINDOWSSIZE=250000.0 TARGETRATE=10000.0 NUMCEPS=8 # nb de coeff MFCC USEHAMMING=T PREEMCOEF=0.97 NUMCHANS=26 CEPLIFTER=22
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Représentation acoustique du signal : • Le nombre de coefficients MFCC utilisé est 8 + l’energie + les dérivés (donc 18) • Le résultat de cette phase est un ensemble de fichiers .mfcc dans le dossier mfcc contenant les coefficients.
Reconnaissance de mots isolés Et Reconnaissance de mots connectés sil ih tif sil Description des modèles : • Pour chaque entité lexicale, on définira le modèle associé. Pour cela, on donnera la topologie de chaque modèle, le nombre d'états et les probabilités de transition entre les états. • Exemple du model en phonétique représentant le mot du vocabulaire ihtif
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Description des modèles : • Fichiers gabarits : A chaque entité lexical (mot du vocabulaire) on va crée un fichier Gabarit (model) représentant l’entité lexical dans la pratique. <BeginHMM> <NumStates> 4 <VecSize> 18 <MFCC_D_E> <State> 2 <Mean> 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 <Variance> 18 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 <State> 3 <Mean> 18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 <Variance> 18 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 <TransP> 4 0.0 1.0 0.0 0.0 0.0 0.6 0.4 0.0 0.0 0.0 0.6 0.4 0.0 0.0 0.0 0.0 <EndHMM> Exemple : fichier gabarits/ihtif
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissageavec l’algorithme Vitervi (HInit) • Apprentissage avec l’algorithme Vitervi (HInit) • Chaque modèle doit être appris : les moyennes, les variances et les probabilités de transition entre états sont ré estimées jusqu'à ce qu'un seuil de convergence ou qu'un nombre maximum d'itération soient atteint. Ceci est fait par l'algorithme de Viterbi. • Pour chaque phonème on applique la commande HInit
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissageavec l’algorithme Vitervi (HInit) • Le fichier config/hinit.conf • Le fichier listes/mfcc.lst #Fichier de configuration pour l’initialisation des #modèles de Markov par l’algorithme de Viterbi TARGETKIND = MFCC_E_D Le fichier config/hinit.conf mfcc/ihtif.mfcc mfcc/kallime.mfcc mfcc/ala.mfcc mfcc/mohamed.mfcc mfcc/amine.mfcc mfcc/nadi.mfcc ….
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissageavec l’algorithme Vitervi (HInit)
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissageavec l’algorithme Vitervi (HInit) • La syntaxe de la commande HInit • HInit -C config/hinit.conf -A -o hinit/cif -l cif -L labels/ -i 20 -T 1 -m 2 gabarits/0 -S listes/mfcc.lst
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissageavec l’algorithme Vitervi (HInit) ~o <STREAMINFO> 1 18 <VECSIZE> 18<NULLD><MFCC_E_D><DIAGC> ~h "hinit/ihtif" <BEGINHMM> <NUMSTATES> 4 <STATE> 2 <MEAN> 18 -6.005343e+000 -1.046386e+000 -7.661552e-001 8.069010e+000 -8.266843e+000 -5.747077e+000 -3.216688e-001 -8.078197e+000 8.653573e-001 1.482991e-002 -2.785692e-003 2.108349e-003 -1.385363e-003 -1.897629e-002 -1.652776e-002 -3.286432e-003 -2.792146e-002 2.159977e-004 <VARIANCE> 18 7.077799e+001 4.468427e+001 8.880889e+001 4.942561e+001 9.471810e+001 7.407012e+001 4.695766e+001 7.936121e+001 1.000000e-002 1.238934e-001 1.128693e-001 1.343194e-001 1.521769e-001 2.594025e-001 2.268354e-001 2.340412e-001 2.891582e-001 1.000000e-002 <GCONST> 4.371070e+001 <STATE> 3 <MEAN> 18 -4.115136e+000 4.821393e+000 2.416528e-001 4.906225e+000 -2.838504e+000 -3.414094e+000 1.463784e+000 -6.460936e+000 8.129345e-001 -3.213571e-002 1.019199e-002 -5.698932e-003 3.618972e-003 4.414299e-002 3.562211e-002 6.894447e-003 6.707498e-002 -5.552998e-004 <VARIANCE> 18 1.517968e+001 2.769409e+001 1.666672e+001 2.582353e+001 4.500641e+001 9.010397e+001 2.904503e+001 7.800780e+001 1.000000e-002 2.547789e-002 5.287474e-002 7.262968e-002 9.334487e-002 1.291680e-001 1.512521e-001 1.913001e-001 1.906947e-001 1.000000e-002 <GCONST> 3.316070e+001 <TRANSP> 4 0.000000e+000 1.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 9.977974e-001 2.202643e-003 0.000000e+000 0.000000e+000 0.000000e+000 9.944401e-001 5.559846e-003 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 <ENDHMM> • Le fichier résultat de cette commande est hinit/ihtif qui contient
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissage • Le résultat de cette phase est un ensemble de fichiers dans le dossiers hinit/
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissage avec l’algo de Baum Welch (HRest) • Les modèles sont ensuite estimés de façon indépendante avec l’algorithme de Baum Welch en utilisant la commande HRest. • Pour chaque phonème on applique la commande HRest • Le fichier config/hrest.conf • Le fichier listes/mfcc.lst : deja utilisé avec la commande hinit #Fichier de configuration pour la re-estimation des #modèles de Markov par l’algorithme de Viterbi TARGETKIND = MFCC_E_D
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissage avec l’algo de Baum Welch (HRest) • La syntaxe de la commande HRest : • HRest -C config/hrest.conf -A -l aaich -M hrest/ -L labels/ -i 20 -T 1 -m 2 hinit/aaich -S listes/mfcc.lst
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissage avec l’algo de Baum Welch (HRest) ~o <STREAMINFO> 1 18 <VECSIZE> 18<NULLD><MFCC_E_D><DIAGC> ~h "aaich" <BEGINHMM> <NUMSTATES> 4 <STATE> 2 <MEAN> 18 -4.522240e+000 -5.880653e-001 8.032802e+000 1.781352e+001 -1.238021e+001 -1.077035e+001 -7.107430e+000 -8.941146e+000 7.310240e-001 5.426434e-003 7.549872e-002 1.450049e-001 6.228557e-002 -2.826517e-002 -1.814440e-001 -7.717894e-002 -2.151994e-001 1.169653e-003 <VARIANCE> 18 1.766042e+001 6.102851e+000 1.192767e+001 2.540695e+001 1.958749e+001 5.041793e+001 1.922638e+001 3.833256e+001 2.337085e-003 1.619523e-001 2.678286e-001 1.185456e-001 3.499088e-001 3.168113e-001 3.927653e-001 3.371374e-001 2.182082e-001 8.624458e-006 <GCONST> 2.823985e+001 <STATE> 3 <MEAN> 18 -1.939978e+001 3.436779e+000 8.813956e+000 6.829864e+000 1.483930e+000 -5.005201e+000 -6.350124e+000 -7.545569e+000 7.231323e-001 6.521484e-002 -5.791717e-002 -7.582700e-002 1.413276e-002 -3.901125e-002 6.619526e-003 -4.050380e-003 -9.888211e-002 1.033234e-003 <VARIANCE> 18 8.760622e+001 6.642943e+000 2.810736e+001 2.752651e+001 1.858868e+001 3.854350e+001 3.150053e+001 6.762994e+001 2.326111e-003 2.225343e-001 1.282824e-001 2.050075e-001 1.057131e-001 3.768567e-001 7.502362e-001 3.706125e-001 3.885895e-001 1.905958e-005 <GCONST> 3.281725e+001 <TRANSP> 4 0.000000e+000 1.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 9.883134e-001 1.168664e-002 0.000000e+000 0.000000e+000 0.000000e+000 9.933964e-001 6.603613e-003 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 <ENDHMM> • Le fichier résultat de cette commande est hrest/aaich qui contient :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Apprentissage avec l’algo de Baum Welch (HRest) • Le résultat de cette phase est un ensemble de fichiers dans le dossiers hrest/ • On remarque que mon langage contient 50 syllabes.
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Reconnaissance • On doit définir le modèle de notre langage ; la grammaire de notre langage est définie dans le fichier listes/modeleLangage.txt : $chiff = ciffr | wahid |itnan | thalathah | arrbaaah | khamsah | sitah | sabaah | thamanniah | tisaah | aacharah | i7daaachar | ithnaaachar | thalathataaachar | arrbaaataaachar | khamsataaachar | sitataaachar | sabaataaachar | thamanniataaachar | tisaataaachar | aaichroun | thalatoun | arrbaaaoun | khamsoun | sitoun | sabaaoun | thamanoun | tisaaoun; $sil = sil ; $prenom = [ mohamed sil ] amine | mohamed ; $numerotel = $chiff $sil $chiff [ $sil wa $sil $chiff ] $sil ; (SENT-START ( $sil ihtif $sil li $sil $numerotel ) | ( $sil nadi $sil ala $sil $prenom $sil ) | ( $sil kallime $sil $prenom $sil ) | $chiff SENT-END)
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Reconnaissance • On va appliquer la commande HParse à cette grammaire pour générer le modeleDeMots • La syntaxe de la commande HParse: • HParse -T 1 listes/modelelangage.txt listes/modeledemots.txt • Le résultat est un fichier listes/modeledemots.txt qui contient tous les mots de notre langage : VERSION=1.0 N=151 L=266 I=0 W=!NULL I=1 W=!NULL I=2 W=SENT-START I=3 W=sil I=4 W=ihtif . . . .
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Reconnaissance • Dictionnaire du langage : • Un fichier listes/dictionnaire.txt contient le dictionnaire de notre langage : SENT-START [ ] SENT-END [ ] ciffr cif fr wahid wa hid itnan ith nan thalathah tha la thah arrbaaah arr ba aah khamsah kham sah sitah si tah sabaah sab aah thamanniah tha man niah tisaah tis aah aacharah aa cha rah
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Reconnaissance • La reconnaissance sera ensuite effectuée sur chaque fichier en utilisant successivement les modèles issus de HInit ceux issus de HRest et ceux de HERest afin d’évalué l’apport des divers apprentissage. • Pour cela nous allons utiliser la commande HVite. • La syntaxe de la commande HVite: HVite -T 1 -A -w listes/modeledemots.txt -d hinit/ -l resultat/hinit/ -S listes/mfcc.ar.lst listes/dictionnaire.txt listes/listemodeles.txt • Il utilise : • listes/modeledemots.txt générer avec HParse. • listes/dictionnaire.txt qui contient le dictionnaire du langage. • listes/listemodeles.txt qui contient les phonèmes du langage. • hrest/ le dossier contenant les estimations par hinit hrest ou herest. • resultat/hrest/ dans lequel les résultats de la commande serons mis. • listes/mfcc.ar.lst la listes des fichiers MFCC des fichiers à reconnaître.
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Reconnaissance • les deux premières chaînes sont reconnues entièrement :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Reconnaissance • Le résultat est un fichier « .rec » pour chaque fichier à reconnaître. • Par exemple pour ihtifli066ar.wav en utilisant les estimations par hinit le résultat est resultats/hinit/ihtifli066ar.rec 0 320000 sil -1088.285034 320000 4620000 ihtif -9798.015625 4620000 5030000 sil -1100.481689 5030000 8090000 li -9363.433594 8090000 8250000 sil -433.379944 8250000 10290000 ciffr -4814.938965 10290000 12160000 sil -4441.611328 12160000 16880000 sitah -10271.931641 16880000 17600000 sil -1854.313232 17600000 19780000 wa -7324.110352 19780000 20510000 sil -2059.960449 20510000 27070000 sitoun -16285.652344 27070000 27260000 sil -438.454254
Reconnaissance de mots isolés Et Reconnaissance de mots connectés L’évaluation des performances: • La syntaxe de la commande HResults: • HResults -T 1 -L labels/ listes/listemodeles.txt resultat/hinit/ihtifli066ar.rec • On remarque que le taux de la reconnaissance est de 46.67% en utilisant les estimations de hinit, ou ceux de hrest. • Analyse des résultats : • H = 7 : Nombre d'éléments bien classés • D =2 : Nombre d'éléments supprimés • S = 6 : Nombre d'éléments substitués • I = 0 : Nombre d'éléments insérés • N =15 : Nombre total d'éléments
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Langage restreint et reconnaissance par phonème • On utilise la grammaire suivante • La reconnaissance donne ce qui suit : $chiff = ciffr | wahid ; $sil = sil ; $prenom = mohamed ; (SENT-START ( $sil kallime $sil $prenom $sil ) | $sil $chiff $sil SENT-END)
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Langage restreint et reconnaissance par phonème • On affiche les résultats avec HResults. • Les résultats pour la reconnaissance de mots isolés : • Les résultats pour la reconnaissance de mots connectés :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Langage restreint et reconnaissance par mot • Nous allons utiliser un vocabulaire de 4mots. • Nous allons faire un étiquetage par mots (donc seulement 4 étiquette) • On utilise la grammaire suivante $chiff = ciffr | wahid ; $sil = sil ; $prenom = mohamed ; (SENT-START ( $sil kallime $sil $prenom $sil ) | $sil $chiff $sil SENT-END)
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Langage restreint et reconnaissance par mot • La reconnaissance donne ce qui suit :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Langage restreint et reconnaissance par mot • On affiche les résultats avec HResults. • Les résultats pour la reconnaissance de mots isolés : • Les résultats pour la reconnaissance de mots connectés :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Langage complexe et reconnaissance par mot • Nous allons utiliser un vocabulaire de 36 mots. • Nous allons faire un étiquetage par mots (donc seulement 37 étiquette) • On utilise la grammaire suivante $chiff = ciffr | wahid ; $sil = sil ; $prenom = mohamed ; (SENT-START ( $sil kallime $sil $prenom $sil ) | $sil $chiff $sil SENT-END)
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Langage complexe et reconnaissance par mot • La reconnaissance donne ce qui suit :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Langage complexe et reconnaissance par mot • On affiche les résultats avec HResults. • Les résultats pour la reconnaissance de mots isolés : • Les résultats pour la reconnaissance de mots connectés :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Synthèse des résultats trouvés :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Etude du cas multi locuteur • Nous allons utiliser deux locuteurs ; le résultat est : • On remarque qu’il y reconnaissance totale des mots isolés.
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Etude du cas multi locuteur • On affiche les résultats avec HResults. • Les résultats pour la reconnaissance de mots isolés du locuteur 1 • Un taux de reconnaissance est de 100% en utilisant les estimations de hinit et ceux de hrest
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Etude du cas multi locuteur • On affiche les résultats avec HResults. • Les résultats pour la reconnaissance de mots isolés du locuteur 2 • Un taux de reconnaissance est de 100% en utilisant les estimations de hinit et ceux de hrest
Reconnaissance de mots isolés Et Reconnaissance de mots connectés Conclusion : • Le présent rapport vise à expliquer la construction d’un système de reconnaissance de mots isolés et de phrase (mots connectés) qui suive une certaine syntaxe de plusieurs mots. Avec une reconnaissance par phonème et une grammaire de langage plus simple j’ai arrivée a des taux de reconnaissance jusqu'à 46.67% pour des phrase comme « ihtif li 066 » ou même 50% pour des mots isolé « ciffr » et ensuite avec un modèle de langage plus complexe (plus utile) le taux diminue jusqu'à 40% pour une phrase tel que « ihtif li 0 66 58 11 69 », mais dans les deux cas les phrase sont souvent entièrement reconnue par le système Comme « kallime mohamed », ensuite j’ai fait une reconnaissance par mots qui donne de bons résultats surtout pour des mots isolés avec des taux de reconnaissance de 100%, et des taux entre 60% et 80% pour des mots connecté, et j’ai terminer avec un système multi locuteur qui fait une reconnaissance de 100% pour des mots isolés.