installation de Snips sur debian 9 stretch

Installation de snips


Maintenant que nous avons une debian toute fraîche, passons à la suite.

Installation d’outils en pré-requis

Dans un premier temps, nous allons installer des paquets qui nous serons nécessaires à l’installation et la configuration.
Pour cela, on ouvre notre putty préféré et on se connecte à notre VM. Si tu ne connais pas putty, je t’invite à aller lire cet article : chapitre-5-se-connecter-a-distance-au-raspberry/

Le premier outil si il n’est pas installé, c’est « sudo »

$ su

Un petit su pour passer en root, on a pas trop le choix pour le moment

cedcox@snips-vm:~$ su
Mot de passe :
root@snips-vm:/home/cedcox#

Le petit caractère # nous dit que nous sommes bien en root. Installons sudo

# apt-get install sudo

Une fois ça fait, on va ajouter notre utilisateur au groupe « sudo » afin qu’il ait le droit de l’utiliser

# usermod -aG sudo cedcox
# exit

Évidemment, tu remplaces « cedcox » par ton login 🙂 . Exit permet de quitter la session root. testons tout de suite le sudo avec le paquet htop. htop est un petit utilitaire très pratique qui permet de vérifier les ressources utilisées. Ça correspond un peu au gestionnaire de performance sous windows mais en mode texte.

cedcox@snips-vm:~$ sudo apt-get install htop

Nous espérons que vous avez reçu de votre administrateur système local les consignes traditionnelles. Généralement, elles se concentrent sur ces trois éléments :

    #1) Respectez la vie privée des autres.
    #2) Réfléchissez avant d'utiliser le clavier.
    #3) De grands pouvoirs confèrent de grandes responsabilités.

[sudo] Mot de passe de cedcox : 

J’adore la phrase N°3. Je suis sûr que la plupart d’entre vous sauront d’où elle vient :p .
Une fois le mot de passe rentré, on a :

[sudo] Mot de passe de cedcox : 
cedcox n'apparaît pas dans le fichier sudoers. Cet événement sera signalé.
cedcox@snips-vm:~$

En fait tu dois fermer ta session et la ré-ouvrir donc, « exit » qui ferme putty, on rouvre putty, on se reconnecte et on relance la commande

cedcox@snips-vm:~$ sudo apt-get install htop
[sudo] Mot de passe de cedcox : 
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Paquets suggérés :
  strace
Les NOUVEAUX paquets suivants seront installés :
  htop
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 88,2 ko dans les archives.
Après cette opération, 224 ko d'espace disque supplémentaires seront utilisés.
Réception de:1 http://ftp.fr.debian.org/debian stretch/main amd64 htop amd64 2.0.2-1 [88,2 kB]
88,2 ko réceptionnés en 0s (337 ko/s)
Sélection du paquet htop précédemment désélectionné.
(Lecture de la base de données... 28121 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../htop_2.0.2-1_amd64.deb ...
Dépaquetage de htop (2.0.2-1) ...
Traitement des actions différées (« triggers ») pour mime-support (3.60) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
Paramétrage de htop (2.0.2-1) ...
cedcox@snips-vm:~$

Et cette fois ci, ça marche 🙂 . Je te laisse jouer un peu avec htop avant de passer à la suite de cet article

Maintenant que nous avons sudo, commençons par mettre à jour complètement le système d’exploitation

sudo apt-get update && sudo apt-get dist-upgrade

Puis installons les pré-requis :

sudo apt-get install -y dirmngr apt-transport-https curl software-properties-common unzip git 

Il va nous falloir aussi node.js :

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

Si ça se finit par un truc comme ça

## Run `sudo apt-get install -y nodejs` to install Node.js 10.x and npm
## You may also need development tools to build native addons:
     sudo apt-get install gcc g++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
     echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
     sudo apt-get update && sudo apt-get install yarn
cedcox@snips-vm:~$

C’est ce que c’est bon ! On va donc suivre ce qu’il nous demande :

sudo apt-get install -y nodejs

Si pas d’erreur, on passe à l’installation de snips

installation de snips

on va ajouter l’endroit de téléchargement des paquets de snips et la clé PGP. La clé c’est ce qui permet de s’assurer que ce qu’on télécharge n’a pas été corrompu pour des raisons diverses et variées.

sudo apt-add-repository non-free

Et le résultat :

cedcox@snips-vm:~$ sudo apt-add-repository non-free
'non-free' distribution component enabled for all sources.
cedcox@snips-vm:~$

On ajoute le lien de téléchargement dans un fichier accessible à apt

sudo bash -c 'echo "deb https://debian.snips.ai/stretch stable main" > /etc/apt/sources.list.d/snips.list'
sudo apt-key adv --fetch-keys  https://debian.snips.ai/5FFCD0DEB5BA45CD.pub

Ce qui devrait donner ceci.

cedcox@snips-vm:~$ sudo apt-key adv --fetch-keys  https://debian.snips.ai/5FFCD0DEB5BA45CD.pub
Executing: /tmp/apt-key-gpghome.dY4sRFjQ1j/gpg.1.sh --fetch-keys https://debian.snips.ai/5FFCD0DEB5BA45CD.pub
gpg: requête de la clef sur « https://debian.snips.ai/5FFCD0DEB5BA45CD.pub »
gpg: clef 5FFCD0DEB5BA45CD : clef publique « Snips Debian distribution <infra@snips.ai> » importée
gpg:       Quantité totale traitée : 1
gpg:                     importées : 1

cedcox@snips-vm:~$

Pour l’installation de snips, il va falloir s’assurer que sudo ne demande plus le mot de passe. Pour cela, on va exécuter cette ligne :

echo 'cedcox ALL=(ALL) NOPASSWD: ALL' | sudo tee --append /etc/sudoers > /dev/null

N’oublie pas que cedcox, c’est moi donc, change avec ton login :).
On se déconnecte, on se reconnecte et on teste

