Marie LOPEZ, Michaël GRILLET et Ahmed EBETY



Documents pareils
FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Serveur FTP. 20 décembre. Windows Server 2008R2

Alfresco et TYPO3 Présenté par Yannick Pavard dans le cadre des rencontres WebEducation Février 2008

contact@nqicorp.com - Web :

BIND : installer un serveur DNS

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

NetCrunch 6. Superviser

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

TAGREROUT Seyf Allah TMRIM

FileMaker Server 14. Aide FileMaker Server

Annexe : La Programmation Informatique

Les modules SI5 et PPE2

Microsoft Application Center Test

API HTTP DOCUMENTATION TECHNIQUE PLATEFORME SAAS D'ENVOI DE SMS. Version Mise à jour : 3 juillet 2015

Travail collaboratif à distance

NOUVEAUTES de Microsoft Dynamics CRM 2011 REF FR 80342A

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Un serveur web, difficile?

Séquence de découverte de SparkAngels Logiciel d entraide numérique

Petite définition : Présentation :

Spécifications de l'offre Surveillance d'infrastructure à distance

Installation et prise en main

Copyright Arsys Internet E.U.R.L. Arsys Backup Online. Guide de l utilisateur

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Cours CCNA 1. Exercices

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Projet de Master en Informatique: Web WriteIt!

EIP 2012 Projet Livepad. Documentation technique 1.5

OwnCloud. Définition 1 / 10. Date d'édition 03/09/2013 Public concerné Étudiants, Personnels Version du logiciel

Assistance à distance sous Windows

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

Annexe 5. Kaspersky Security For SharePoint Servers. Consulting Team

Plan de notre intervention 1. Pourquoi le test de charge? 2. Les différents types de tests de charge 1.1. Le test de performance 1.2.

Base de Connaissances

Afin d'éviter un message d'erreur au démarrage du service Apache du type :

Avantic Software Présentation de solutions GED pour mobiles (Gestion Electronique de Documents)

Gestion des documents avec ALFRESCO

À propos de votre liseuse... 5

Projet de Veille Technologique

ZABBIX est distribué sous licence GNU General Public License Version 2 (GPL v.2).

Manuel d Administration

Cisco Certified Network Associate

Service de certificat

Installation des outils OCS et GLPI

BIRT (Business Intelligence and Reporting Tools)

L annuaire et le Service DNS

GUIDE DE L UTILISATEUR Recoveo Récupérateur de données

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

Tutoriel Drupal version 7 :

MANUEL D INSTALLATION DE WATCHDOC 2011 (EVALUATION)

Service de dématérialisation du BOAMP

Gestion collaborative de documents

BTS SIO Dossier BTS. PURCHLA Romain

Le service FTP. M.BOUABID, Page 1 sur 5

Créer du contenu en ligne avec WordPress

Manuel Utilisateur de l'installation du connecteur Pronote à l'ent

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Tutorial Terminal Server sous

TD séance n 2c Mise à jour des Systèmes

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Module BD et sites WEB

Prototypage électronique

CTIconnect PRO. Guide Rapide

Utilisation de KoXo Computers V2.1

Retour d'expérience avec : OCS Inventory & GLP

«ASSISTANT SECURITE RESEAU ET HELP DESK»

PFE Télécommunications. Pré-rapport à l'issue des 6 premières semaines de stage. Page 1 sur 5 1 %

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Application de lecture de carte SESAM-Vitale Jeebop

Logiciel de conférence Bridgit Version 4.6

CONTACT EXPRESS 2011 ASPIRATEUR D S

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Quick Start Installation de MDweb version 2.3

Cloud public d Ikoula Documentation de prise en main 2.0

PPE GESTION PARC INFORMATIQUE

Les messages d erreur d'applidis Client

Plateforme de capture et d analyse de sites Web AspirWeb

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

Guide d utilisation. Version 1.1

MASTER LPL : LANGUE ET INFORMATIQUE (P)

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

contact@nqicorp.com - Web :

Edutab. gestion centralisée de tablettes Android

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

CONFIGURATION IP. HESTIA FRANCE S.A.S 2, rue du Zécart TEMPLEUVE +33 (0) (0) Site internet:

