Présenter par : Mounir GRARI
description
Transcript of Présenter par : Mounir GRARI
1
Présenter par :Mounir GRARI
RAPPORT DE PROJET SOUS HTK
Reconnaissance de mots isolés Et
Reconnaissance de mots connectés
2
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
3
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
4
modèle de langage Reconnaissance de mots isolés Et Reconnaissance de mots connectés
Début Fin
نادي
على
Pause
محمد
أمين
Pauseكلم
Pause
Pause
Pause
ركب
Pause
إهتف
لي
Pause
صفر
واحد
إثنان
عشرة
تسعون
عشرون
و
5
Acquisition des fichiers sons :Reconnaissance de mots isolés Et Reconnaissance de mots connectés
6
É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
7
É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
HSlabLes fichiers sons (.wav)
Les étiquettes (.lab)
Enregistrement et étiquetage des fichiers sons
8
Représentation acoustique du signal :Reconnaissance de mots isolés Et Reconnaissance de mots connectés
Hcopy
Les fichiers sons (.wav) (hcopyliste.conf)Ihtif.wavKallime.wavAmine.wav
Les Fichiers MFCC ihtif.mfcckallime.mfccmohammed.mfccetc
Représentation acoustique du signal
Fichier de configurationparametrisation.conf
parametrisation.confSOURCEFORMAT=WAVETARGETKIND=MFCC_E_DWINDOWSSIZE=250000.0TARGETRATE=10000.0NUMCEPS=8 # nb de coeff MFCCUSEHAMMING=TPREEMCOEF=0.97NUMCHANS=26CEPLIFTER=22
hcopyliste.confsignal/ihtif.wav mfcc/ihtif.mfccsignal/kallime.wav mfcc/kallime.mfccsignal/ala.wav mfcc/ala.mfccsignal/mohamed.wav mfcc/mohamed.mfcc....
9
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
10
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
sil ih tif sil
11
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.
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
<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
12
Apprentissage avec 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
13
Apprentissage avec l’algorithme Vitervi (HInit)
• Le fichier config/hinit.conf
• Le fichier listes/mfcc.lst
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
#Fichier de configuration pour l’initialisation des #modèles de Markov par l’algorithme de ViterbiTARGETKIND = MFCC_E_DLe fichier config/hinit.conf
mfcc/ihtif.mfccmfcc/kallime.mfccmfcc/ala.mfccmfcc/mohamed.mfccmfcc/amine.mfccmfcc/nadi.mfcc….
14
Apprentissage avec l’algorithme Vitervi (HInit)
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
15
Apprentissage avec 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
16
Apprentissage avec l’algorithme Vitervi (HInit)• Le fichier résultat de cette commande est hinit/ihtif qui contient
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
~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>
17
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
18
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
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
#Fichier de configuration pour la re-estimation des #modèles de Markov par l’algorithme de ViterbiTARGETKIND = MFCC_E_D
19
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
20
Apprentissage avec l’algo de Baum Welch (HRest)• Le fichier résultat de cette commande est hrest/aaich qui contient :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
~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>
21
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
22
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 :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
$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 )| $chiffSENT-END)
23
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 :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
VERSION=1.0N=151 L=266 I=0 W=!NULL I=1 W=!NULL I=2 W=SENT-START I=3 W=sil I=4 W=ihtif . . . .
24
Reconnaissance• Dictionnaire du langage :
• Un fichier listes/dictionnaire.txt contient le dictionnaire de notre langage :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
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
25
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
26
Reconnaissance les deux premières chaînes sont reconnues entièrement :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
27
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
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
0 320000 sil -1088.285034320000 4620000 ihtif -9798.0156254620000 5030000 sil -1100.4816895030000 8090000 li -9363.4335948090000 8250000 sil -433.3799448250000 10290000 ciffr -4814.93896510290000 12160000 sil -4441.61132812160000 16880000 sitah -10271.93164116880000 17600000 sil -1854.31323217600000 19780000 wa -7324.11035219780000 20510000 sil -2059.96044920510000 27070000 sitoun -16285.65234427070000 27260000 sil -438.454254
28
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
29
Langage restreint et reconnaissance par phonème
• On utilise la grammaire suivante
• La reconnaissance donne ce qui suit :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
$chiff = ciffr | wahid ;$sil = sil ;$prenom = mohamed ;(SENT-START( $sil kallime $sil $prenom $sil )| $sil $chiff $silSENT-END)
30
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
31
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
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
$chiff = ciffr | wahid ;$sil = sil ;$prenom = mohamed ;(SENT-START( $sil kallime $sil $prenom $sil )| $sil $chiff $silSENT-END)
32
Langage restreint et reconnaissance par mot• La reconnaissance donne ce qui suit :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
33
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
34
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
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
$chiff = ciffr | wahid ;$sil = sil ;$prenom = mohamed ;(SENT-START( $sil kallime $sil $prenom $sil )| $sil $chiff $silSENT-END)
35
Langage complexe et reconnaissance par mot• La reconnaissance donne ce qui suit :
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
36
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
37
Synthèse des résultats trouvés :Reconnaissance de mots isolés Et Reconnaissance de mots connectés
Reconnaissance par phonème
Reconnaissance par mot
Mots isolé Mots connectés
Mots isolé Mots connectés
Vocabulaire grand (36mots)
~50% ~ 35% - 46 % ~100% ~60%
Vocabulaire petit
(4 à 10 mots)
~50% ~ 40 % ~100% ~80%
38
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
39
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
40
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
41
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.
Reconnaissance de mots isolés Et Reconnaissance de mots connectés
42
Merci