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 --keyserver pgp.mit.edu --recv-keys F727C778CCB0A455

Bon, sur la dernière ligne, ça peut planter.

cedcox@snips-vm:~$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys F727C778CCB0A455
Executing: /tmp/apt-key-gpghome.BhJPiE7GPk/gpg.1.sh --keyserver pgp.mit.edu --recv-keys F727C778CCB0A455
gpg: keyserver receive failed: Pas de données
cedcox@snips-vm:~$

Il ne trouve pas la clé sur le serveur pgp.mit.edu. Dans ce cas, on change de serveur en essayant ceci :

cedcox@snips-vm:~$ sudo apt-key adv --keyserver gpg.mozilla.org --recv-keys F727C778CCB0A455
Executing: /tmp/apt-key-gpghome.BuKu2SeWeQ/gpg.1.sh --keyserver gpg.mozilla.org --recv-keys F727C778CCB0A455
gpg: key F727C778CCB0A455: public key "Snips Debian distribution <infra@snips.ai>" imported
gpg: Total number processed: 1
gpg:               imported: 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-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à.

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.

1 Comment

  1. 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.