On a installé Snips, l'assistant vocal respectueux de votre vie privée, sur un Raspberry Pi

Merci Sam
On a installé Snips, l'assistant vocal respectueux de votre vie privée, sur un Raspberry Pi

Cette année encore, les assistants numériques devraient rencontrer un certain succès à Noël. Mais comment faire si vous ne voulez pas que vos donnez passent chez Amazon ou Google ? Snips est une alternative intéressante, qui peut s'installer et fonctionner en local sur un Raspberry Pi. Voici un petit guide pratique.

Les enceintes connectées de type Amazon Echo ou Google Home sont souvent annoncées comme « intelligentes ». Il n'y a pourtant rien de plus faux, puisqu'il s'agit d'un produit relativement basique comprenant des hauts parleurs et des micros, avec un système léger connecté à internet, le plus souvent sans fil.

Un fois le mot clé détecté de manière locale (Alexa, Ok Google, etc.) l'enregistrement audio débute. Le résultat est alors envoyé sur les serveurs d'Amazon ou de Google pour être traité, analysé et qu'une réponse soit produite.

Un assistant avec de la reconnaissance vocale locale 

Pour cela votre requête vocale est interprétée sous la forme d'un texte, puis traitée par une « intelligence artificielle » (ou boîte noire) qui se chargera de décider quoi faire et des actions qui sont nécessaires, notamment auprès de services tiers (allumer une ampoule, lancer une musique, etc.).

L'historique est le plus souvent conservé, de quoi parfois donner des sueurs froides à certains. Surtout quand une plateforme décide de les envoyer à la mauvaise personne. Vous pouvez bien entendu décider de faire le ménage de temps en temps (rarement de manière automatique), ou de couper les micros manuellement quand vous le désirez.

Mais il existe une autre voie, notamment choisie par le français Snips : miser sur une reconnaissance vocale et un traitement des demandes de manière locale. La société développe depuis quelques années une solution et des services basés sur l'intelligence artificielle, qui se veulent respectueuse de la vie privée, misant sur le « Privacy by design ».

Snips Actions

Snips laisse la possibilité aux utilisateurs/développeurs de programmer des « actions » en fonction de leurs demandes (nommées intentions). Une boutique en ligne permet de piocher dans les applications déjà disponibles (dont la majorité est proposée par la communauté) pour effectuer des calculs, donner l'heure ou la météo, contrôler des objets connectés, etc.

Un partenariat a ainsi été noué avec Jeedom. Mais la plateforme peut être utilisée à travers de nombreux appareils, comme un Raspberry Pi. De petites machines qui coûtent de 25 à 40 euros. Nous avons donc décidé de tenter l'expérience. La boutique applicative doit néanmoins encore être largement améliorée, comme nous allons le voir.

Un Raspberry Pi, une carte microSD et c'est parti

Si c'est la première fois que vous utilisez un Raspberry Pi, il faudra commencer par installer un système d'exploitation sur une carte microSD ou une clé USB. Nous avons pour rappel publié un guide pour mettre simplement en place (sans écran ni clavier ou souris) la distribution Raspbian avec Wi-Fi et SSH : 

