Aujourd’hui, je vous propose de découvrir Kalliope, un assistant vocal développé par Nicolas Marcq, un jeune Français de Grenoble. Cet assistant vocal peut vous permettre de contrôler votre domotique (ampoules connectées, mediacenter, etc…). Il est écrit en Python et est sous licence MIT. Le code est disponible sur Github.

Kalliope est un cerveau (brain) dans lequel on trouve des neurones (neurons). Les neurons sont des modules qui vont permettre d’effectuer toutes sortes de tâches paramétrées. L’association entre une commande vocale (signal) et un neuron se fait par une synapse.

---
  - name: "say-hello-fr"
    signals:
      - order: "bonjour"
    neurons:
      - say:
          message:
            - "Bonjour {{name}}"

Ici on décrit une synapse “Bonjour” qui est activée sur l’ordre “bonjour” et qui active le neurone message. Au final, quand on dit “Bonjour”, Kalliope vous répond “Bonjour {{name}}”.

Il existe une liste de neurones, mais il est tout à fait possible d’en créer d’autres, en Python toujours. En plus des commandes vocales, il est possible d’appeler des “synapses” depuis la ligne de commande.

Installation de Kalliope sur Raspberry Pi

Pour installer Kalliope sur votre Raspberry Pi, vous avez deux façons de le faire, la première façon est de saisir manuellement les commandes expliquées sur le Wiki du projet, la deuxième est l’installation automatique à partir d’une image (img), celle que nous allons utiliser aujourd’hui.

Formatage de la carte SD

Avant d’installer l’image (img) de Kalliope sur votre carte SD, assurez-vous qu’elle soit vierge et non partitionnée. Pour cela, utilisez le programme SD Card Formatter.

Sélectionnez la carte SD que vous avez inséré dans le lecteur sur votre ordinateur, puis effacez le “Volume label”, puis cliquez sur “Format” pour commencer le formatage de la carte SD.

Une fois effectué, la carte sera vierge et ne possédera aucune partition, essentiel pour écrire une nouvelle image (img) sur cette carte SD.

Ecriture de l’image de Kalliope

Avant d’écrire l’image (img), il faut télécharger cette image. Je vous propose de télécharger la dernière mise à jour (release) : github.com/kalliope-project/kalliope/releases

Une fois l’image téléchargée, téléchargez également Win32 Disk Imager qui est un programme d’écriture d’image pour carte SD. Vous pouvez évidemment utiliser un autre programme.

Sélectionnez le “Fichier image” (disponible dans l’archive précédemment téléchargée), puis le “Périphérique” où se trouve la carte SD. Pour commencer l’écriture, cliquez sur le bouton “Ecrire”.

Patientez quelques minutes, et votre image sera écrite sur la carte SD. Une fois effectué, retirez la carte SD du lecteur de votre ordinateur, puis insérez la micro-SD dans le lecture carte de votre Raspberry Pi.

Bootez (démarrez) votre Raspberry Pi.

Kalliope est installé ?

Pas tout à fait, il reste quelques commandes à saisir manuellement, et il faut également tester les périphériques audio (casque/haut-parleur, et microphone).

Pour vous connecter, saisissez les identifiants suivants :

  • Nom d’utilisateur : pi
  • Mot de passe : raspberry

Il faut d’abord mettre à jour les dépendances puis en installer de nouvelles :

sudo apt-get update
sudo apt-get install git python-dev libsmpeg0 libttspico-utils libsmpeg0 flac dialog libffi-dev libffi-dev libssl-dev portaudio19-dev build-essential libssl-dev libffi-dev sox libatlas3-base mplayer libyaml-dev libpython2.7-dev libav-tools

Il faut ensuite installer la dernière mise à jour de Python :

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

Sur le Raspberry Pi, “pulseaudio” n’est pas installé par défaut, à vous de le faire :

sudo apt-get install pulseaudio pulseaudio-utils

Pour démarrer “pulseaudio”, il suffit de saisir cette commande dans la console :

pulseaudio -D

Configuration du Raspberry Pi

Cette étape est importante pour que Kalliope fonctionne avec votre Raspberry Pi. Les périphériques audio ne sont peut-être pas installé, et peuvent ne pas fonctionner par défaut.

Configuration du casque/haut-parleur

Pour lister les périphériques audio en sortie (casque ou haut-parleur), saisissez la commande suivante :

aplay -l
[email protected]:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: C1500 [Corsair Vengeance 1500], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
  • L’entrée analogique (où la prise est connectée) est sur la carte 0 et le périphérique 1
  • L’entrée audio USB est sur la carte 1 et le périphérique 1

Configuration du microphone

Pour lister les périphériques audio en entrée (microphone), saisissez la commande suivante :

arecord -l
[email protected]:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: C1500 [Corsair Vengeance 1500], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

Créez maintenant un fichier de configuration à la racine de votre répertoire utilisateur (/home/pi/.asoundrc) :

pcm.!default {
   type asym
   playback.pcm {
     type plug
     slave.pcm "hw:1,0"
   }
   capture.pcm {
     type plug
     slave.pcm "hw:1,0"
   }
}

