Google AIY Voice Kit pour Raspberry-Pi - la reconnaissance vocale et voix pour votre Raspberry Pi

Nous venons de recevoir l'AIY Voice Kit, un kit intéressant mais c'est en parcourant le magazine inclus (magpi magazine AIY Essentials) dans le kit que nous nous sommes rendu compte qu'il s'agit d'un projet captivant d'envergure.
Assistant vocal - Google AIY Voice Kit pour Raspberry-Pi
Avec ce kit, vous pourrez incorporer une intelligence artificielle dans votre projet Raspberry-Pi.
Ajoutez un Pi, une carte SD et une alimentation et c'est parti pour transformer le kit en assistant intelligent.
Les éléments du kit "Google AIY Voice" pour Raspberry-Pi

Le kit se compose des éléments suivants:
  • Le "HAT Voice" de Google - carte complètement assemblé
  • Une "carte micro" qui se branche sur le Voice HAT - carte complètement assemblé
  • Un haut-parleur (avec fils soudés)
  • Un bouton poussoir style arcade + 4-fils
  • Boîte en carton pour le projet (boîte externe et élément interne pour le projet)
  • Le magazine "MagPi Essentials - AIY Projects" servant de guide d'installation, mise-en-oeuvre et exploration des possibilités. Guide en anglais.
  • Les autres éléments nécessaires au montage.
Une fois l'intelligence artificielle intégrée à votre projet, vous pourrez utiliser le "Voice Kit" de Google pour:
  • Créer un système autonome de reconnaissance vocale (en utilisant Google Assistant).
  • Ajouter de le reconnaissance vocale et traitement du langage naturel.
  • Contrôler des sorties (ex: LED, Moteur, Servo moteur) depuis le module de reconnaissance vocale qui dispose d'interfaces permettant de contrôler du matériel depuis une interface vocale... et ça c'est vraiment très captivant.
Un petit coup d'oeil sur les détails de la carte Voice Hat nous apprend beaucoup de choses sur les possibilités offertes par le kit.
Le Voice Hat du kit "Google AIY Voice"
Les projets du kit

1) Projet de reconnaissance vocale (Chapite 5)
Projet fondamental qui utilise le kit de développement "Google Assistant SDK" pour créer un périphérique qui répond à vos questions.
Ce projet vous guide étape par étape dans la création d'un "compte Google Cloud Plateform", la création d'un projet pour le "AIY Voice kit", l'activation de l'API, la création de certificat (pour protéger la connexion), l'activation du service de requête vocale.

2) Interface vocale pour vos projets (Chapitre 6)
Utiliser un contrôle vocale personnalisé pour remplacer une interface traditionnelle.
Ce tuto passe par les étapes décrites avec le chapitre 5 avec quelques étapes complémentaire pour configurer le service de reconnaissance vocale.
A noter que ce service semble payant... vu que l'on doit configurer le billing (le paiement)!

Ce chapitre permet de contrôler la LED du bouton arcade à l'aide de phrases ci-dessous.
Voici un exemple de code repris dans le chapitre, une fois décodé, l'utilisation devient triviale.

#!/usr/bin/env python3
# Copyright 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""A demo of the Google CloudSpeech recognizer."""

import aiy.audio
import aiy.cloudspeech
import aiy.voicehat


def main():
    recognizer = aiy.cloudspeech.get_recognizer()
    recognizer.expect_phrase('turn off the light')
    recognizer.expect_phrase('turn on the light')
    recognizer.expect_phrase('blink')

    button = aiy.voicehat.get_button()
    led = aiy.voicehat.get_led()
    aiy.audio.get_recorder().start()

    while True:
        print('Press the button and speak')
        button.wait_for_press()
        print('Listening...')
        text = recognizer.recognize()
        if not text:
            print('Sorry, I did not hear you.')
        else:
            print('You said "', text, '"')
            if 'turn on the light' in text:
                led.set_state(aiy.voicehat.LED.ON)
            elif 'turn off the light' in text:
                led.set_state(aiy.voicehat.LED.OFF)
            elif 'blink' in text:
                led.set_state(aiy.voicehat.LED.BLINK)
            elif 'goodbye' in text:
                break


if __name__ == '__main__':
    main()

3) Controler une LED (Chapitre 7)
Créez vos propres commandes personnalisées tiliser un contrôle vocale personnalisée. Ce chapitre va étendre le projet en ajoutant une commande personnalisée "Repeat After Me" (répète après moi).

Le script python détecte la commande, récupère le texte après cette commande et répète le restant du texte sur le haut parleur.
Cela se fait en ajoutant quelques lignes de code. Une pour reconnaître le texte clé.

recognizer.expect_phrase('repeat after me')

Puis le code de traitement qui retire le "repeat after me" du texte énnoncé PUIS en fait un rendu audio!

elif 'repeat after me' in text:
    to_repeat = text.replace('repeat after me', '', 1)
    aiy.audio.say(to_repeat)
 
Vient ensuite l'ajout du code de gestion de la LED (sur le GPIO 26) et le montage de celle-ci sur le HAT Voice... en effet, certains GPIO sont repris sur le Voice Hat

Source: MagPi magazine
Source: MagPi magazine
Et puisqu'il est possible d'activer des LEDs alors activer des relais revient un jeux d'enfant.
Module relais activé depuis un système en logique 3.3v
Voyez le tutoriel de MC Hobby sur les modules relais. Nous présentons plusieurs modules relais activable depuis des systèmes 3.3v (comme le Pi) et systèmes 5v (comme Arduino).

4) Controler un servo moteur (Chapitre 8)
Les servo moteurs sont utilisés pour maintenir un contrôle précis du positionnement de leur axe. Très utile pour animer une poupée :-)
Il est possible d'activer de tels moteurs depuis une activation vocale.

Voici un exemple de montage issu du Mag Pi, le restant du code se trouvant dans le chapitre.
Source: MagPi magazine
5) Controler un moteur continu (Chapitre 9)
Le dernier chapitre se concentre sur le contrôle de moteurs (via les connecteurs "drivers" en bas à droite de la carte.
Les moteurs étant plus énergivores, il est nécessaire d'apporter un appoint d'énergie avec un bloc pile. L'utilisation d'un générateur PWM permet de contrôler la vitesse de celui-ci.
Source: MagPi magazine
Cela permet de contrôler jusque 4 moteurs continu MAIS DANS UN SEUL SENS UNIQUEMENT.

Le code ci-dessous démontre comment utiliser un générateur PWM pour moduler la vitesse des moteurs.
 
from gpiozero import PWMOutputDevice
from time import sleep

pwm = PWMOutputDevice(4)
while True:
    pwm.on()
    sleep(1)
    pwm.off()
    sleep(1)
    pwm.value = 0.5
    sleep(1)
    pwm.value = 0.0
    sleep(1)

En résumé
Un projet vraiment captivant. Reste à vérifier si l'API prend en charge la reconnaissance vocale en Français (ce serait vraiment top).

La possibilité de faire coexister reconnaissance vocale et contrôle de matériel est totalement captivant.

Pour le reste, le kit offre de nombreuses possibilités pour un prix tout à fait abordable (moins de 30 Eur). Il faut néanmoins ajouter un Raspberry Pi 3 + alimentation + carte SD.

Le fait qu'une partie du service soit payant - a vérifier - peut également être un frein. Reste a voir le prix. Ceci étant, les algorithmes de reconnaissance vocale et "réponse aux questions" peut tout à fait justifier une petite participation.

Où acheter