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 updatesudo 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.pysudo 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 -lpi@kalliope:~ $ 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 -lpi@kalliope:~ $ 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-reloadsudo systemctl start kalliopesudo 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 ?”