Nous aurons en effet besoin des deux services pour nous connecter au Raspberry Pi (une connexion filaire RJ45 peut aussi bien faire l'affaire) afin d'y installer à distance Snips. Pour déployer et utiliser l'assistant numérique, nous n'avons pas besoin d'une interface graphique, nous avons donc opté pour la version Lite de Raspbian sur notre Raspberry Pi 3B.

Snips Rasbperry Pi 3B
Crédits : Sébastien Gavois

Avant d'aller plus loin, vérifiez que vous connaissez l'adresse IP de votre Raspberry Pi et que vous pouvez vous y connecter en SSH : par défaut le nom d'utilisateur est Pi et le mot de passe Raspberry. Si ce n'est pas déjà fait, changez ce dernier à l'aide de la commande passwd.

Dernière étape avant de se lancer : Node.js et Git doivent être installés sur votre ordinateur principal. Dans notre cas, la dernière version recommandée de Node.js était la 10.14.2 LTS, contre la 2.20.1 pour Git, dans leurs versions pour Windows 10.

Créeons un premier assistant

Avant de transférer Snips sur votre micro-ordinateur, il faut commencer par créer un « assistant ». Vous pouvez en effet en avoir plusieurs sur différentes machines en fonction de vos besoins. Cette étape nécessite de créeer un compte – gratuit – sur le site de Snips, disponible seulement en anglais pour le moment.

Dès que vous avez entré vos nom d'utilisateur, email et mot de passe (gardez-les en tête, vous en aurez besoin plus tard), Snips vous demande de nommer à votre premier assistant (cela peut être modifié par la suite) et de définir une langue. Six sont disponibles : français (notre choix), anglais, allemand, japonais, espagnol et coréen.

Le site vous propose alors d'ajouter des applications. Par défaut votre assistant ne sait rien faire et ne pourra donc répondre à aucune de vos demandes. Dans le cadre de ce guide, nous avons ajouté deux services : CodesPostaux (par Roozeec) et heure (par Joseph). Pour procéder, il suffit de cliquer sur « Add App » en dessous de chaque application, puis sur « Add 2 Apps » en bas à droite de la page.

Nous arrivons automatiquement sur la page de projet de notre assistant. Trois mots de réveil – « Wake word » – sont proposés par défaut : Hey Snips, Chappie et Jarvis. Il est également possible de le personnaliser, mais il faudra alors enregistrer des échantillons de voix pour que Snips puisse ensuite le reconnaitre ; toutes les instructions sont disponibles par ici.

Dans notre cas, nous avons opté pour... Jarvis.

  • undefined
  • undefined
  • undefined
  • undefined

Collecte anonyme des données par défaut

Avant d'aller plus loin, repérez la roue crantée avec l'étiquette Assistant Settings dans la partie supérieure droite de la page de votre projet. En plus du nom (modifiable) et de la langue, des options supplémentaires sont présentes, alors qu'elles n'étaient pas proposées/affichées lors de la création. Elles sont au nombre de trois : ASR Provider, Enable Analytics to Help Make Snips Better et Enable Heartbeat Signal.

La première permet de changer le service en charge d'effectuer la reconnaissance vocale. Par défaut, c'est l'Automactic Speech Recognition (ASR) de Snips en local qui est utilisé, mais il est aussi possible de passer par Google ou bien de sélectionner un mode en langage naturel uniquement. Laissez le paramètre par défaut sur la première option.

Les deux autres options sont activées par défaut. L'une concerne l'envoi automatique de données d'utilisation anonymisées. Après avoir mis en avant l'importance de la confidentialité, Snips explique également avoir besoin d'« améliorer son produit » et donc « comprendre comment les gens l’utilisent ».

« En cochant cette case », qui est en fait cochée par défaut, « vous permettez à Snips de collecter des données d'utilisation anonymes, telles que la fréquence à laquelle vous avez effectué une requête et si elle a échouée. Votre identité, le contenu de votre demande, la réponse, votre voix ou autres données sensibles ne seront jamais collectés », précise l'éditeur.

Enfin, la dernière option envoie une notification anonyme pour chaque appareil utilisant Snips. Dans les deux cas, nous aurions préféré que l'activation ne se fasse pas par défaut. Ou au minimum que le choix soit proposé lors de la création de l'assistant.

Snips

Sam, c'est celui qui installe

Maintenant que notre assistant est créé, laissons de côté le site de Snips. Pour la suite des opérations, il faut lancer un terminal. Sous Windows cela passe par l'invite de commandes accessible via la commande cmd à taper dans le menu démarrer ou dans la fenêtre qui apparaît après avoir pressé les touches Windows + R.

L'installation de Sam (Snips Assistant Manager), passe par le gestionnaire de paquets de Node.js, npm : 

npm install -g snips-sam

Si vous obtenez un message d'erreur indiquant que npm n'est pas disponible, c'est probablement que vous avez sauté l'étape d'installation de Node.js. Pas de panique, il est toujours temps de le faire.

Sam est une interface en ligne de commande (CLI) développée par Snips. Son but « est de configurer et gérer facilement un Raspberry Pi et d'autres machines similaires directement depuis votre ordinateur, sans avoir besoin de créer une session SSH et de saisir des commandes complexes », selon les développeurs.

La prochaine étape est de vous connecter à votre Raspberry Pi, via Sam justement. Pour cela, il suffit de saisir la commande suivante, puis d'entrer le nom d'utilisateur (Pi par défaut) et le mot de passe (Raspberry, ou bien le vôtre si vous avez eu la bonne idée d'en changer) : 

sam connect adrres_ip_de_votre_raspberry_pi

Si vous ne connaissez pas l'IP de votre Raspberry Pi, la commande sam devices peut vous aider. Si un message d'erreur indique Didn't find the ssh-keygen.exe c'est que vous avez probablement oublié d'installer Git. Là encore, il n'est pas trop tard pour y remédier.

La prochaine commande permet (enfin) d'installer Snips sur le micro-ordinateur, via une commande simple :

sam init

Une fois terminé, le Raspberry Pi redémarre. Vous pouvez alors exécuter la commande sam status pour vérifier l'état de Snips sur le Raspberry Pi. Si plusieurs services sont arrêtés, pas de panique c'est normal à ce stade. Vérifiez simplement qu'en face de « Status » soit bien indiqué « Live » avant de passer à la suite des opérations.

Snips

Déploiement de l'assistant sur le Raspberry Pi

La prochaine étape est de connecter Sam à votre compte Snips (c'est maintenant qu'il faut se souvenir de ses identifiants). Là encore, rien de plus simple puisque la ligne de commande est la suivante : 

sam login

Pour installer votre assistant, deux possibilités (au choix) : 

sam install assistant
sam install assistant -i proj_xxxx

Dans le premier cas, sam vous listera la liste des assistants de votre compte, vous n'avez plus qu'à en choisir un à l'aide des flèches vers le haut ou le bas. Si vous n'avez créé qu'un seul assistant, il sera automatiquement sélectionné.

Dans le second cas, il faut vous rendre sur la page de votre assistant sur le site de Snips, puis cliquer sur Deploy Assistant en bas à droite de la page. Copiez la ligne de commande affichée, avec la référence du projet (proj_xxxx) et collez-là dans le terminal.

<>En fonction des options et du nombre d'applications dans votre assistant, l'installation peut prendre plus ou moins de temps. Avec la météo et les codes postaux, une poignée de minutes étaient nécessaires dans notre cas. Notez que des fichiers sont récupérés depuis GitHub, ce qui est normal puisque le code source des deux applications que nous avons sélectionné s'y trouve :

Snips

Jongler avec entrées et sorties audio 

Maintenant, c'est fait : l'assistant est installé sur le Raspberry Pi, il n'y a plus qu'à brancher des haut-parleurs et un micro... mais pas facile avec une seule prise jack par défaut sur le micro-ordinateur.

Deux possibilités s'offrent à vous : un micro USB ou une carte son externe, elle aussi en USB. Nous avons opté pour la seconde avec une carte à moins de 60 centimes d'euros (référence CL-SU4CHA), avec deux sorties jacks de 3,5" pour un casque et un micro. Une fois branchée, elle est automatiquement détectée et nous n'avons pas eu besoin d'installer le moindre pilote. 

Il faut maintenant configurer les entrées/sorties audio, via la commande suivante : 

sam setup audio

Snips vous demande alors si vous disposez du Maker Kit de Snips. Il comprend un Raspberry Pi 3 B+, un module ReSpeaker équipé de deux microphones et un haut-parleur, une carte microSD de 4 Go et une plaque pour fixer l'ensemble. Il n'est par contre plus disponible pour le moment. Ce n'était pas notre cas, nous avons donc pressé la touche n avant de valider.

Sam affiche alors la liste des sorties audios disponibles. Notre Raspberry Pi 3B en a deux par défaut :

card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]

La première correspond à la prise jack, la seconde à la sortie HDMI. Si, comme nous, vous avez installé une carte son USB, elle devrait apparaitre sous la référence card 1. Choisissez la sortie que vous voulez à l'aide des flèches (haut/bas), puis validez. N'ayant qu'une seule entrée microphone sur la carte son USB, Sam ne nous demande rien de plus.

Snips audio setup

Vous pouvez alors vérifier que tout fonctionne correctement, aussi bien le microphone que le haut-parleur :

sam test speaker
sam test microphone

La première commande fait tourner en boucle une piste audio répétant inlassablement « front left, front right ». La seconde enregistre ce qui est capté par le microphone et vous fait ensuite écouter l'enregistrement. Si les deux tests sont concluants, vous pouvez commencer à utiliser les applications de votre assistant vocal Snips. 

Jarvis, quelle heure est-il ?

Voici quelques commandes qui fonctionnent dans notre cas : « Jarvis, quelle heure est-il ? », « Jarvis, quel est le code postal de Bordeaux ? », « Jarvis, dans quel département se trouve La Rochelle ? », etc. Les premières ne posent pas de soucis particuliers, mais l'assistant nous annonce la Haute-Saône (département 70) dans le dernier cas.

Alors certes il existe un « petit village à proximité de la RN19 » selon le site de la mairie, de 41 habitants en 2015 selon l'Insee, mais ce n'est pas spécialement cette réponse que nous attendions. Alexa et Google Assistant ne s'y trompent d'ailleurs pas et parlent bien de la ville de La Rochelle dans le 17. Dans le cas présent, ce n'est pas tant Snips qu'il faudrait modifier (la reconnaissance vocale marche bien), mais l'application en charge de traiter la demande.

En cas de problème, ou simplement par curiosité pour suivre le fonctionnement de Snips, vous pouvez lancer la commande suivante pour afficher les logs de vos demandes, les mots reconnus et l'interprétation qu'en fait de l'assistant numérique :

sam watch
snips

Vous pouvez aller plus loin, de nombreuses possibilités étant proposées. La documentation complète de Snips est ici.

Encore (beaucoup) de travail sur le Store

Il ne faudra par contre pas en demander davantage à Snips sans installer d'applications supplémentaires... et cette étape peut rapidement devenir une compliquée à cause de l'App Store. Il existe en effet de nombreux doublons (fork) – plus d'une quinzaine rien que pour JeedomOfficiel – sans pouvoir identifier l'original car toutes les applications portent le même nom.

Interrogé, Snips nous explique avoir suivi « deux principes clés » pour sa marketplace : « ne pas avoir d'autorité centrale et distribuer la majeure partie de la valeur créée à la communauté ». Pour les doublons, « une nouvelle version de l’App Store permettant de cacher les doublons (fork) sous l’original » est en préparation.

En attendant, l'application JeedomOfficiel développée par Valf (le JeedomOfficiel vraiment officiel) « va être transférée sous le compte de « Snips » pour une meilleure visibilité ».

Ce n'est pas tout : « la nouvelle version de la console que nous préparons va clairement nettoyer l’App Store et permettre de filtrer plus facilement en fonction de ses besoins (App forkés, App original, App + de X votes, App + de X commentaires, ect) ».  En effet, de nombreuses applications ne fonctionnent pas correctement après les avoir installées avec les paramètres par défaut, bien souvent c'est d'ailleurs la même erreur qui revient en boucle : « The session was ended because one of the component didn't respond in a timely manner ».

Nous avons également interrogé Snips sur le sujet, sans réponse pour le moment.

snips marketplace

Sam peut mettre à jour l'assistant, mais pas le supprimer

Lors de nos différents essais, nous avons ajouté/supprimé des applications à notre assistant, puis déployé la mise à jour sur notre Raspberry Pi 3B via la commande suivante :

sam update-assistant

Par contre, nous n'avons pas trouvé de commande pour supprimer un assistant via Sam dans la documentation... et c'est normal selon Snips puisqu'il n'y en a pas. L'éditeur nous confirme que « Sam ne supprime pas les précédentes actions, il faut le faire manuellement sur le Rasbperry Pi dans /var/lib/snips/skills ».

Dans ce cas, il faudra utiliser une connexion SSH, via Putty par exemple.

Vers un assistant tout en un

Si la solution du Raspberry Pi peut être intéressante pour les bidouilleurs et autres développeurs, qui sont incités par Snips à participer à son projet et s'en emparer, le grand public reste en attente d'une alternative clé en main aux assistants vocaux dont le modèle économique repose sur la collecte de données.

Pour cela, Snips travaille à sa propre enceinte connectée. L'année dernière, ses équipes étaient au Computex de Taïwan pour trouver des partenaires. Depuis, des annonces ont été faites pour indiquer que Snips Air devrait sortir dans le courant de l'année prochaine. Reste maintenant à tenir cette promesse.

Ce contenu est désormais en accès libre

Il a été produit grâce à nos abonnés, l'abonnement finance le travail de notre équipe de journalistes.

ou choisissez l'une de nos offres d'abonnement :

21 commentaires
Avatar de odoc Abonné
Avatar de odocodoc- 21/12/18 à 13:48:27

Merci, je crois que je sais à quoi je vais occuper mon week end ;) Une question : est-il possible de récupérer le texte reconnu pour le traiter de son côté ? j'ai un peu de mal à voir la modularité du truc (bon je pourrais me taper la doc aussi ...).

