IBM FRANCE

L’application Single-page (SPA) intéresse beaucoup l’industrie logicielle car c’est un levier pour améliorer les performances des applications sur...

Lire la suite

Voice Kit : un kit complet pour créer son assistant vocal !

Par:
francoistonic

ven, 30/06/2017 - 14:36

The MagPi a l’art de nous surprendre. Le magazine officiel Raspberry Pi et Google ont proposé en avril dernier un kit complet pour créer son propre assistant vocal à la Google Home, Amazon Echo ou (Microsoft) Invoke. Pour le prix du magazine, c’était super intéressant même si la Pi n’était pas incluse dedans. On ne peut pas tout avoir ! Prise en main.

Comme à chaque fois que The MagPi sort un kit ou une Pi Zero offerte, après quelques heures, il ne reste plus rien ! Il est question de proposer, à la vente, le Voice Kit, mais pour le moment aucune information précise n’est disponible. Ce kit est une interface utilisateur vocale (VUI) utilisant des API et services Cloud.

Contenu du kit

-        boîtier en carton à monter ;

-        carte Voice Hat ;

-        Microphone Voice Hat ;

-        Lot de câbles ;

-        bouton pour activer l’assistant ;

-        1 lot de header (à souder) ;

-        haut-parleur.

Pour pouvoir fonctionner, vous devez rajouter une Raspberry Pi , une connexion Internet (WiFi de préférence), un clavier et souris, écran avec câble HDMI et une carte SD pour le système. Sans oublier l’alimentation.

Le coeur du kit : Voice Hat

L’élément central du kit est le shield Voice Hat. Pour l’utiliser, il faut le mettre sur une carte Pi. L’opération est simple. Ne pas oublier de stabiliser le shield avec les supports en plastique livrés en standard.

Ce Voice Hat est taillé pour le Voice Kit pour connecter le microphone et le bouton ainsi que le haut-parleur. La carte propose aussi plusieurs GPIO pour y connecter des capteurs divers et variés.  On dispose de 6 servos capables de supporter des moteurs et des capteurs. Chaque servo (0 à 5) se compose de trois broches : pin (GPIO), 5V et le GND. On dispose aussi de 3 drivers permettant de connecter divers capteurs. À cela se rajoute la possibilité d’ajouter des capteurs en I2C et en SPI.

Attention au voltage et à la puissance délivrée par ces GPIO. Les headers sur les GPIO ne sont pas soudés. À vous de le faire.

Bref, il y a de quoi faire avec ce shield. Si par défaut, on crée uniquement un assistant vocal, vous pouvez rapidement étendre l’électronique et rajouter de nombreux capteurs qui permettront d’étendre l’usage de votre Voice Kit.

À cela se rajoute une petite carte, le Voice Hat Microphone. Il possède deux micros (gauche / droite). Il est connecté au shield en I2C. Il est théoriquement possible d’utiliser la microphone board indépendamment du Voice Hat.

10 minutes pour monter

Le montage proprement dit est très rapide. Le guide de montage est disponible en ligne :

https://aiyprojects.withgoogle.com/voice/

Le boîtier en carton permet de démarrer son IoT mais il a tendance à ne pas tenir les cartes. Pour notre part, nous avons trouvé et imprimé un boîtier. L’impression est longue (env. 10h), mais le résultat est très sympa.

N’oubliez pas de flasher votre carte SD avec l’image système. Il s’agit d’une variante de la Raspbian.

10 minutes pour lancer l’assistant

Qui dit assistant vocal dit objet connecté. Le Voice Kit est avant tout un objet connecté et la connexion Internet est donc indispensable. Notre kit DIY (Faire soi-même) utilise Google Assistant SDK.

Tout d’abord, nous démarrons notre assistant avec la carte SD flashée. On se connecte à Internet, en WiFi. On teste que l’audio fonctionne avec le fichier Check audio. On fait la même chose pour le WiFi avec Check WiFi. Si des problèmes surviennent : il faut vérifier le montage et voir si toutes les connexions sont bonnes.

Le plus long dans l’installation est la partie Google Cloud Platform et les connexions aux services Assistant. Il faut disposer d’un compte Google Cloud Platform et de l’activité de l’API (tout se fait depuis la console Cloud Platform). On crée une nouveau projet et on créer un client Oauth 2.0. Ainsi on accède aux credentials et au Oauth Client IDE. Ces éléments servent à authentifier le service et à accéder au service depuis son Voice Kit.