Encadré par : Michel SIMATIC

PRE-REQUIS A L INSTALLATION...

Programmation Web. Introduction

Tutoriel d'introduction à TOR. v 1.0

Espace de travail collaboratif

Joomla! Création et administration d'un site web - Version numérique

Transcription:

CERI Avignon : Projet 5 (M1) Nabaztag Année universitaire 2011/2012 Marie LOPEZ, Michaël GRILLET et Ahmed EBETY

Sommaire 1. Description du projet...3 1.1 Description du projet...3 1.2 Objectifs...3 2. L existant...3 2.1 Histoire du Nabaztag...3 2.2 Description du Nabaztag...3 2.3 Description des fonctionnalités...4 2.4 Description des spécifications techniques...4 2.5 Communauté Nabaztag...4 3. Analyse...4 3.1 Choix d un serveur...4 3.2 Analyse des applications...5 3.3 Traitement de la parole...6 3.3.1 Reconnaissance vocale...6 3.3.2 Synthèse Vocale...8 3.3.3 Reconnaissance automatique du locuteur...9 4. Réalisation...11 4.1 Serveur...11 4.1.1 Communications Nabaztag/Serveur...11 4.1.2 OpenJabNab...14 4.1.3 Installation...15 4.2 Traitement de la parole...16 4.2.1 Reconnaissance vocale...16 4.2.2 Synthèse vocale...17 4.2.3 Reconnaissance automatique du locuteur...17 4.3 Planning prévisionnel...17

1. Description du projet 1.1 Description du projet Dans le cadre de notre première année de Master en informatique nous devons réaliser un projet en groupe qui se déroule sur deux semestres, le premier étant consacré à l étude du sujet et à la rédaction du cahier des charges et le second à l élaboration technique de celui-ci. Notre projet portant sur le Nabaztag nous a été proposé par Corinne Fredouille et c est lors de nombreux rendez-vous avec celle-ci que nous avons pu progresser dans le bon déroulement du projet. Les nombreux comptes-rendus des réunions que nous avons effectué nous ont aussi permis de toujours repousser nos objectifs. 1.2 Objectifs L'objectif de ce projet est l'étude et l'analyse des nombreuses fonctionnalités du Nabaztag afin de le faire "revivre" car les serveurs officiels qui permettaient jusqu'alors de le faire interagir avec l Internet ont été arrêté, depuis il ne dispose plus que de fonctionnalités très réduites. Notre projet consiste à étudier les diverses capacités et possibilités que peut offrir ce lapin intelligent, explorer les sources et les solutions alternatives mises à disposition par les utilisateurs. Enfin, pouvoir intégrer un système de reconnaissance du locuteur avancé. 2. L existant 2.1 Histoire du Nabaztag Le Nabaztag a été créé en 2004 par Olivier Mével et Rafi Haladjian (qui est arménien, Nabaztag voulant dire lapin en arménien) pour la société Violet. En 2009, cette société, qui a été placée en liquidation judiciaire, a été rachetée par la société Mindscape. Ne supportant plus les coûts trop élevés de la maintenance des serveurs, la société Mindscape a décidé d arrêter tous les serveurs du Nabaztag en juillet 2011 et de laisser aux utilisateurs les sources pour qu ils puissent faire revivre le lapin d'eux-mêmes. 2.2 Description du Nabaztag Le Nabaztag dit «lapin intelligent»est un objet électronique Wi-Fi, représenté sous les formes épurées d'un lapin, qui communique avec son utilisateur et peut lui fournir de multiple services. Pour ce projet nous disposons d un Nabaztag::tag, c est-à-dire la deuxième version du Nabaztag, qui possède plus de fonctionnalités que la première version ainsi qu un micro qui lui permet de capter les sons ambiants. Le principe du Nabaztag est de se connecter via Internet à un serveur distant pour prendre les informations dont il a besoin pour interagir avec l utilisateur comme lui donner la météo du jour ou lui faire écouter la radio.

