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 ».