playback.pcm est la sortie audio (casque/haut-parleur), et capture.pcm est l’entrée audio (microphone).

Pour prendre en compte les changements, redémarrez alsamixer :

sudo /etc/init.d/alsa-utils restart

Pour ajuster les paramètres audio, saisissez la commande suivante dans votre console :

alsamixer

Sélectionnez le périphérique que vous voulez utiliser en appuyant sur la touche F6 et en vous laissant guider avec les flèches directionnelles de votre clavier.

Pour être sûr que le microphone fonctionne, saisissez la commande suivante dans votre console et enregistrez votre voix pour essayer (appuyez simultanément sur Ctrl+C pour arrêter l’enregistrement) :

rec test.wav

Pour être sûr que le casque/haut-parleur fonctionne, saisissez la commande suivante dans votre console et écoutez le résultat de l’enregistrement :

mplayer test.wav

Si l’audio fonctionne, vous pouvez continuez.

Démarrer Kalliope

Une fois ces configurations faites, on peut démarrer Kalliope ! Pour ce faire, il suffit de saisir la commande suivante dans la console :

kalliope start

Pour démarrer Kalliope automatiquement au démarrage du Raspberry Pi, il suffit de suivre ce qui suit.

Créez un nouveau fichier de configuration dans /etc/systemd/system/kalliope.service à l’aide de nano (ou vim) par exemple :

sudo nano /etc/systemd/system/kalliope.service
[Unit]
Description=Kalliope

[Service]
WorkingDirectory=/home/pi/kalliope_starter_fr

Environment='STDOUT=/var/log/kalliope.log'
Environment='STDERR=/var/log/kalliope.err.log'
ExecStart=/bin/bash -c "/usr/local/bin/kalliope start > ${STDOUT} 2> ${STDERR}"
User=%i

[Install]
WantedBy=multi-user.target

Vous pouvez changer la valeur de “WorkingDirectory” selon l’endroit où est installé votre “starter” (avec les fichiers de configuration suivants : brain.yml & settings.yml).

Après avoir enregistré la configuration, saisissez les commandes suivantes dans la console afin que le système prenne en compte les modifications :

sudo systemctl daemon-reload
sudo systemctl start kalliope
sudo systemctl enable kalliope

Pour redémarrer le Raspberry Pi, faites un coup de :

sudo reboot

Et vérifiez que Kalliope est bien démarré.

Tester Kalliope

Pour tester Kalliope, il suffit de lui murmurer la phrase suivante :

Kalliope, quelle date sommes-nous ?
Kalliope : un assistant vocal pour votre Raspberry Pi (installation)
Voter pour cet article
14 commentaires
  1. Hello, normalement aucune commande n’est nécessaire après l’installation via l’image pré compilée. C’est même le but de cette image.

  2. Bonjour,
    Rpi 2
    j’ai tenté à plusieurs reprises avec la dernière image , mais je bloque, erreur python apparemment ?

    Il faut ensuite installer la dernière mise à jour de Python :
    wget https://bootstrap.pypa.io/get-pip.py
    sudo python get-pip.py

    l’installation se fait bien

    Quand je lance : kalliope start

    j’ai ce message :Requirement already up-to-date: pip in /usr/local/lib/python2.7/dist-packages

    j’ai vu avec un ftp qu’il y avait 2 versions de python dans /usr/local/lib/ ???
    la python3.4 et la 2.7 cela pourrait être le problème ?

    N’ayant que peut de connaissance, la réponse devrait être exhaustive pour que je corrige.

    Merci à tous.

  3. Bonjour,

    j’ai terminé l’installe. Au début, Kalliope m’écoute sans rien comprendre.

    Je lui demande , il répond qu’il ne comprend pas.

    Apres reboot, kalliope ne m’entend plus….

    Merci de votre retour,

  4. Bonjour.
    J’ai kalliope sur mon pi 3 qui marchais nickel. Mais depuis que j’ai fais la manip pour le lancement auto le son est très mauvais. Genre sa grésille et sa saute. Alors que avant c’était propre.
    Une idée ?
    J’ai vraiment besoin du lancement auto

  5. Curieux de savoir quelle techno fait le lien entre le son de la voix capté par le micro, et la transformation en commande avec les neurones. L’une des technologies les plus impressionnantes je trouve, avec la reconnaissance faciale.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscrivez vous à notre newsletter

Soyez informé des derniers articles sur YubiGeek. Saisissez votre adresse email et validez le formulaire. Un email de confirmation vous sera communiqué.

Vous devriez également aimer

Installer un serveur Web avec Nginx & PHP 7.0 sur un Raspberry Pi

Il y a quelques temps, on vous présentait le Raspberry Pi, le nano-ordinateur…

Installer un serveur MySQL avec MariaDB sur un Raspberry Pi

MariaDB est un système de gestion de base de données édité sous…

Raspberry Pi : comment concevoir un bot qui dicte la météo chaque jour ?

Cette semaine a été remplie d’article pour votre Raspberry Pi, aujourd’hui on…

Raspberry Pi : un compteur d’abonné visuel pour les réseaux sociaux

Je fais suite au tutoriel sur la création d’un compteur d’abonné vocal…