sudo apt-get update

Hop ! plus besoin de mot de passe. Évidemment en termes de sécurité, c’est plutôt moyen et on enlèvera ça à la fin de l’installation.

Bon ça tombe bien, on a fait le « apt-get update » pour tester notre config sudo, on peut donc passer à la commande suivante. Si tu n’as pas fait cette commande mais une autre (c’était ton droit), alors lance un « apt-get update »

sudo apt install -y snips-platform-voice snips-tts snips-skill-server snips-watch

On attaque là le vif du sujet puisqu’on installe tous les composants de snips.

sudo usermod -aG snips-skills-admin cedcox

On ajoute notre utilisateur au groupe « snips-skills-admin ».
Puis on se déconnecte et reconnecte (encore)

Il ne nous reste plus qu’à installer « sam ». Sam est un logiciel qui va nous permettre d’administrer de façon très simple snips

sudo npm install -g snips-sam

Testons tout ça pour voir si c’est ok

sam connect localhost

Il va te demander un login qui sera « pi » par défaut, bien évidemment, tu te connectes avec ton login. Ce qui devrait te donner :

cedcox@snips-vm:~$ sam connect localhost
? Enter username for the device: cedcox
? Enter password for the device: [hidden]
v Connected to localhost
Generating public/private rsa key pair.
Created directory '/home/cedcox/.ssh'.
Your identification has been saved in /home/cedcox/.ssh/id_rsa_snips.
Your public key has been saved in /home/cedcox/.ssh/id_rsa_snips.pub.
The key fingerprint is:
SHA256:Flovwzkld7BP2fMKXq5y/XJx+bXrObIfW7sbhn8vPoU Snips RSA key
The key's randomart image is:
+---[RSA 4096]----+
|          .      |
|           o o   |
|        + + + o  |
|       + B +   o |
|      . S . o ..o|
|       . + . +E++|
|            .oo=B|
|          . .oBo@|
|           o.o*^X|
+----[SHA256]-----+
i A public key has been generated and copied to the device at localhost:~/.ssh/authorized_keys
cedcox@snips-vm:~$

Jusqu’ici, les nouvelles sont plutôt bonnes.
ensuite, on se connecte avec notre compte snips web. Si tu n’en as pas, je te conseille d’aller sur cette page : installation-de-snips-sur-raspberry/5/
Connectons-nous

sam login

Si tu as enlevé tes moufles, ça te donne ça :

cedcox@snips-vm:~$ sam login
? Enter email used on the console: cedcox@coxprod.net
? Enter password used on the console: [hidden]
v Logged in
cedcox@snips-vm:~$

Il ne te reste plus qu’à installer ton assistant

sam install assistant

Normalement, tout devrait bien se passer à ce niveau