J'ai un système domotique maison reposant sur la reconnaissance via google chromium sur un Rpi. Un bête javascript envoie ensuite le texte reconnu à une appli maison qui se charge du reste. Mais si je pouvais me passer de google ça serait royale ;)

Avatar de Lyaume Abonné
Avatar de LyaumeLyaume- 21/12/18 à 13:51:50

Ce genre de dossier est super intéressant. Le système à l'air encore jeune mais il se pourrait bien que je franchisse le cap lorsque j'aurais du temps à perdre. Le tout couplé à un système domotic pour faire le fainéant genre "Jarvis ferme les store" qui répond bien et ce sera top. Merci ! :yes:

Avatar de guildem Abonné
Avatar de guildemguildem- 21/12/18 à 14:03:57

Pour information, bien qu'il implémente par défaut la reconnaissance de Google, il y a aussi Kalliope qui est un excellent assistant et permet de fonctionner avec plusieurs autres systèmes de reconnaissance (et même de configurer pas mal de choses).

Pas forcément mieux que celui de la news, différent, mais à tester pour les bricoleurs ;)

Avatar de pelotio Abonné
Avatar de pelotiopelotio- 21/12/18 à 14:12:57

Super article. Ca donne envie de tester! Comme déjà dit, couplé avec une solution domotique (maison si possible) ca peut être sympa. Mais bon, faudrait déjà que je finisse d'installer mon réseau et ma baie, que je fasse un peu de code pour la domotique... Mais c'est sympa ces solutions locales. C'est vrai que si ca devenait un peu plus "grand public" ca m'aiderai à pas y passer trop de temps.

