Qu’est-ce que Docker ?
Avant l’installation de Rhasspy, il nous faut installer Docker. Mais qu’est-ce que Docker ?
Pour faire simple, Docker permet de créer “une bulle” indépendante pour une application. Cette bulle va contenir tout ce dont elle a besoin pour fonctionner comme des librairies spécifiques, d’autres applications, une configuration particulière d’une dépendance etc. Tout sera dans cette bulle.
Par exemple, admettons que j’ai besoin de 2 applications (qu’on appellera app1 et app2) mais que chacune d’entre elle à besoin d’une autre application qu’on appellera (appDepend). Problème, app1 a besoin de la version 1.0 de appDepend, et app2 a besoin de la version 2.0. Autant te dire que ça va se finir en eau de boudin cette affaire.
Hé bien il n y a plus aucun problème avec Docker. En effet, app1 et app2 auront chacune leur propre bulle dans chacune d’entre elle la bonne version de appDepend. app1 ne verra pas la version d’appDepend d’app2 et vice et versa !
L’autre avantage aussi d’utiliser Docker, c’est que tout le monde aura la même bulle. Et généralement, cette bulle est déjà configurée et prête à être utilisée. La classe !
Et pour finir, c’est aussi plus simple pour les développeurs quand il faut aller à la pêche au bug car celui-ci connait parfaitement le contenu de la bulle et tout le monde à la même version de chaque composant.
Bon, j’ai fait court et simple mais l’idée est là.
installation de Docker
L’installation de docker se fait extrêmement simplement :
sudo curl -sSL https://get.docker.com | sh
Et il n y a plus qu’à attendre que ça s’installe 🙂
Et on finit avec ça :
sudo usermod -aG docker pi
sudo reboot
Bonjour et merci pour le tuto !
Non spécialiste, j’ai forcément raté qq chose avec ce retour au lancement…
pi@raspberrypi:~ $ docker run -it -p 12101:12101 \
>
“docker run” requires at least 1 argument.
See ‘docker run –help’.
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
Run a command in a new container
pi@raspberrypi:~ $ -v “$HOME/.config/rhasspy/profiles:/profiles” \
>
bash: -v : commande introuvable
pi@raspberrypi:~ $ -v “/etc/localtime:/etc/localtime:ro” \
>
bash: -v : commande introuvable
pi@raspberrypi:~ $ –device /dev/snd:/dev/snd \
>
bash: –device : commande introuvable
pi@raspberrypi:~ $ –name rhasspy \
>
bash: –name : commande introuvable
pi@raspberrypi:~ $ rhasspy/rhasspy \
>
bash: rhasspy/rhasspy: Aucun fichier ou dossier de ce type
pi@raspberrypi:~ $ –user-profiles /profiles \
>
bash: –user-profiles : commande introuvable
pi@raspberrypi:~ $ –profile fr^C
pi@raspberrypi:~ $
J’apprécierais bien un petit coup de pouce !
Merci
Seb
Bonsoir Seb,
Le problème vient du fait que pour des raisons que j’ignore, ce que tu as tapé n’interprète pas correctement le caractère \ qui permet simplement de faire un retour à la ligne sans pour autant arrêter la ligne de commande que l’on est en train de taper. Cela permet d’éviter d’afficher une ligne de commande trop longue.
Essaye directement ceci :
docker run -p 12101:12101 -v "$HOME/.config/rhasspy/profiles:/profiles" -v "/etc/localtime:/etc/localtime:ro" -d --restart unless-stopped --device /dev/snd:/dev/snd --name rhasspy rhasspy/rhasspy --user-profiles /profiles --profile fr
Ced
bonjour je cherche a utiliser un haut parleur Bluetooth avec une installation de rhasspy en docker .. J’ai donc suivi ton tuto pour installer pulseaudio puis mon enceinte bluetooth ..
cela fonctionne vlc ou aplay envoie le son correctement vers le haut parleur en question
mais rassphy si je lui demande de faire une sortie tts vers pulse ca se plante avec une message d’erreur [ERROR:2021-03-17 18:16:13,256] rhasspyserver_hermes: Command ‘[‘aplay’, ‘-q’, ‘-t’, ‘wav’, ‘-D’, ‘pulse’]’ returned non-zero exit status 1.
J’ai l’impression que le docker n’accédé pas au serveur pulse audio est ce qu’il y a une option a ajouter
Bonjour Casimir,
Effectivement, le problème est que Docker doit essayer d’accéder directement au périph son (le fameux /dev/snd/xx). Du coup, ça ne passe pas par PulseAudio.
Une alternative serait de passer soit par le réseau : https://wiki.archlinux.org/index.php/PulseAudio/Examples#PulseAudio_over_network
Et sinon, peut-être une piste avec les socket unix : https://stackoverflow.com/questions/51859636/docker-sharing-dev-snd-on-multiple-containers-leads-to-device-or-resource-bu
Cédric
Salut Ced,
Merci pour ce super tuto ….encore !!!
Dis moi, est ce que c’est normal que je sois obligé de modifier mon rhasspy json en étant root, j’ai l’impression qu’il y a un truc pas bon, idem pour créer le dossier snowboy..
Merci tout plein
(t’as avancé sur ton miroir?)
Hey, Salut Snake !! Comment vas tu ?
Non, je n’ai pas avancé sur le miroir lol. Là je suis en train de refaire tout mon bureau et ça me prend un temps de fou ! Mais l’idée est toujours là 😀
Pour ton fichier Rhasspy, ça sent le rhasspy en tant que root. Si tu lances la commande :
ps aux | grep rhasspy
oups aux | grep docker
si tu passes par Docker, tu auras l’utilisateur qui lance le processus.Si c’est root, alors ca peut être normal qu’il est créé les fichiers en tant que root.
Pour corriger, relancer Rhasspy (ou docker) en tant que user et faire un chown
pour réaffecter les droits à tout le répertoire.
Tiens moi au courant ;)
Ced
Salut Ced,
bien merci…
bon ben moi non plus, j’ai laché l’affaire (pour l instant), je suis sur la 3D et je me prépare une petite machine CNC…bref.
Je vais regarder de ce côté la, car effectivement je pense que c’est juste une histoire de droit, mais dès l’installation, car je n’ai pas le fichier “snowboy” de créer….
je te dirais ça quand j’aurais remis le nez dedans.
Bon courage pour le bureau 😉 à bientôt
Snake
Salut Ced,
c’est tout bon (enfin presque) …
le wakeword est en place, ça répond, ça agit….reste plus qu’à changer les sons un peu trop hard à mon goût…bon courage 😉
Tu verras c’est vraiment un bon remplaçant de snips !
Bon courage à toi aussi 🙂
Bonjour, merci Cédric. Je vais essayer.
Bonjour, merci pour le tuto. Je suis en train de faire mon installation.
j’ai une petite question à propos du lancement du docker.
avez vous une astuce pour lancer le docker au démarrage du RPi ?
J’ai essayé de créer un service mais je fais une erreur.
Merci d’avance
Bonjour Charly,
Essaye de modifier la ligne de démarrage du conteneur par ceci :
docker run -d --restart unless-stopped (le reste de la ligne de commande)
Cédric