cedcox@snips-vm:~$ sam install assistant
Fetching assistants done
Found 1 assistant named coxprod_diy
Downloading assistant
Fetching assistants done
NLU training done
ASR training done
v Deploying assistant to localhost...
Checking for actions
v Installing snips-template and snips-skill-server
v Installing git package
Cloning skill Joseph.Heure from url: https://github.com/JDureau/snips-skill-heure
Clonage dans 'snips-skill-heure'...

v Installing pip and virtualenv. This could take a while.
v Generating virtual environment for snips-skill-heure

Checking actions for end-user parameters
Relaunching snips-skill-server
v Snips assistant is now running. Say hey_snips to start!
i Run sam watch to see the logs
cedcox@snips-vm:~$

Dans mon cas, l’assistant est juste composé d’une application qui donne l’heure mais toi, tu devrais déjà avoir un assistant bien rempli.

Un petit « sam status » devrait te donner ceci

cedcox@snips-vm:~$ sam status

Connected to device localhost

OS version ................... Debian GNU/Linux 9 (stretch)
Installed assistant .......... coxprod_diy
Language ..................... fr
Hotword ...................... hey_snips
ASR engine ................... snips
Status ....................... Live

Service status:

snips-analytics .............. 0.60.8 (running)
snips-asr .................... 0.60.8 (running)
snips-audio-server ........... 0.60.8 (not running)
snips-dialogue ............... 0.60.8 (running)
snips-hotword ................ 0.60.8 (running)
snips-nlu .................... 0.60.8 (running)
snips-skill-server ........... 0.60.8 (running)
snips-tts .................... 0.60.8 (running)

cedcox@snips-vm:~$

On pourra constater que le service « snips-audio-server » n’est pas démarré dans mon cas. Et ce n’est pas très grave car je n’ai pas de carte son sur ma VM et ce n’est pas le rôle de ce snips là.

Mais pour être plus tranquille (si tu n’as pas de carte son et que c’est une VM bien sûr), on va exécuter ceci :

sudo systemctl disable snips-audio-server

Si ta VM n’a pas de carte son

Néanmoins, j’ai remarqué que l’absence de démarrage correct du service « snips-audio-server » empêchait le service « snips-skill-server » de fonctionner directement du premier coup. j’étais toujours obligé de le redémarrer à la main après chaque reboot de la VM.

Du coup, j’ai mis en place un petit hack pas très très beau je l’avoue mais qui fonctionne.

sudo nano /lib/systemd/system/snips-skill-server.service

et dans la partie « {service] » on ajoute la ligne suivante :

ExecStartPre=/bin/sleep 3

ce qui devrait donner un truc du genre :

[Service]
Group=_snips-skills
User=_snips-skills
ExecStart=/usr/bin/snips-skill-server
Restart=always
RestartSec=5
ProtectSystem=strict
ProtectHome=true
ProtectControlGroups=true
ReadWritePaths=/var/lib/snips/skills /tmp
ExecStartPre=/bin/sleep 3

après, si c’est un peu différent, ce n’est pas important, ce qui est important c’est d’ajouter la ligne.
Celle-ci fait simplement une pause de 3 secondes avant de démarrer le service.

Je le répète, ce n’est pas beau mais à l’époque, je souhaitais avancer et donc je n’ai pas poussé plus l’analyse pour faire une modif plus propre.