Avatar de gathor Équipe
Avatar de gathorgathor- 21/12/18 à 14:15:51

(quote:38535:odoc) Merci, je crois que je sais à quoi je vais occuper mon week end ;) Une question : est-il possible de récupérer le texte reconnu pour le traiter de son côté ? j'ai un peu de mal à voir la modularité du truc (bon je pourrais me taper la doc aussi ...).J'ai un système domotique maison reposant sur la reconnaissance via google chromium sur un Rpi. Un bête javascript envoie ensuite le texte reconnu à une appli maison qui se charge du reste. Mais si je pouvais me passer de google ça serait royale ;)

Oui, comme indiqué dans l'article, il est possible de développer des applications maison ;) La documentation Snips est dispo ici https://docs.snips.ai/getting-started/quick-start-console#step-3-create-an-app

Avatar de Wirby Abonné
Avatar de WirbyWirby- 21/12/18 à 14:41:43

J'avais testé Snips il y a quelques mois, mais j'avais été déçu par plusieurs points :

  • la synthèse vocale qui était très mauvaise, on comprenait à peine ce qui était dit et ça grésillait très fort (à voir si ça venait de l'enceinte que j'avais branchée sur le Pi)
  • la reconnaissance qui marchait mal, tout le début de ma phrase après le wake word étant coupé (environ 2 secondes), ce qui rendait ma question incomplète, et donc incompréhensible par le système. Même en marquant une pause après le wake word, ça tronquait systématiquement.
  • peu d'applications dans le store, notamment pour ce qui est lecture de musique. Je me rappelle avoir vu un logo Spotify sur une capture du site, mais l'application n'a pas l'air d'exister...
  • j'avoue aussi que je n'ai rien compris à l'histoire d'achats de tokens Snips Air... D'ailleurs, ça serait intéressant d'aborder le sujet dans l'article je trouve.