2.3 Description des fonctionnalités Ce lapin est capable de lire des flux RSS (météo, trafic routier, qualité de l air, ), de notifier des courriels reçu ou encore de diffuser la radio (WebRadio). Il peut grâce à sa puce RFID lire des livres pour enfant et même reconnaître des objets du quotidien grâce à des vignettes RFID. Il est aussi capable d agir seul comme par exemple lorsqu il fait son tai chi des oreilles ou lorsqu il parle pour donner son humeur du moment. 2.4 Description des spécifications techniques Le Nabaztag possédait plusieurs applications qui étaient sous licence mais après la faillite de l entreprise, les sources de ces applications ont été mises à disposition de la communauté sur Internet sous licence Opensource. Ils ont été écrit dans plusieurs langages, on peut citer comme exemple: C++, Perl, XML, C, Java,... 2.5 Communauté Nabaztag La communauté Nabaztag est née sur Internet, principalement présente sur le forum http://nabaztag.forumactif.fr/, elle regroupe, tel un culte, les utilisateurs du Nabaztag. La communauté a, dès les premières versions du lapin, cherché à faire acquérir au lapin plus d autonomie et de fonctionnalités. Avec l annonce de l arrêt des serveurs officiels il était évident que la communauté allait réagir, c est ainsi que plusieurs serveurs alternatifs ont vu le jour, portés par une communauté très attachée à son lapin. 3. Analyse 3.1 Choix d un serveur Les sources du Nabaztag ont été mises à disposition des utilisateurs sauf certaines sources qui étaient sous contrat avec d autres entreprises (comme la reconnaissance de la parole). Ces sources, qui ont été mises à disposition des utilisateurs, ne sont en fait pas profitables car elles proviennent d une version antérieure à la dernière version utilisée par les utilisateurs (ce qui veut dire que les URLs et les APIs ne sont pas du tout à jour) et sont en plus rédigées d une manière qualifiée de brouillonne par les utilisateurs de la communauté ce qui rend difficile leur compréhension. La communauté a créé des serveurs alternatifs bien avant l'annonce de l'arrêt des serveurs offiviels. Le premier, OpenNab a été créé en 2007 par un utilisateur alors que les serveurs officiels fonctionnaient encore, il permettait de se positionner entre le lapin et le serveur officiel et ainsi d'interagir pour plus de possibilités de fonctionnement entres les deux.

