tp2_reconnaissance_vocale_embranchement_isn

publicité
ISN
Année 2015-2016
TP2 Nao
Reconnaissance vocale – Embranchement
1. Tout d'abord, nous allons programmer Nao pour qu'il reconnaisse son nom et qu'il nous réponde.
Le robot Nao a quatre micros sur sa tête (deux sur le dessus et deux derrières). Nao est programmé
pour
écouter
les
sons
à
des
moments
spécifiques (à la différence de nos oreilles qui
entendent tout le temps). De plus, nous avons
besoin de fournir à Nao une librairie de "mots"
qu'il s'attend à entendre (par exemple: oui, non,
comment t'appelles tu ?) et de programmer la
réaction de Nao quand il reconnait un "mot " (il
s’agit d’une chaîne de caractères, c’est-à-dire
une variable de type string). Nous allons donc aussi avoir besoin de gérer une condition.
a) Faire glisser la boite "Speech Reco." (dans "Audio/Voice") dans l'espace de travail et relier là à la
flèche de départ.
b) Examiner les paramètres de cette nouvelle boite (en cliquant sur la clé à molette).
Le paramètre "Word list" définit la librairie de chaînes de caractères reconnue par Nao. Ecrire nao,
le robot reconnaitra ce mot (soit son nom).
La barre "Confidence threshold" permet de contrôler comment le son doit être similaire pour que
Nao le reconnaisse. Si elle est à 30%, cela signifie que le robot doit seulement être sûr à 30% de
reconnaitre le mot. N’hésitez pas à modifier cette valeur et à en tester les effets sur le robot réel.
c) Créer deux boites "Say" et les connecter aux deux connecteurs en bas à droite de la boite "Speech
Recognition". La boite connectée au connecteur le plus en haut de la boite "Speech Recognition"
sera exécutée quand un mot de la librairie "Word list" sera entendu sinon ce sera la deuxième boite
"Say" qui sera exécutée. Vous pouvez retrouver les caractéristiques de chaque sortie en y
positionnant votre souris (ne pas cliquer mais attendre un peu)
Cette boite est exécutée si un « mot »
de la « Word list » est entendu
Cette boite est exécutée si un « mot »
de la « Word list » n’est pas reconnu
d) La boite "Speech Recognition" permet donc de construire un embranchement. Double cliquer sur
cette boite pour voir le code python. Quel mots clés permet de gérer les conditions ?
e) Modifier les textes des boites "Say" pour configurer ce que le robot dit (par exemple: "Bonjour,
c'est bien moi, Nao" et "Je n'ai pas bien compris").
f) Pour finir, connecter la boite "Speech Recognition" en reliant les deux
connecteurs en bas à droite au connecteur en bas à gauche. Ainsi le
robot cessera d'écouter des nouveaux mots après avoir entendu le
premier.
2. Nous allons maintenant tester ce programme sur le vrai robot s’il est disponible. Connecter le câble
du robot. Appuyer sur le bouton Play du logiciel Choregraphe. Vous allez entendre un son qui
indique que Nao vous écoute. Ces yeux vont aussi devenir bleus. S’il comprend les mots entendus,
ces yeux deviennent verts sinon ils deviennent rouges.
3. Dans cet exercice, nous allons programmer le robot pour qu'il entende différents mots et réponde
différemment après les avoir entendus.
a) Reprendre le programme précédent. Ajouter d’autres chaines de caractères à la "Word list" .
Effacer la boite « Say » reliée à la sortie du milieu (celle s’exécutant quand un « mot » est
reconnu).
b) Glisser déposer une boite « Switch Case » (chercher dans « Flow control ») et la connecter au
connecteur en haut à droite de la boite
"Speech Recognition". Changer les entrées
de la boite "Switch Case" par les chaînes de
caractères rentrés dans la librairie "Word
list". Attention, chaque chaîne de caractères
doit être exactement le même que celui de la librairie "Word list" et doit être écrit avec des
guillemets autour.
c) Ajouter des boites "Say" et modifier leurs messages. Une
boite "Say" connectée à la boite "Speech Recognition"
indiquera ce que le robot dit quand il n'a pas compris. Les
boites "Say" connectées à la boite
"Switch Case"
donneront les réponses du robot quand il entendra les
différents chaînes de caractères de la librairie "Word list".
d) Pour finir, connecter la boite "Speech Recognition" afin que le robot cesse d'écouter des
nouveaux mots après avoir entendu le premier. Essayer votre programme sur le robot.
4. Créer un programme permettant de contrôler le robot: quand vous dites à Nao de marcher, de
tourner à gauche, de s'asseoir..., Nao doit exécuter l'action que vous dites.
5. Avec Python.
a) Ouvrer un nouveau projet. Faire glisser la boite "Speech Recognition" dans l'espace de travail
et relier là à la flèche de départ. Modifier la librairie "Word list".
b) Créer une nouvelle boite Python (clic droit dans l’espace central) et choisir un nom et une
image appropriés.
c) Dans la section Inputs/Outputs/Parameters, cliquer sur le bouton central à la droite de "Inputs:
onStart" sur la première ligne. Modifier le type en string, cela signifie que la variable d'entrée
de la boite (onStart Input) sera une chaine de caractères (de type string). Nous pouvons ainsi
relier
la sortie du milieu de boite "Speech Recognition" avec notre nouvelle boite : le
connecteur ainsi que le fil sont bleus car les données transférées sont de type string.
d) Double cliquer sur la nouvelle boite pour éditer le code Python et ajouter les deux lignes
suivantes à la fonction (méthode) onInput_onStart.
ttsProxy = ALProxy("ALTextToSpeech")
ttsProxy.say("Bonjour, je suis " + p)
La première ligne va créer un objet qui nous donne accès aux capacités "TextToSpeech" du robot. Cet
objet est assigné à une variable nommée ttsProxy.
La deuxième ligne appelle la fonction (méthode) say qui va permettre au robot de dire la chaine de
caractères passée en argument de la fonction say.
e) Quel est le type de la variable p ? A quoi correspond cette variable ?
Expliquer : "Bonjour, je suis " + p.
Que fait notre nouvelle boite ?
f) Ajouter une boite "Say" qui dit "Je ne comprends pas" et connecter là à la boite "Speech
Recognition" sur la sortie en bas à droite. et connecter la boite "Speech Recognition" comme
précédemment afin que le robot cesse d'écouter des nouveaux mots après avoir entendu le
premier.
g) Tester votre programme sur le robot.
h) Pour finir, écrire un script Python pour jouer au robot au jeu de « Devine un nombre ».
Téléchargement