Dommage, j'aimerais vraiment une solution qui tourne entièrement en local, espérons que ça s'améliore !

Édité par Wirby le 21/12/2018 à 14:42
Avatar de odoc Abonné
Avatar de odocodoc- 21/12/18 à 14:43:55

(quote:38540:gathor) Oui, comme indiqué dans l'article, il est possible de développer des applications maison ;) La documentation Snips est dispo ici https://docs.snips.ai/getting-started/quick-start-console#step-3-create-an-app

Arf j'suis passé à côté :s merci de l'info. Franchement continuez comme ça, ce genre de dossier est vraiment top ;)

Avatar de odoc Abonné
Avatar de odocodoc- 21/12/18 à 14:52:50

(quote:38536:Lyaume) Ce genre de dossier est super intéressant. Le système à l'air encore jeune mais il se pourrait bien que je franchisse le cap lorsque j'aurais du temps à perdre. Le tout couplé à un système domotic pour faire le fainéant genre "Jarvis ferme les store" qui répond bien et ce sera top. Merci ! :yes:

Chez moi en ce moment c'est "jarvis imprime le fichier" et hop, la pièce maison sur laquelle je bosse imprimée en 3D ;)

Avatar de evilny0 Abonné
Avatar de evilny0evilny0- 21/12/18 à 17:20:44

Hah, je viens de commander un rpi pour tester Jasper... cet article tombe à pic, je ne connaissais pas Snips :).

Avatar de XyLiS Abonné
Avatar de XyLiSXyLiS- 21/12/18 à 18:45:32

(quote:38541:Wirby) j'avoue aussi que je n'ai rien compris à l'histoire d'achats de tokens Snips Air... D'ailleurs, ça serait intéressant d'aborder le sujet dans l'article je trouve.

Concernant les tokens : https://medium.com/snips-ai/snips-maker-release-2-0-34c6a84a2783

En gros c'est la monnaie du store vu que certaines app peuvent être payantes. 1 token = 0.026€

Il n'est plus possible de commenter cette actualité.
Page 1 / 3

2000 - 2019 INpact MediaGroup - SARL de presse, membre du SPIIL. N° de CPPAP 0321 Z 92244.

Marque déposée. Tous droits réservés. Mentions légales et contact