Voice-IT : La Sémantique pour les assistants virtuels

 

Introduction

Fin 2016, Google Home s’est annoncé au cœur du quotidien de la maison connectée, il est capable de répondre à toutes les demandes par commande vocale. Les développeurs PALO IT se sont lancés le défi de détourner l’usage initial d’un drone de Parrot en lui intégrant la reconnaissance vocale ! Sur la base d’un cas client concret, nous explorerons ensemble les APIs de commandes vocales et d’objets connectés. Ce projet a fait le sujet d’un BarCamp innovant chez Palo IT, il a été développé en mode de Mob Programming et a permis d’aborder les technologies d’assistants virtuels par une approche sémantique pour interpréter le langage humain, analyser sa structure et son sens !

L’idée & l’état de l’art

L’aventure a commencé par une demande client. Il s’agissait de construire un objet connecté qui aurait pour rôle de fluidifier la relation avec des clients importants. Cet objet serait un assistant virtuel qui se charge de prendre les commandes et se connecte avec le CRM.

Après un tour d’horizon rapide des possibilités, nous nous sommes orientés vers une solution spécifique basée sur un composant de type Raspberry Pi connecté au service Google de reconnaissance vocale. Le tout sera embarqué dans un objet imprimé en 3D.

Le schéma ci-dessous illustre les différentes parties qui interviennent dans le processus : la parole de l’utilisateur est captée par micro, le dispositif transforme la voix à un texte via le Speech2Text de Google. Les algorithmes et les programmes faits par PALO IT traitent sémantiquement le texte afin de réaliser des actions sur le CRM, finalement si besoin, un texte est transformé en son via le Text2Speech de Google puis restitué avec les hauts parleurs à l’utilisateur. 

Schéma de solution 

 

Google et Amazon proposent des solutions brillantes. Ils ciblent le grand public avec leur “assistant vocal familial“. En explorant un peu les conditions d’extension de ces produits, nous constatons que les contrats risquent d’entraver la liberté, la sécurité et surtout le business de notre client. Google Assistant et Home ont accès à un maximum d’informations, par exemple : l’historique des recherches web, les déplacements, tous les contacts, l’agenda, la liste des applications… Du côté d’Amazon, il existe un risque de piratage. Mark Barnes, menant des recherches en cybersécurité au compte de MWR Labs, a démontré que des pirates peuvent, sur les enceintes d’Amazon fabriquées avant 2017, installer des logiciels espions1.Ce problème n’existe plus sur les nouveaux appareils mais le risque de trouver d’autres failles de sécurité subsiste. Toutes ces données et informations sont précieuses pour les concurrents industriels et les géants d’internet qui exploitent cela dans leurs modèles économiques. Le sujet est relancé avec le Cloud Act la loi signée par le président américain pour saisir emails et données à l’étranger.

 

2

Assistant vocal familial par Google, Amazon & Apple 

 

Pour éviter de réinventer la roue, nous avons regardé si d’autres personnes avaient tenté l’expérience. Une première initiative R&D a été faite à l’université de Vancouver et un produit a vu le jour sous la forme d’un drone avec des commandes vocales limitées.

En parallèle, plusieurs initiatives de commande vocale d’objets ont commencé à émerger. Le X-Voice Drone propose quelques commandes vocales simples qui fonctionnent en parallèle avec une manette de contrôle. Notre idée était d’arriver à parler au drone comme à un chatbot d’une façon naturelle, sans être limité à quatre ou cinq commandes prédéfinies et préenregistrées.

3

X-Voice Drone 

 

Comme l’idée est très prometteuse et innovante, nous décidons de faire un prototype. Pourquoi ne pas utiliser notre petit drone Parrot ? C’est parti. On commande un Raspberry Pi et on commence à explorer les solutions pour avoir un prototype en quelques jours.

4

Réalisation d’un prototype à commande vocale

 

La méthode

Pierre Dac disait “Avec de la méthode et de la logique on peut arriver à tout aussi bien qu’à rien” . Nous avons procédé en Mob Programming afin de réaliser ce projet. C’est une approche de développement logiciel où toute l’équipe travaille sur la même chose, en même temps, dans le même espace, et sur le même ordinateur. Ceci est similaire à la programmation par paire où deux personnes s’assoient devant le même ordinateur et collaborent sur le même code en même temps. Avec Mob Programming, la collaboration est étendue à tous les membres de l’équipe et s’appuie sur les principes de l’Extreme Programming. Cela permet d’augmenter les chances d’atteindre plus rapidement et efficacement son objectif, en partant de principes et de repères clairs et personnalisés et en utilisant des outils bien définis :

Principes :

  • Nous allons à l’essentiel
  • L’équipe décide ensemble.

