Tu l’as réclamé haut et fort, hé bien le voici, un article sur comment configurer Rhasspy et ses satellites 🙂
Pour ce petit tutoriel, je serai équipé d’un raspberry pi 3B+ pour notre Rhasspy maître et d’un raspberry pi 0 pour notre Rhasspy satellite. Pour ce qui est de l’audio, le 3B+ sera équipé d’un ReSpeaker 4-Mic Array et le pi 0 sera équipé d’un respeaker 2 mic hat. Les 2 raspberry seront installés avec la version lite Raspberry Pi OS 2020-08-20 kernel 5.4.
Nous verrons comment configurer les échanges avec le protocole de dialogue natif de Rhasspy.
En bonus, je mettrai aussi la configuration pour ceux qui auraient leur Rhasspy maître sur une VM (donc sans périphérique audio).
Alors, ce que je te propose dans cet article est une solution parmi d’autres. Je ne parlerai pas des APIs HTTP par exemple. Et de même, j’utiliserai un même serveur MQTT pour tout le monde et non un pour chaque Rhasspy. Cela tout simplement parce je ne veux pas avoir à gérer X connexions à des serveurs MQTT depuis mon nodered.
Néanmoins, si tu es à l’aide avec l’anglais, tu retrouveras plus d’infos sur cette page.
Les pré-requis
On commence à en avoir l’habitude, voici les liens pour les pré-requis.
- Installer Raspbian sur un raspberry (de préférence sans interface graphique)
- Activer le wifi et le SSH
- Configurer raspbian
- Installer un respeaker
Bonjour Cédric,
J’ai suivi le tuto mais j’ai un problème avec l’étape TTS
J’ai un setup basé hassio (mosquitto + node-red + rhasspy configurés aux petits oignons)
Tout parle à tout, pour l’instant je n’ai que le satellite qui capture la voix.
Le satellite détecte le mot mais s’engage ensuite une partie de ping-pong stérile entre des services si bien que l’enregistrement semble ne jamais se faire.
J’ai testé différents périphériques audio (inutile puisque le mot est détecté)…
Les messages mqtt passent sans souci
Voici un extrait de la sortie avec rhasspy-watch (compliments pour cet excellent script !) suivi des logs du satellite :
https://0bin.net/paste/+cbijBbZ#-/uR9zAxE2/hDivXY/M21Gwr5ZRG+kRxbb1niK8gvlO
J’ai basé le tout sur pulse histoire d’être sûr que les accès concurrents se fassent bien, mais il semblerait que le processus d’écoute du mot-clé empêche l’enregistrement de la commande vocale.
Merci
Bonjour Cedcox,
J’ai suivi ton tuto à la lettre et tout fonctionne.
Par contre à la fin tu dis ne pas avoir configuré de gestionnaire d’intent,
mais j’en est un en Remote http pour Jeedom sur le master. Il fonctionne très bien en passant par le master, mais pas par le satellite bureau.
Le texte est bien reconnu sur le master, mais l’Intent Handling n’est pas exécuté.
Faut-il modifier un truc ?
Merci d’avance…
génial votre tuto
Je vais me lancer très bientôt !
Bravo pour tout ce boulot
David
Bonjour Cedcox,
Merci pour ton avis.
Je vais me laisser tenté d’essayer un environnement virtuel sur le satellite pour voir si je m’en sort en suivant tes tutos et si concluant le master y passera 🙂 quand je mettrai MQTT pour peut-être un gain de réaction car j’ai entre 3 et 5s sur le commandes.
Merci et bonne journée
Bonjour Hervé,
Si ton master est en Docker et que tu suis le tuto, n’oublie pas d’ajouter ceci à ta ligne de commande de démarrage Docker :
-p 1883:1883
après-p 12101:12101
pour rendre accessible MQTT à ton satellite. 🙂 .Ced
Bonjour Cedcox,
Question générale :
Vu les évolutions possibles de RHASSPY. Quelle type d’installation est plus la même d’être fiable et pérenne dans la durée :
Master + Satellite dans un environnement virtuel ou Master + Satellite dans un environnement Docker (j’ai vu sur le GitHub) que la version Docker du satellite était dépréciée au profit du virtuel ou alors Master Docker + Satellite dans un environnement virtuel.
Merci de ton avis éclairé.
Bonjour Hervé,
Tu as mis le doigt sur le soucis, c’est au bon vouloir des développeurs 🙂 .
Faire une image docker prend du temps pour les devs mais tu es à peu près sûr d’avoir un truc qui fonctionne avec tous les composants nécessaires, dans la bonne version, enfermés dans un conteneur et donc sans interaction avec ce qui est déjà installé sur le raspberry.
D’un autre côté, l’environnement virtuel python est plus pratique pour les mises à jour et pour les interactions avec des composants qui seraient en dehors du conteneur Docker.
Pour un minimum de problème, surtout si il y a déjà autre chose d’installée, le mieux est Docker. Si un jour tu veux supprimer Rhasspy, on supprime le conteneur et hop ! Par contre, difficile de le bidouiller quand il y a un problème.
Pour un maximum de possibilité et de facilité de dépannage, l’installation et le lancement via un environnement virtuel est plus pratique. Par contre, il faudra être un peu plus soucieux dans les dépendances etc. Il faut aussi être un peu à l’aise avec la ligne de commande.
En résumé, je dirai qu’il faut essayer les 2 et prendre celui qui semble le plus adapté (je sais, ce n’est pas une réponse 🙂 ). Après, moi, personnellement, je ne suis pas très Docker en général 🙂
Ced
Bonsoir Ced.
BINGO !! ça fonctionne avec Buster Lite.
Dans Docker c’est bien l’environnement Buster Desktop
qui pose le problème de téléchargement des fichiers Kaldi.
En revanche comme dans la version sans Docker, je me retrouve avec un test audio qui parle beaucoup trop vite. j’avais précédemment modifié le fichier .asoundrc en ajoutant ” rate 48000″
Mais cette fois je suis infoutu de trouver ce fichier dans mon conteneur rhasspy
Je te sollicite une nouvelle et dernière fois, pour m’aider à modifier ce fichier de configuration
Je te remercie par avance
Bonjour Tycharles,
Le mieux est encore de modifier directement le fichier /etc/asound.conf (pas dans le conteneur).
Bien évidemment on sauvegarde au cas où avant :
sudo mv /etc/asound.conf /etc/asound.conf.save
🙂
Ced
Bonsoir Ced
J’arrive à faire un ping vers l’extérieur depuis mon conteneur
Caramba… J’aurai presque préféré que ça fonctionne pas.
Je vais refaire une installation cette fois sur un Rasbian Buster Lite
Dans le pire des cas je vais me contenter de ma configuration en version 2.5.6 sans Docker qui fonctionne nickel
Quoi qu’il arrive je te tiens au courant
Encore merci pour ton boulot de documentation et ta réactivité
Bonsoir Ced.
Sur tes conseils j’ai donc non pas modifié, mais créé un fichier asound.conf dans le répertoire /etc.
J’ai bien résolu mon problème de lecture rapide du test audio. Dans mon Rhasspy je gère sans aucune difficulté mes intents avec Snowboy par défaut.
Tout est parfait. En revanche quand je veux créer mon Wake Word
OS Error: [Erno -9996] Invalid input devise (no défaut output devise).
J’ai cherché à modifier ma configuration Aplay avec un autre type de device par défaut, mais sans résultat.
Je soupçonne un conflit entre le nouveau fichier asound.conf créé dans /etc. & le fichier asoundrc.conf de mon profil dans Docker
Je ne trouve pas le fichier asoundrc dans mon profil Docker et si je dois en créer un, à quel endroit ?
Je te remercie par avance.
Bonjour Ced.
Je viens de refaire point par point l’installation complète de Buster desktop
et Rhasspy 2.5.7
Idem, je ne parviens pas à télécharger les fichiers Kaldi
Pour Répondre à tes questions
J’ai bien accès à la console http://192.168.0.3:12101
J’ai fait la commande sudo usermod -aG docker pi
En revanche je vais avoir besoin de tes compétences pour faire le test ping
depuis le conteneur vers l’extérieur.
Je crois avoir lu que tu préconises Buster Lite, peut être un problème de ce coté ?
ou peut-être faut il être connecté à la console en https ?
Je te remercie par avance
Bonjour Tycharles,
Effectivement, je n’installe que des versions lite. En effet, les raspberry ne sont pas des bêtes de course et comme de toutes façons, je n’ai pas besoin de l’interface graphique. Après il n’est pas impossible qu’il y’ait des interactions mais cela devrait quand même marcher.
Pour faire un ping depuis le conteneur :
$ $ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c79353b0837 rhasspy/rhasspy "bash /usr/lib/rhass…" 5 minutes ago Up 36 seconds 0.0.0.0:12101->12101/tcp affectionate_wilson
on récupère le nom du conteneur (aléatoire), ici : affectionate_wilson
Ensuite on ouvre un shell :
docker exec -it NOM_CONTENEUR /bin/bash
root@61adbb5c70cc:/#
Te voilà en root dans le conteneur.
Pour installer ping :
apt install iputils-ping
Et tu peux ensuite pinger et commande exit pour sortir.
Évidemment, après le redémarrage du conteneur, il n’aura pas sauvegardé les actions, et il est préférable que ce soit le cas pour garder un conteneur propre.
Ced
Bonjour Ced.
J’ai Rhasspy 2.5.6 version Debian (sans Docker) qui tourne nickel sur un Pi3B+.
En revanche je bute sur l’installation 2.5.7 avec docker (idem avec ver 2.5.6)
L’installation de Docker et la configuration de Rhasspy 2.5.7 c’est OK.
Mais impossible de faire le download des fichiers du profile (Kaldi, Snowboy, et…)
Reste bloqué dans l’attente du téléchargement, sans même donner une erreur.
Merci par avance pour le coup de main.
PS. Super boulot de traduction et d’explication.
Bonsoir Tycharles,
Alors comme ça, je dirais que tu as un problème avec la couche réseau de Docker. Ce qui est étrange car c’est censé marcher dès l’installation.
As-tu essayé de désinstaller docker et de le réinstaller ? As tu accès à la console ? Si oui ça voudrait dire que la redirection de port fonctionne.
Il faudrait que tu récupères le prompt shell de ton conteneur Rhasspy et que tu essayes un ping vers un site extérieur.
Tous mes articles sont fait avec un 3B+ donc si tu le suis à la lettre ça devrait marcher (sauf si y a un bug dans la 2.5.7 mais ça m’étonnerait beaucoup.
Je vais le rejouer au cas où pour m’assurer que l’article est toujours OK.
Ced
Bonjour Tycharles,
Je viens de réinstaller de 0 Rhasspy dans un conteneur Docker en suivant l’article à la lettre et j’ai bien Rhasspy qui télécharge les fichiers Kaldi. Pour snowboy, c’est à toi de le télécharger et de le mettre dans le répertoire snowboy du profil (voir cet article)
As tu bien fait cette commande ? :
sudo usermod -aG docker pi
Tiens moi au courant
Ced