ICN
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". Nous allons donc avoir besoin comment 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 mots 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. La mettre à 10% pour le moment. Nous y reviendrons bientôt.
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.
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. 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. Quand Nao écoute un humain parler, ces yeux
deviennent jaunes. Si il comprend les mots entendus, ces yeux clignotent vert sinon ils clignotent
rouge. Quand Nao arrête d'écouter, on entend un nouveau son.
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) Faire glisser la boite "Speech Recognition" (dans "Audio/Voice") dans l'espace de travail et
relier là à la flèche de départ.
b) Modifier le paramètre "Word list" : entrer différents mots séparés par des points virgule (par
exemple: nao;ca va;quel temps fait-il ?). Mettre la barre "Confidence threshold"à 10% pour le
moment.
c) Dans « Flow control » glisser déposer une boite « Switch Case » et la connecter au connecteur
en haut à droite de la boite "Speech
Recognition". Changer les entrées de la
boite "Switch Case" par les mots rentrés
dans la librairie "Word list". Attention,
chaque "mot" doit être exactement le même
que celui de la librairie "Word list" et doit être écrit avec des guillemets autour. Par exemple,
on écrira "ca va", les "mots" sont des variables de type string (chaine de caractères).
d) 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
"mots" de la librairie "Word list".
e) Pour finir, connecter la boite "Speech Recognition" afin que le robot cesse d'écouter des
nouveaux mots après avoir entendu le premier.
f) Essayer votre programme sur le robot. Essayer les différents "mots".
4. Vous avez peut-être remarqué que la reconnaissance vocale n'est pas parfaite. Le niveau de
reconnaissance peut être ajusté via la barre "Confidence threshold". Comme nous avons mis 10%,
cela veut dire que le robot doit seulement être sur à 10% de reconnaitre le mot.
a) Changer les valeurs de la barre "Confidence threshold" pour avoir une meilleure idée de à quoi
cela correspond et des effets sur la reconnaissance vocale.
b) Pour quelle valeur cela semble le mieux marcher ?
5. Créer une chaine d'interactions avec Nao où il vous demandera en premier si vous préférez voir un
film ou écouter de la musique. Si vous voulez voir un film, il vous proposera une liste de films. Si
vous voulez écouter de la musique, il vous proposera une liste de chansons. Finalement, suivant le
choix fait, Nao commentera votre choix.
6. 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.
7. Pour les plus avancés: nous allons créer une boite python qui fait réagir Nao suivant ce qu'il entend.
a) 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 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 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 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. Cependant, nous observons "Bonjour, je suis " + p en
argument. Cette addition s'appelle une concaténation, elle permet de regrouper des chaines de
caractères (de type string) en une seule chaine. Par exemple si p="nao", "Bonjour, je suis " + p
correspond à la chaine de caractères "Bonjour, je suis nao". En effet p est le paramètre de la fonction
onInput_onStart. Ce paramètre est la valeur arrivant par l'entrée de la boite (onStart Input), cette même
valeur que nous avons paramètre pour qu'elle soit de type string ! Dans notre cas, le paramètre p est
transmis par la boite "Speech Recognition" .
e) Ajouter une boite "Say" qui dit "Je ne comprends pas" et connecter là à la boite "Speech
Recognition" 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.
f) Tester votre programme sur le robot.
g) Modifier votre programme précédent afin que le robot Nao disent des choses différentes
suivant les mots entendus. On utilisera pour cela les mots clés python if, then, else introduits
lors du TP4 du robot virtuel.
h) Pour finir, écrire un script Python pour le programme du robot contrôlé par la voix (programme
de la question 6.).
Téléchargement

tp2_reconnaissance_vocale_embranchement_seconde