Outils :

  • Des User Stories
  • Un tableau Kanban
  • Un daily meeting
  • Des démos (dès qu’on peut, quand on peut).

Repères :

  • Une vision claire
  • De l’envie et du fun !

L’approche innovante

Le procédé basé sur le Mob Programming est intéressant mais nous devons nous occuper d’abord de faire un produit qui fonctionne. Notre robot doit comprendre ce qu’on lui dit, pas uniquement obéir à quelques ordres prédéfinis. Il doit donc reconnaître le sens des mots, et donc analyser en se basant sur une approche sémantique.

La sémantique est une branche de la linguistique qui est à l’opposé de la branche qui se base sur la syntaxe. Elle étudie les signifiés: ce dont on parle et ce que l’on veut énoncer.

Pourquoi a-t-on besoin de la sémantique dans ce type de projet ? Elle va permettre de comprendre de quoi on parle. Elle permet de démêler les choses compliquées du langage comme les mots composés ou bien les antonymes, les synonymes etc. Dans le prototype, c’est ce qui va permettre au drone d’interpréter par exemple « tourne, mais pas à droite » qui doit être bien évidemment interprété « tourne à gauche ».

L’ontologie est un autre outil souvent utilisé par la sémantique. Une ontologie permet de décrire la nature et les propriétés des objets du monde réel à partir de concepts et des relations entre ces concepts. En philosophie, l’ontologie est l’étude de l’être en tant qu’être. En science, c’est l’étude des propriétés générales de ce qui existe. C’est l’une des approches de modélisation qui permet d’inférer des faits à partir d’autres faits et surtout du sens à une syntaxe.

5

Nature et propriétés des objets : L’ontologie

 

Si nous allons un peu plus loin, une ontologie est un ensemble de concepts reliés entre eux. Ce genre de réseau de relations permet de faire ce qu’on appelle une inférence. C’est tout simplement une déduction à partir de conditions initiales.

Cette capacité d’émergence à partir des relations entre concepts est précieuse pour amener les machines à des comportements riches, proches de ce qu’on appelle l’intelligence. Avec des ontologies très complexes et riches en relation, le modèle serait analogue à un réseau de nœuds capables de générer des réponses à des interrogations sur l’ensemble de base de connaissances. C’est à l’image du cerveau, plus il est grand et complexe, plus l’être vivant qui s’en sert, est intelligent. A partir d’un certain degré de complexité (nombre d’éléments et de relations) un modèle sémantique devient capable de faire émerger des connaissances inconnues jusqu’à lors.

6

OntoGraf

L’architecture

L’idée était d’avoir quelque chose de réutilisable, facile à intégrer dans différents métiers. En séparant les différents concepts, on reste agnostique par rapport au problème à résoudre : la seule chose à modifier pour traiter un nouveau client/API/Service, c’est l’ontologie et son mapping vers l’API finale.

Procédons étape par étape le processus d’interactions entre les différents composants :

  • Un dispositif reconnaît la voix et la traduit vers du texte ;
  • Notre application le reçoit et l’envoie vers le module de correspondance sémantique pour en extraire des actions et entités ;
  • L’application essaye de faire correspondre ces actions dans l’ontologie ;
  • Si elle a reconnu une commande, on l’exécute avec l’API cible ;
  • Le programme produit un feedback utilisateur via text-to-speech ou un écran ;
  • Dans le cas où l’application n’a pas compris, on peut commencer une “conversation” avec l’utilisateur en demandant soit de répéter soit de donner plus de détails, exemple :
  • Utilisateur : “Tournez”,
  • Robot : “Je peux tourner à gauche ou à droite, je fais quoi ?”,
  • Utilisateur : “à droite !”

7

Les différents composants d’architecture pour Voice IT

 

Nous avons commencé par explorer des solutions Open Source pour la reconnaissance vocale et l’analyse sémantique fonctionnant avec un Raspberry PI. Nous avons étudié les outils  suivants : CMU (Carnegie Mellon Uni), Sphinx (Voice-to-Text) et Stanford NLP.

8

L’outil CMU Sphinx par Carnegie Mellon

 

  • Pocketsphinx -> Version Android (avec 20% de taux d’erreur parmi ~10 mille mots) ;
  • Offline ;
  • Tuning du modèle est assez compliqué ;
  • Support en Français moins puissant qu’en Anglais.

9

L’outil Stanford NLP
  • Le full-support pour les modules ne sont qu’en anglais cependant nos commandes seront en français ;
  • Stanford NLP n’a pas 2 des features les plus importantes pour nous : Les Lemmes (Lemmas), et les Named Entities.
    • Les Lemmes permettent d’extraire l’origine d’un mot depuis une conjugaison : en anglais : ”was” -> “to be”;
    • Named Entities permet de ‘tagger’ des mots, d’ajouter de la metadata, “yesterday” -> 26-10-2016.

