PAGE WIKI ETUDIANTS 2010-11 SERRURE VOCALE: Difference between revisions
Line 94: | Line 94: | ||
#: |
#: |
||
#* Septième étape, |
#* Septième étape, |
||
Cette partie a pour but d'expliquer l'algorithme de reconnaissance de la parole. Nous allons résumer le tp de biométrie [http://www-clips.imag.fr/geod/User/laurent.besacier/NEW-TPs/TP-Biometrie/] |
|||
Des compte-rendus sont disponibles en annexe. |
|||
# Reconnaissance des genres: |
|||
#: |
|||
#:Suite à l’analyse des TPs disponibles nous pouvons déclarer que pour une bonne reconnaissance de genre (la parole est de type male ou femelle) il faut : |
|||
#:* Normaliser les paramètres |
|||
#:* Détecter l’énergie |
|||
#: |
|||
#:Nous gardons ces caractéristiques pour l'élaboration du projet. |
|||
#: |
|||
# Reconnaissance du locuteur: |
|||
#: |
|||
#:Pour cette partie, nous disposons de 3 femmes et 9 hommes. Nous procédons de la manière suivante: |
|||
#:*Récupération des voix |
|||
#:*Création du modèle monde |
|||
#:*Création du modèle d'une personne |
|||
## Récupération des voix |
|||
##:On utilise l'application B-Play(lien à rajouter) sous Linux. On enregistre chaque locuteur lisant le même texte d'une durée d'une minute dans un fichier. |
|||
##: '''Commande d'enregistrement''' :'' commande '' |
|||
## Création du modèle monde |
|||
##: |
|||
##:On utilise les voix enregistrées pour créer le modèle monde. |
|||
##:''' Commande création modèle monde ''':'' commande '' |
|||
##Création du modèle d'une personne |
|||
##: Pour créer le modèle d'une personne en particulier, nous combinons (phase d'adaptation) la voix au modèle monde pour extraire le modèle de la personne. |
|||
##: '''Commande apprentissage''' :'' commande '' |
|||
== Interface Graphique == |
== Interface Graphique == |
Revision as of 10:25, 3 March 2011
Composition du groupe gache électrique // serrure vocale :
Chefs de projet :
- Florian FAUVARQUE
- Marc VOLAINE
Membres du groupe "IHM" :
- Frédéric DUPIN
- Jonathan HARTNAGEL
- Cédric MERIADEC
- Clément RIGNAULT
Membres du groupe "ELECTRIQUE" :
- Frédéric COUDURIER
- Anthony DAMOTTE
Membres du groupe "ALGORITHMIQUE" :
- Maxime CONQ
- Raphaëlle DIDIER
- Floriane PIHUIT
Gâche électronique:
Cette partie a pour but d'expliquer et d'illustrer le fonctionnement de la gâche électronique. Des comptes-rendus et documentations supplémentaires sont disponibles en annexe.
- La gâche électrique:
- La gâche électrique provient d'un projet réalisé par les étudiants RICM5 promotion 2010 intitulé : TouchKey.
-
- Gache électrique réversible gauche ou droite.
- Dimension du corps: 160x25x30 en aluminium inoxidable donc garde le même aspect trés longtemps
- Fonctionne en 10VDC avec une tolérance importante de 20% soit entre 8 volts et 12 volts permettant toujours d'être très adaptable a de nombreuses installations.
- Température de fonctionnement: de - 15 degrée centigrade à + 50 degrée centigrade
- Le circuit électronique:
- Le circuit électronique provient également du projet TouchKey.
-
- Contenu : 2 résistances (820 et 220 Ohms), un transistor NPN et l'adaptateur alimentation.
- Schéma : Schéma électronique
- Alimentation : est fourni avec le circuit un transformateur courant alternatif 220 - continu 9V.
- La conversion numérique/analogique (CAN)
-
- Technologies utilisées : JAVA, USB, Port série
- Sources du code :
-
Gachette electrique - Cahier des charges / Schéma du montage
Analyse de la parole:
Le but du projet est de permettre à certains locuteurs préalablement enregistrés dans le système d'ouvrir une porte simplement par la parole. C'est ici qu'entre en jeu la phase d'analyse. Avant de commencer le projet, nous avons étudié les TPs de biométrie de l'année dernière ([1]) ainsi que plusieurs compte-rendus de précédents étudiants que l'on nous a fournis. Cela nous fournit ainsi toutes les étapes ainsi que la marche à suivre en ce qui concerne la reconnaissance de locuteurs. Enfin, nous avons vu dans les comptes rendus de TPs que les résultats sont meilleurs lorsque l'on normalise et que l'on détecte l'énergie des signaux, nous ferons de même pour notre projet.
Voici les différentes étapes de la reconnaissance d'un locuteur :
- Tout d'abord, nous récupérons un ensemble de voix qui nous servira à créer un modèle du monde. Nous avons utilisé les voix des membres du projet (ce qui nous donne 12 voix : 9 d'hommes et 3 de femmes). Pour cela, nous utilisons un logiciel en ligne de commande sous linux qui se nomme bplay ([2]), et la commande pour enregistrer une voix : brec -r -b 16 -s 16000 -t 60 locuteur.raw : "-b 16" pour préciser le nombre de bits, "-s 16000" pour préciser la fréquence (16kHz) et "-t 60" pour enregistrer 60 secondes de signal. A remarquer également que le fichier enregistré a une extension en .raw ; nous avons choisi cela car c'est le même format que pour les TPs. Nous pouvons également écouter le signal enregistré avec la commande : bplay -b 16 -s 16000 locuteur.raw
- Maintenant que nous avons enregistré ces 12 voix (extension .raw), nous allons traiter ces signaux.
- Première étape, générer les vecteurs de paramètres pour chacun des signaux.
- Pour cela, nous utilisons un outil fourni dans le TP : spro ([3]) qui propose une commande sfbcep -F PCM16 -f16000 -p 19 -e -D -A locuteur.raw locuteur.prm qui va créer un vecteur de paramètres pour le fichier locuteur.raw. Comme nous avons 12 signaux, donc 12 vecteurs à générer, nous allons créer un script csh. Pour cela, nous plaçons tout d'abord dans un fichier all.lst la liste des noms des signaux (noms des locuteurs).
- Et nous écrivons notre script :
- foreach i (`cat all.lst`)
- sfbcep -F PCM16 -f16000 -p 19 -e -D -A $i.raw $i.prm
- end
- Deuxième étape, normaliser les paramètres de chacun des signaux
- Nous utilisons une nouvelle fois un outil fourni dans le TP : "LIA_RAL" ([4]). Et nous utilisons la commande NormFeat :
- ./LIA_RAL/LIA_SpkDet/NormFeat/NormFeat.exe --config ./cfg/NormFeat_energy.cfg --inputFeatureFilename ./lst/all.lst --debug false --verbose true
- Cette commande crée les fichiers locuteur.enr.prm dans le dossier prm
- Nous utilisons une nouvelle fois un outil fourni dans le TP : "LIA_RAL" ([4]). Et nous utilisons la commande NormFeat :
- Troisième étape, détecter l'énergie de chacun des signaux
- Pour détecter cette énergie, nous allons utiliser la commande EnergyDetector :
- ./LIA_RAL/LIA_SpkDet/EnergyDetector/EnergyDetector.exe --config ./cfg/EnergyDetector.cfg --inputFeatureFilename ./lst/all.lst --verbose true --debug false
- Cette commande crée les fichiers locuteur.lbl dans le dossier lbl (labels)
- Pour détecter cette énergie, nous allons utiliser la commande EnergyDetector :
- Quatrième étape, re-normaliser les paramètres
- On utilise une nouvelle fois la commande NormFeat, mais avec un fichier de configuration différent :
- ./LIA_RAL/LIA_SpkDet/NormFeat/NormFeat.exe --config ./cfg/NormFeat.cfg --inputFeatureFilename ./lst/all.lst
- Cette commande crée les fichiers locuteur.norm.prm dans le dossier prm
- On utilise une nouvelle fois la commande NormFeat, mais avec un fichier de configuration différent :
- Cinquième étape, apprendre le modèle du monde
- Nous créons ici ce que l'on appelle le modèle du monde, c'est à dire que l'on fait une sorte de moyenne des 12 voix que nous avons préalablement enregistrées. Nous utilisons pour cela la commande TrainWorld qui se décompose en deux commandes :
- ./LIA_RAL/LIA_SpkDet/TrainWorld/TrainWorld.exe --config ./cfg/TrainWorldInit.cfg --inputStreamList ./lst/world.lst --weightStreamList ./lst/world.weight --outputWorldFilename world_init --debug false --verbose true
- ./LIA_RAL/LIA_SpkDet/TrainWorld/TrainWorld.exe --config ./cfg/TrainWorldFinal.cfg --inputStreamList ./lst/world.lst --weightStreamList ./lst/world.weight --outputWorldFilename world --inputWorldFilename world_init --debug false --verbose true
- Cela crée le fichier world.gmm dans le dossier gmm
- Nous créons ici ce que l'on appelle le modèle du monde, c'est à dire que l'on fait une sorte de moyenne des 12 voix que nous avons préalablement enregistrées. Nous utilisons pour cela la commande TrainWorld qui se décompose en deux commandes :
- Sixième étape, créer les modèles de locuteurs
- Tout d'abord, nous choisissons les locuteurs qui seront acceptés par le système. Nous créons un fichier locuteurs.ndx dans le dossier ndx qui contiendra les noms de ces locuteurs. Nous créons alors pour chacun d'eux un modèle de locuteur en combinant le modèle du monde avec un fichier audio (.raw) de leur voix (le même que celui enregistré pour créer le modèle du monde). Nous utilisons pour cela la commande TrainTarget :
- ./LIA_RAL/LIA_SpkDet/TrainTarget/TrainTarget.exe --config ./cfg/target.cfg --targetIdList ./ndx/locuteurs.ndx --inputWorldFilename world --debug false --verbose true
- Tout d'abord, nous choisissons les locuteurs qui seront acceptés par le système. Nous créons un fichier locuteurs.ndx dans le dossier ndx qui contiendra les noms de ces locuteurs. Nous créons alors pour chacun d'eux un modèle de locuteur en combinant le modèle du monde avec un fichier audio (.raw) de leur voix (le même que celui enregistré pour créer le modèle du monde). Nous utilisons pour cela la commande TrainTarget :
- Septième étape,
Interface Graphique
Consultez la page dédiée ci dessous
Interface graphique du client - Cahier des charges / Esquisses de l'IHM