Mais en 2008, le protocole XMPP a été mis en place sur les serveurs officiels et le serveur OpenNab n est pas adapté à ce type de communication en temps réel, nous n avons donc pas choisi de travailler sur ce serveur. Apprenant le prochain arrêt des serveurs officiels, des utilisateurs ont alors commencé à travailler sur d autres solutions alternatives. Dans la communauté du Nabaztag deux solutions de serveur prédominent actuellement : OpenJabNab et NabIzDead. Nous avons choisi d utiliser OpenJabNab car il est une alternative qui se rapproche le plus du serveur officiel. Le second NabIzDead est un serveur plus léger, mais qui à une philosophie très différente du serveur officiel et qui offre pour l instant moins de fonctionnalités qu OpenJabNab. 3.2 Analyse des applications Nous pouvons distinguer trois grandes applications : Le «firmware» du lapin, est le logiciel de plus bas niveau. Il doit être compilé en utilisant les outils de développement AVR-IAR, et il ne peut être mis à jour sur le lapin qu en utilisant la sonde de programmation adéquat. Le langage utilisé pour le firmware est le C. Le firmware contient: Tous les drivers de chaque élément interne du lapin (wifi, usb, led ) Une sorte d OS permettant la gestion du multitâche, l interaction entre les différents drivers. Une machine virtuelle exécutant le code Metal compilé Le «bc-boot» compilé présent sous forme de tableau Les différentes contraintes sur le firmware, notamment l obligation de le mettre à jour de manière physique sur le lapin ne permettent pas d envisager de modification sur celui-ci. Le bytecode bc-boot permet : Vérifie au lancement du lapin si l utilisateur appuie sur le bouton (sur la tête), si c est le cas, il place le lapin en mode serveur web et en mode «maître» wi-fi. Il sera alors possible de se connecter depuis un PC sur le lapin pour modifier les paramètres En mode serveur web, il permet la configuration des paramètres réseaux ainsi que l adresse du serveur sur lequel devra se connecter le lapin (htttp://r.nabaztag.fr/vl par défaut) En mode standard, il se connecte sur le serveur qui gère le lapin, et charge le ByteCode Nominal en appelant le fichier bc.jsp. Une fois téléchargé, le nominal est exécuté.

Le ByteCode bc-nominal est donc celui qui est chargé en dernier par le lapin, il permet : De charger un nouveau logiciel sur le lapin à chaque fois qu il se connecte sur un serveur De gérer entièrement le lapin : réseau, led, oreilles De gérer les actions sur le lapin : bouton, oreilles, tag RFID De lire les MP3 directement depuis le lapin Les deux autres applications (bytecode bc-boot et ByteCode bc-nominal) sont écrites avec le langage metal, un Méta langage crée par Sylvain Huet (co-fondateur de Violet) en 2003 (donc avant son arrivé chez Violet). Il existe un petit document qui décrit la grammaire et les principes du langage fourni avec les sources. Pour utiliser ce langage, et donc créer un binaire à partir des sources nominal.mtl, il faut utiliser le compilateur fourni dans les sources, il existe deux compilateurs correspondant aux deux systèmes d exploitation Windows et Linux. 3.3 Traitement de la parole 3.3.1 Reconnaissance vocale 3.3.1.1 Introduction La reconnaissance vocale est une technique informatique qui permet d'analyser la parole captée au moyen d'un microphone pour la transcrire sous la forme d'un texte exploitable par une machine. Une phrase enregistrée et numérisée est donnée au programme de reconnaissance vocale. Celui-ci catégorise chaque phonème qu il distingue selon un modèle de probabilités statistiques. Une fois catégorisés, les phonèmes sont interprétés pour former des mots encore une fois selon un modèle statistique. La reconnaissance de la parole, ainsi que la synthèse de la parole, l'identification du locuteur ou la vérification du locuteur, font partie des techniques de traitement de la parole. Ces techniques permettent notamment de réaliser des interfaces vocales c'est-àdire des interfaces homme-machine (IHM) où une partie de l'interaction se fait à la voix. Le développement d'un système de reconnaissance vocale nous a dirigé vers l'utilisation de l'api javax.speech (JSAPI) écrite en Java, dédiée à la reconnaissance ainsi qu'à la synthèse vocale. JSAPI définit un modèle à états et un ensemble de règles linguistiques compilées en grammaires au format JSGF (Java Speech API Grammar Format). En utilisant JSAPI, il fallait utiliser un moteur de reconnaissance vocale qui n'était pas fournit. Notre choix s'est donc porté sur Sphinx-4 car c'est une librairie portable, régulièrement mise à jour, autorisant une configuration relativement poussée et bénéficie d'une grande communauté.

3.3.1.2 Moteur de reconnaissance Sphinx4 Notre choix s'est porté sur Sphinx-4. Ceci répond à un souci d'utilisation d'une solution en partie libre de droits, portable, régulièrement mise à jour et autorisant une configuration relativement poussée. Sphinx-4 est un système de reconnaissance vocale écrit dans le langage de programmation Java. Il a été créé conjointement par le groupe Sphinx à l université Carnegie Mellon, les laboratoires Sun Microsystems et Hewlett-Packard. Les buts de Sphinx sont d avoir une reconnaissance vocale hautement flexible, d égaler les autres produits commerciaux et de mettre en collaboration les centres de recherche de diverses universités, des laboratoires Sun, des laboratoires HP et du MIT. Sphinx-4 s'articule autour de 3 modules : Front-End Le Front-End découpe la voix enregistrée en différentes parties et les prépare pour le décodeur. Base de connaissances La base de connaissance est l information qu utilise le décodeur pour déterminer les mots et les phrases prononcés. La base de connaissance est composée : D un dictionnaire. Classification des mots. Prononciation des mots (un mot peut avoir plusieurs prononciations). Prononciation représentée comme des sons ou dans d autres unités. Peu varier en taille, de quelques mots à plusieurs centaines de milliers. Des modèles acoustiques.

D un modèle de langage. Décrit ce qui peut être dit dans un contexte bien spécial. Aide à rétrécir l espace de recherche. Grammaire Expressions qui doivent être reconnus Décodeur Le décodeur est le cœur de Sphinx 4. C est lui qui traite les informations reçues depuis le Front-End, les analyse et les compare avec la base de connaissances pour donner un résultat à l application. Nous allons utiliser le dictionnaire, les modèles acoustiques en français ainsi que le modèle de langage créés par le LIUM (Laboratoire d'informatique de l'université du Maine). Quant à la grammaire, Sphinx-4 utilise Java Speech API Grammar Format (JSGF), un format de grammaire issu de l'api javax.speech (JSAPI). Cette grammaire sera à déterminer selon les mots à reconnaître. 3.3.2 Synthèse Vocale 3.3.2.1 Introduction La synthèse vocale est une technique informatique qui permet de créer de la parole artificielle à partir d'un texte. Pour obtenir ce résultat, elle s'appuie à la fois sur des techniques de traitement linguistique, notamment pour transformer le texte orthographique en une version phonétique prononçable sans ambiguïté, et sur des techniques de traitement du signal pour transformer cette version phonétique en son numérisé écoutable. Il s'agit, comme la reconnaissance vocale, d'une technologie permettant de construire des interfaces vocales. 3.3.2.2 Plugin Text To Speech présent dans OpenJabNab Pour la synthèse vocale, plusieurs solutions s'offrent à nous. La première solution est un plugin déjà présent sur le serveur OpenJabNab. Ce plugin permet l'envoi d'une requête HTTP vers le site de démonstration de synthèse vocale d'acapela avec le texte qui doit être transformer en parole. Une fois la synthèse effectuée sur le site d'acapela, on récupère le son généré au format MP3. Il existe un inconvénient, il peut arriver que cette synthèse vocale hébergée par Acapela soit indisponible, par exemple si le serveur qui héberge cette fonctionnalité est inaccessible pour cause de maintenance ou autres. Une deuxième solution serait d'utiliser un système de synthèse vocale qui serait hébergé sur notre serveur en local, ce qui éviterait les problèmes d'utilisation.

Il existe un synthétiseur vocal nommé MBROLA, développé par le laboratoire de Théorie des Circuits et Traitement du Signal (TCTS) de la Faculté Polytechnique de Mons (Belgique). Ce synthétiseur vocal n'est pas un synthétiseur «text to speech», car il n'accepte pas de texte brut en entrée mais une représentation de phonème avec des informations prosodiques. Il serait donc utilisé avec un système de phonétisation de texte tel que LIA_PHON ou autres systèmes. Le choix du système de synthèse vocale sera pris après avoir fait de plus amples recherches sur la deuxième solution, à savoir le fonctionnement et l'intégration de ce système au serveur OpenJabNab. 3.3.3 Reconnaissance automatique du locuteur 3.3.3.1 Introduction La reconnaissance du locuteur c est le processus de reconnaissance automatique de la personne qui communique à partir de caractéristiques de l individu qui sont contenues dans son signal vocal. Elle permet l utilisation de la voix du locuteur pour la vérification de son identité ou l'identification de ce locuteur. La vérification du locuteur consiste à déterminer si un locuteur est bien celui qu il prétend être. Il s agit donc de trancher entre les deux hypothèses : soit le locuteur est bien le locuteur autorisé, soit nous avons affaire à un imposteur qui cherche à se faire passer pour un locuteur autorisé. En pratique, la réponse est binaire : acceptation ou rejet. L'identification du locuteur consiste à déterminer l'identité d'un individu parmi une population de personnes connues. A partir d'un échantillon de voix enregistré, il faut déterminer quel locuteur de base à parler. Deux modes sont distingués : le fonctionnement en milieu ouvert et fermé. En milieu fermé le locuteur est supposé faire partie de la population connue tandis qu'en milieu ouvert, le locuteur ne peut pas être connu du système. La sortie du système correspond à l identité du locuteur de la base de référence qui est la plus "proche" du signal de parole inconnu. Dans ce projet, nous allons nous penché seulement sur l'identification du locuteur. 3.3.3.2 LIA_RAL LIA_RAL comporte différents outils qui utilisent la librairie ALIZE. Les outils proposés par LIA_RAL proposent une reconnaissance du locuteur par la méthode GMM-UBM (Gaussian Mixture Model Universal Background Model).

Les méthodes du GMM-UBM : Extraction des caractéristiques La 1er étape consiste à extraire des paramètres auditifs d'un fichier audio récupéré en entrée. Suppression des silences Cette étape consiste en la détection de la parole et de silence. Normalisation Permet de normaliser les données pour que les calculs soient plus pertinents. Génération d'un modèle monde La génération d'un modèle monde, est une somme de plusieurs modèles permettant de représenter le modèle général d'apprentissage. Génération d'un modèle de personne à partir du modèle monde Pour chaque "personne" pour qui on veut effectuer des tests, il faut extraire un modèle propre à partir du modèle monde, et d'un ou plusieurs fichiers de paramètres audio correspondant à un discours cette personne. Calcul des rapport de vraisemblances Permet de calculer, à partir d'un modèle de locuteur connu de la base et du modèle monde, la probabilité de ressemblance des caractéristiques du fichier audio d'entrée avec ce modèle de locuteur. Ces différentes étapes permettront au Nabaztag d'identifié le locuteur qui lui parle, une fois l'application intégrée au serveur.

4. Réalisation Notre réalisation sera basée sur l'étude que nous avons fais du projet. La réalisation du projet se fera par la mise en place d'un serveur alternatif et d'applications de reconnaissance vocale et du locuteur. 4.1 Serveur Le Nabaztag a donc besoin d un serveur auquel se connecter pour pouvoir prendre des informations sur Internet (comme la météo par exemple) et pour pouvoir accéder aux programmes qui le font interagir avec son utilisateur (qui se trouvent sur le serveur). 4.1.1 Communications Nabaztag/Serveur 4.1.1.1 Protocole XMPP Le protocole XMPP (Extensible Messaggin and Presence Protocole) est un protocole TCP/IP d'échange de données en temps réel au format XML, utilisé entre autre par Jabber, Google Talk et Facebook. Ce protocole a permis à la société propriétaire du Nabaztag de faire évoluer ses serveurs pour faire face nombre de connexions qui était très important, la société Violet a choisi de jabberisé le lapin, c est-à-dire de faire dialoguer le lapin et le serveur en XML grâce à un serveur Jabber (protocole XMPP), ce qui a permis aux utilisateurs de passer d un temps de réponse de 1 à 2 minutes à quelques secondes. 4.1.1.2 Les différents types de message échangés Le Nabaztag et le serveur communiquent par message XML du type : <message from='adresse_de_la_platform@adresse_serveur_xmpp' to='id_du_ Nabaztag@adresse_serveur_XMPP /sources' id='id_serveur-numéro_du_message'> <packet xmlns='violet:packet' format='1.0' ttl='300'> fwqaaah////+bayfaf8= </packet> </message> Où le message envoyé est codé en base64 : fwqaaah////+bayfaf8= Pour mieux comprendre l objectif de ce message il faut le convertir en hexadécimale, ce qui donne : 7F040000087FFFFFFE04060501FF

On peut ainsi visualiser les différents champs du message : 7F 04 00 00 04 YY XX XX XX XX FF 7F et FF : tête et queue du paquet 04 : type du bloc 00 00 04 : taille des données YY : en-tête des données 7F FF FF FE pour les Ambiant Blocks et 00 ppour les Message Blocks XX XX XX XX : données Type du bloc 04 Ambient block : données prédéfinies 0a Message block : données qui peuvent nécessiter une url 0b Sleep Block 09 Reboot Block Taille des données 4 octets Les données Ambient block sont sous la forme AA BB répéter n fois. Par exemple si nous savons que le type de bloc est Ambient block et que l'on voit dans les données : 04 0b 05 07 (AA BB AA BB) Cela veut dire que l on donne au lapin un position d oreille gauche de 0b et d oreille droite de 07. Voici le tableau des différents Ambient block (AA et BB) possible sur le lapin : Données : Ambient block AA 00 01 02 03 04 05 06 07 08 0b 0e Disable Météo Cours de la bourse Trafic Oreille gauch e Oreill e droite Notific ation de courriel Qualit é de l'air Cligno temen t du nez Sleep / wake Taïchi

Données : Ambiant block BB Météo 00 01 02 03 04 05 Cours de la bourse Soleil Nuageux Brouillard Pluie Neige Vent 00 01 02 03 04 05 06 HIGHDO WN MEDIUM DOWN LITTLED OWN STABL E LITTLE UP MEDI UMUP Trafic 00 01 02 03 04 05 06 TRAFFIC _100 TRAFFI C_75 TRAFFIC _50 TRAFFI C_25 TRAFFI C_12 Oreille gauche Valeur entre 0 et 16 à convertir en hexadécimal Oreille droite Notification de courriel Valeur entre 0 et 16 à convertir en hexadécimal 00 01 02 03 Pas de courriel un courriel Qualité de l'air 00 05 08 Clignotement du nez Taïchi deux courriels Bon Moyen Mauvais 00 01 02 Disable Clignote Double clignote trois courriels ou plus TRAF FIC_8 HIGHUP TRAFFI C_4 Valeur entre 0 et 255 (255 étant une fréquence élevée de Taïchi) Les Message Blocks ne peuvent pas s'expliquer de la même manière. En ce qui les concerne, il faut leur appliquer un algorithme (en partant de la partie «données» de notre message hexadécimal) de la forme : C[i] = (B[i] - 0x2F) * (1 + 2 * C[i-1]) Où C[-1] = 35 et C est le tableau d'octets crypté et B le décrypté. Par exemple, si on prend la partie «données» et qu'elle est comme ceci : 00fafe8f9763831fa9c2609ee2b5c51401473d143f5f1d09e15979797932e27fc2289c7205df e1641002dc8969b23d74e639807fc2 On peut grâce à l'algorithme voir que le message est en fait : «MU http://192.168.100.2:2222/mp3/surprise/fr/295.mp3»

Il y a différent type de Message block : Données : Message block CH <url> CL 0xAABBCCDD Exécute la chorégraphie située à l'url passée en argument Défini la couleur de la LED AA (de 00 à 04) avec la couleur RVB passée en BBCCDD (en hexa) PL 0x Défini la palette de couleur utilisée, où X est compris en 0 et 7 MC <url> ou MU <url> MW ST <url> ou SP <url> Position des led du Nabaztag : Lit le MP3 situé à l'url passé en argument Demande au lapin d'attendre que les commandes précédentes soient terminées avant d'exécuter la suite Lit le flot du contenu passé en argument (pour les radios notamment) Le Sleep block permet de mettre en veille et d'allumer le Nabaztag Données : Sleep block 7f0b00000101ff 7f0b00000100ff endort le lapin réveille le lapin 4.1.2 OpenJabNab Le serveur OpenJabNab est le serveur, créé par la communauté, que nous avons choisi d'utiliser. Il est divisé en deux parties : une partie dite Http-wrapper et une partie dite server.

4.1.2.1 Partie Http-Wrapper La partie Http-wrapper possède notamment des fichiers écrient en PHP. Cette partie sert d interface web entre le lapin et l utilisateur. Ainsi l utilisateur peut, grâce à son ordinateur, accéder à la configuration de son lapin (plugins, ztamp s, nom du lapin,.). 4.1.2.2 Partie server Les fichiers de la partie server sont écrit en C++, ils permettent de traiter l authentification du lapin, les plugins, les conversations lapin-machine et la concordance avec la partie Http-wrapper. Le lapin et le serveur communiquent en XML mais sur le serveur tout est traité dans des fichiers en C++. Les différents types de messages échangés que nous avons étudié précédemment sont incorporés dans la création de message du serveur. 4.1.3 Installation Maintenant que l'on a compris comment le lapin dialogue avec le serveur et comment le serveur OpenJabNab est fait, il ne reste plus qu'à l'installer. 4.1.3.1 Pré-requis Pour que l utilisateur ait accès au Nabaztag par une interface web (afin qu il puisse configurer son lapin et ses applications), nous devons au préalable mettre en place un serveur Apache et Php et y activer le mode rewrite (sudo a2enmod rewrite). Le nabaztag se connecte à Internet en Wi-Fi et on peut lui placer en paramètre des adresses URL. Il faut donc que l on mette en place un serveur DNS car par défaut c est celui du site de Violet qui est spécifié, et il n est plus en fonction. Enfin, pour qu OpenJabNab ait tout ce qu il lui faut pour s installer correctement il faut installer préalablement git (logiciel de gestion de versions et système de fichier) et qt4- dev-tools (framework orienté objet). 4.1.3.2 Installation Une fois tous les pré-requis nécessaire installé il faut se positionner dans le répertoire /var/www/ et exécuter la commande : sudo git clone https://github.com/openjabnab/openjabnab.git Cette commande va permettre de cloner le dêpot d OpenJabNab sur notre serveur. Ensuite, il faut éditer le fichier /etc/apache2/sites-available/default et y noter /var/www/openjabnab/http-wrapper. Il faut aussi mettre AllowOverride All sur toutes les parties concernant OpenJabNab et relancer Apache pour qu il prenne en compte les modifications.

Maintenant on va compiler les sources en se positionnant dans /var/www/openjabnab/server et en faisant : sudo qmake r sudo make Ensuite il faut configurer notre serveur. On va d abord copier le fichier /var/www/openjabnab/serveropenjabnab.ini-dist dans le répertoire bin du serveur, et le renommer en openjabnab.ini. Puis on va modifier ce fichier pour y spécifier l adresse de notre serveur et le chemin pour se rendre à la partie http-wrapper du serveur. Il faudra aussi mettre à true certaines valeurs. Pour terminer il faut créer un fichier bin/plugins/ plugin_auth.ini qui va contenir ces deux lignes : [global] authmethod=full Puis donner tous les droits au fichier http-wrapper/ojn_admin/include. On peut alors lancer le serveur et dans un navigateur Web entrer l adresse : http://adresse_ip_du_serveur/ojn_admin On arrive alors sur l interface Web d OpenJabNab. 4.2 Traitement de la parole 4.2.1 Reconnaissance vocale Nous allons réaliser lors du second semestre, une application de reconnaissance vocale avec l'api Sphinx-4, qu'il faudra intégrer au serveur. Cette application sera codée en Java, il faudra aussi proposer une grammaire au format JSGF selon les besoins afin que cette reconnaissance soit fonctionnelle. Tout d'abord, une application de test sera implémenter, sans être intégrée à OpenJabNab, et une fois que tout fonctionne correctement, on l'ajoutera au serveur.

Le Nabaztag sera alors capable de récupérer du son et de le transmettre au serveur pour traitement. 4.2.2 Synthèse vocale Nous allons approfondir les recherches sur les autres possibilités qui s'offrent à nous à propos de la synthèse vocale car la solution actuelle n'est pas très convaincante, il faudra faire des tests avec le text to speech existant sur le serveur, mais il restera toujours l inconvénient d'accessibilité au serveur si le serveur est indisponible. Si la deuxième solution, c'est-a-dire l'utilisation d'un système de synthèse vocale sur le serveur en local, est approuvée, il faudra installer sur le serveur les applications nécessaires à la synthèse vocale. 4.2.3 Reconnaissance automatique du locuteur Nous allons créer une application qui permet l'identification du locuteur à l'aide de LIA_RAL qui utilise la librairie ALIZE. Le Nabaztag pourra ainsi reconnaître la personne qui lui parle (attribuer une identité de la base à cette personne). 4.3 Planning prévisionnel Le planning prévisionnel réparti le travail que chacun devra effectué au cours du second semestre. Il met en avant les moments de travail individuel et les moments de travail collectif. Planning 3 semaines 2 semaines 3 semaines 2 semaines 3 semaines Marie Michaël Ahmed - installation des prérequis - installation du serveur OpenJabNab - test avec le lapin - test du TextToSpeech d'openjabnab - mise en place d'une application test de reconnaissance vocale à l'aide de sphinx-4 - tests - création d'une application de reconnaissance vocale qui interagira avec sphinx-4 - mise en place de l'application final de reconnaissance vocale - tests avec le lapin - création d'une application qui intégrera la reconnaissan ce du locuteur - mise en place de la reconnaissan ce du locuteur à l'aide du LIA_RAL - création d'une application qui intégrera la reconnaissan ce du locuteur - mise en place de l'application de la reconnaissan ce du locuteur - tests - rédaction du rapport