20 Comments

  1. Bonjour
    Merci pour ce tuto mais je rencontre un problème lors de la commande sudo apt install -y snips-platform-voice snips-skill-server snips-watch
    J’ai les messages d’erreur suivants :

    E: Impossible de trouver le paquet snips-platform-voice
    E: Impossible de trouver le paquet snips-skill-server
    E: Impossible de trouver le paquet snips-watch

    J’ai cherché sur le forum de snips, testé en installant ntp, mais rien n’y fait.
    Une petite idée?

    Merci

  2. Bonjour Cedcox,
    Merci pour ta réponse.
    Oui, la carte est bien là (il n’y en a qu’une: ICH8 avec AC97), les périphs aussi (mic branché sur jack). Aplay fonctionne (avec Alsa ou Pulse).
    En fait, le pb semble celui de la restitution après un arecord.
    J’ai essayé divers paramètres dans asound.conf, aussi avec alsamixer (niveau sources capture), avec ou sans Pulse/Alsa dans Virtualbox (audio input activé)…
    Quand Sam rejoue le test micro la durée de lecture est bien celle de l’enregistrement…mais ça reste muet.
    (Le test avec VLC dans la VM ne fonctionne pas non plus, avec le même symptôme.)
    J’ai continué à chercher ailleurs (sites d’Alsa, Archlinux, Kernel…), mais je ne parviens pas à identifier l’origine du pb (carte, conflit Pulse/Alsa, qualité du mic…)…
    🙁

  3. Bonjour Cedcox,

    Saurais-tu m’orienter concernant :

    A – l’interaction entre la console web et la VM
    Snips dans une VM peut-il réagir à du texte saisi dans la console web ?
    Tous les services sont bien fonctionnels dans la VM.
    J’ai installé des apps du store, et connecté (ou non) avec les identifiants console,
    aucun feedback à une saisie texte lorsque je lance un sam watch.

    J’ai aussi tenté un satellite dans une 2e VM: les machines se trouvent bien sur un ping.
    mais sam ne trouve jamais aucun autre device (même en spécifiant des liens mqtt).

    J’ai parcouru tes tutos, la doc snips, le forum mais sans trouver de solution.

    Sans plus de résultat côté pare-feu…

    Y a-il des modifs à faire dans le fichier hosts (ou d’autres) ?

    B – Le test micro
    Audio input de la VM activé, fichier asound.conf paramétré, vérification avec alsamixer, mais snips semble ne rien détecter.
    A chaque lancement de test micro, snips-audio-server s’arrête, sam démarre le test…et le replay ne restitue aucun son.
    (hors VM, un test d’enregistrement micro avec VLC fonctionne correctement).

    Merci pour tout.

    • Bonjour Cairn,

      A) Il n y a aucune corrélation entre la console web (console.snips.ai) et le snips installé chez toi. L’entrée texte de la console web n’est là que pour vérifier/tester que test intents fonctionnent correctement.
      B) Est ce que tu as bien affecté une carte son à ta machine virtuelle ? Car ce n’est pas parce que tu as une carte son sur ton ordinateur physique, que celle-ci est ajoutée à ta VM. Est ce que la commande aplay -l te liste bien ta carte son ?

      Ced

  4. Bonjour à tous,
    Très beau TUTO pour installer SNIPS, mais je n’arrive pas à charger SNIPS sur une VMware avec Debian.9.
    Je butte sur le la ligne sudo apt-key adv –keyserver pgp.mit.edu –recv-keys F727C778CCB0A455
    Qui répond : gpg: keyserver receive failed: pas de données
    Si je passe sur : gpg.mozilla.org la réponse est :
    gpg: key F727C778CCB0A455: « Snips Debian distribution  » not charged
    gpg: Total number processed: 1
    gpg: unchanged: 1

    Je ne sais pas comment contourner ce problème.
    Merci de votre aide.

    • Bonsoir Jean-Paul,

      Je viens de vérifier, et il semblerait que la clé ait changée.
      Peux tu essayer avec celle-ci : D4F50CDCA10A2849
      (à la place de F727C778CCB0A455)

      Ced

    • Bonsoir Ced,
      Merci pour l’info, en effet j’ai le chargement des fichiers en utilisant gpg.mozilla.org, je n’ai pas essayé sur pgp.mit.edu
      Je continu le tuto et mon installation
      Encore merci pour l’aide

    • àCed
      J’ai répondu un peu vite, j’ai bien la réponse imported, mais ensuite
      gpg: no writable keyring found: non trouvé
      gpg: error reading ‘[stdin]’ failed: erreur générale
      gpg: total number processed: 0

  5. Salut,

    Juste pour information, j’ai installé Snips dans un conteneur LXC Unprivileged sur Proxmox, et je n’ai pas rencontré le problème que tu as cité pour le démarrage de snips-skill-server. C’est peut être plus intéressant pour ceux qui veulent juste le serveur 🙂

  6. Bonjour Ced, 🙂

    merci pour ton tuto mais il n’est plus à jour 🙁
    lors de l’installation de l’assistant(sam install assistant),le message ci-dessous apparait en rouge :

    Error setting up virtualenv, one or more actions might not be able to run. Reason
    DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won’t be maintained after that date. A future version of pip will drop support for Python 2.7.

    merci encore pour tes tuto 🙂

  7. Salut Cedcox, bon je ne lâche pas !!
    Dis mois, est-il possible d’installer snips sur une machine avec OMV et LMS de monter dessus, sachant que c’est un AMD PHENOM avec 8G de ram?
    La cohabitions de tout ce petit monde ne risque pas de foutre le bordel?
    Merci 😉

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*


Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.