Quelques manipulations depuis le Shell et quelques commandes permettent de tout mettre en place. La dernière étape, si tout va bien, est d’activer (dans Activity Controls) les services de localisation, activité vocale, etc.

À noter que le guide d’installation en ligne est un peu différent de celui présent sur le magazine MagPi n°57.

Une fois toute l'installation terminée, l’assistant est prêt. Il faut maintenant lancer le Start dev terminal pour lancer l’assistant. Si cela ne se fait pas automatiquement (le bouton doit passer en vert), il faut taper src/main.py. Il lance manuellement l’assistant.

Il est possible de lancer automatiquement l’assistant en tant que service système (via un sudo systemctl enable) au démarrage (ce qui n’est pas fait par défaut).

L’assistant peut être activé de deux manières :

-        par le bouton (dit bouton d’arcade) ;

-        par un simple claquement de mains (1 seul claquement).

Il suffit de configurer le fichier voice-recognizer.ini et de modifier le trigger gpio / clap. À noter que par défaut, l’assistant est en anglais.

Les commandes

Les commandes par défaut sont limitées : hello, what time is it, tell me a job, gestion du volume. Ce sont avant tout des exemples d’usages du service Google Assistant avec le Voice Kit. Heureusement, il est possible d’étendre les commandes, avec ses propres commandes.

Le Voice Kit permet des commandes Google Assistant ou de simples commandes locales.

Les nouvelles actions peuvent très diverses : de la simple question – réponse locale à une utilisation de capteur via le GPIO.

Il faudra alors modifier le code du fichier action.py pour ajouter l’action voulue. Les commandes personnalisées sont dans la partie def_add_commands_just_for_cloud_speech

Par exemple :

-        pour une simple commande, on utilisera simple_command (‘question’, ‘réponse’) ;

-        on peut interagir avec les capteurs connectés à son code en utilisant actor.add_keywork(action, Gpiowrite) ;

-        on peut aussi interagir avec le système en faisant un shutdown ou un reboot via une commande de type SpeakShellCommandOutput.

Après chaque modification / rajout d’actions, mieux vaut faire un reboot du système. En général la latence est bonne, mais il arrive qu’elle se dégrade. La qualité d’écoute du kit n’est pas toujours optimale surtout si l’environnement est bruyant. Parfois aussi, le kit refuse de se connecter au service Google ou de reconnaître la moindre commande. Vérifiez la connexion et redémarrez. En général, cela suffit.

Exemple :

# =========================================

# Makers! Implement your own actions here.

# =========================================

import RPi.GPIO as GPIO

class GpioWrite(object):
    '''Write the given value to the given GPIO.'''

    def __init__(self, gpio, value):
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(gpio, GPIO.OUT)
        self.gpio = gpio
        self.value = value 

    def run(self, command):
        GPIO.output(self.gpio, self.value) 

-> puis implémentation de l’action et sa réponse :

actor.add_keyword('light on', GpioWrite(4, True))
actor.add_keyword('light off', GpioWrite(4, False)) 

Un bon 15/20

Honnêtement, pour le prix du Voice Kit, quand on arrive à en trouver un à un tarif acceptable (ce qui est très difficile), cet IoT est vraiment bon. La qualité du Voice Hat surprend. La partie logicielle mériterait une meilleure intégration pour éliminer quelques étapes, mais n’oublions pas que nous sommes dans une approche maker / DIY et non dans un IoT tel que Google Home ou Amazon Echo. Surtout, rajouter des commandes est assez rapide même quand on s’interface avec des capteurs via les GPIO. C’est une excellente solution pour comprendre l’intelligence artificielle via un assistant vocal.

Ce kit est plus facile d’accès que le ReSpeaker de Seeed Studio. Oui il est plus puissant et offre une qualité sur la partie audio supérieure (via le microphone shield), mais le prix et le manque d’intégration sur la partie logicielle, ainsi qu’une documentation trop légère, a fini par nous convaincre.  

Vous pouvez aussi interfacer votre IoT à l’outil TensorFlow (Google).

Android Things

Le Voice Kit est aussi supporté par Android Things, la plateforme IoT de Google. La Developer Preview 3.1 inclut ce support par défaut. Le système supporte uniquement la Raspberry Pi 3.

Vous devez utiliser la dernière version d’Android Things et suivre les instructions d’installation et de configuration.

François Tonic