10

Modules d’annotateurs disponibles par langue

Il existe des outils Cloud permettant d’analyser et d’extraire des actions depuis du texte :

Google, Wolfram sont les plus connus, mais il existe également des services comme api.ai et wit.ai. Tous ces services sont payants, mais les coûts pour acheter leurs produits et tester leurs analyses sémantiques étaient bien au-delà du budget de notre simple P.o.C. (Proof of Concept).

Choix de la plateforme du P.o.C. : Tablette Android (+ Reconnaissance vocale)

Comme nous n’avions qu’un temps limité, nous avons repriorisé le backlog et décidé de déployer sur un support numérique prêt à l’exploitation : une tablette Android.

  • Speech-to-Text : il permet de télécharger les packs multilingues hors-ligne sur Android. Pour notre projet, il était nécessaire de pouvoir reconnaître la voix offline (sans passer par les serveurs de Google) car le drone est connecté à la tablette via Wifi : la tablette ayant une seule carte Wifi ne peut l’utiliser pour se connecter à Internet, elle l’utilise pour permettre de contrôler le drone avec la voix réceptionnée par le microphone de la tablette et traitée par notre prototype. Dans la Raspberry, ça serait différent, car il y du Wifi ET du Ethernet 🙂
  • Text-to-Speech : Non seulement on peut choisir la langue, mais on peut aussi choisir parmi différents types de voix afin de personnaliser au volonté de chacun le genre de son interlocuteur (féminin, masculin, …), un détail qui semble non sans intérêt dans notre relation avec les assistants vocaux*.
  • Ecran + Micro + Haut-Parleurs intégrés
  • Librairie GAST : boîte à outils pour utiliser les capacités de détection d’Android (cela permet d’utiliser les capteurs, tel que le microphone dans notre cas)

 

Le Drone

Parrot propose une API très complète avec laquelle on peut contrôler des mouvements, prendre des photos, transférer de la vidéo en temps réel, réaliser des ‘animations’, etc…

Pour les modèles de drones plus avancés, l’API a la possibilité de définir un parcours via des coordonnées GPS, d’envoyer et de recevoir de l’audio, etc. L’API est écrite en C et propose des interfaces en Java, Unix et iOS.

DRONE

Exemple de Drone Parrot

Où est l’innovation ?

Notre prototype utilise une interprétation sémantique et non juste syntaxique. Notre solution sait reconnaître un ensemble de mots et les interpréter dans un ensemble de concepts reconnus dans le domaine métier du client. Donc nous modélisons le champ sémantique de notre client pour que la reconnaissance soit vraiment ouverte et pertinente.

Ceci se fait en collaboration avec le client, il spécifie selon son besoin les termes qui signifient pour lui des tâches bien particulières dans son métier et ces termes auront dorénavant la sémantique exacte souhaitée et seront intégrés dans le modèle. Le modèle, étant ouvert, est extensible et modifiable à tout moment, on peut lui déclarer automatiquement de nouvelles sémantiques si le métier évolue. Par exemple, si l’utilisateur souhaite lire les derniers billets de sa “newsletter” préférée mais qu’ils souhaite dorénavant utiliser le mot français recommandé par la Commission générale de terminologie et de néologie, il suffit de dire à son assistant “Bonjour mon ami, dorénavant le mot ‘infolettre’ est équivalent à ‘newsletter’ ” ensuite il pourra lui demander : “Bonjour mon ami, lis moi le dernier billet de l’infolettre de notre entreprise

L’avantage de cette approche est d’avoir une solution simple, ouverte, performante sans avoir besoin d’une phase lourde d’apprentissage (machine learning, deep learning…). En ce qui concerne la partie applicative il n’y a pas de code spécifique au métier. À tout moment, on peut utiliser cette application pour un autre métier : il suffit de créer un nouveau lexique pour le métier concerné, et de changer les appels d’API. L’innovation est là !

Perspectives

Nos perspectives d’évolution sur ce projet sont les suivantes :

  • Modulariser le code
  • Analyse sémantique et extraction des actions/paramètres
  • Mode conversation :
  • Étendre l’ontologie et l’exploiter via Apache Jena
  • Reconnaissance vocale
  • Intégrer tout ça dans un Raspberry
  • Utiliser la caméra du drone pour reconnaître des objets, couleurs, etc.

Nous vous tenons informés des améliorations à venir !

Visionnez les performances de notre drone : “OK Palo, présente moi ton assistant virtuel !”

 

Des questions sur le sujet ? N’hésitez pas ! 

CONTACTEZ-NOUS !

Share
Yassin CHABEB
Yassin CHABEB

489

Leave a Reply

Your email address will not be published. Required fields are marked *