[Plugin Tiers][Sujet Principal] JeeRhasspy

Bon je tease un peu …

La V2.5 de rhasspy sera là dans 15j normalement, sans doute avec une phase de beta, mais elle devrait apporter une achitecture master/satellite simplifiée et le support complet du protocole hermes :grin:

En attendant je viens d’intégrer les satellites dans le plugin :innocent: TTS dynamique en réponse à un intent etc tout marche nickel.

Capture

A priori pas de beta car çà risque fort de bouger. Donc j’adapterai ensuite.

En haut : béh … mon Jeedom alpha :smile:
En bas à gauche : le rhasspy master, container docker sur rpi4, installé en 2mins !
En bas à droite : un satellite, sur rpi zero + buster lite et rhasspy venv. Un peu plus compliqué mais tout marche nickel. Le satellite n’a que le wakeword custom comme le master, et le tts, tout le reste (asr, nlu, intents) sont sur le master.

Une fois tout çà finalisé et le plugin en stable, je ferai une doc là dessus. Avec quelques outils que j’ai développé à coté, que je partagerai.

Mais quand je vois la puissance du truc, customisable à mort et totalement sans internet … et ceux qui se prennent le choux quand google n’a plus accès à leur vie privée :rofl: :joy:

:beers:

4 « J'aime »

Est-ce que quelqu’un pourrait me donner des liens pour comprendre comment fonctionne Rhasspy ? Il est fonctionnel sur mon Odroid C1+, j’ai branché un micro de PS3 suite aux tests de Snips et voilà… j’accède à l’interface web et je suis déjà pas mal content :slight_smile:

Qui aurait des liens, de préférence en français, pour comprendre tout le vocabulaire des home assistant ? Merci :pray:

Je suis le sujet avec intérêt. Pour l’instant je reste sur SNIPS, mais dès que tout ça sera un peu fiablisé et plus simple d’emploi, je fonce :smiley:

Merci à toi !

En français tu trouvera pas grand chose.
J’ai commencé une doc sur des trucs et astuces et outils que j’ai fait pour rhasspy. Mais je la fait en anglais, je vois pas l’intérêt de ne pas partager avec le reste du monde.

Y’a des bases ici, notamment le schéma : https://www.bot-trends.fr/intelligence-artificielle-bot/

En gros un assistant c’est :

  • Un detecteur de wakeword (ou hotword). Il écoute constamment pour comparer/detecter ton wakeword
  • Une fois le wakeword détecté, un ASR écoute, et un détecteur de silence pour savoir quand tu commence et finit de parler. L’ASR est en charge de transformer l’oral en texte, selon un model (language model).
  • Une fois le texte décrypté, l’ASR l’envoit au NLU. Le NLU compare alors avec tes intents, slots etc et va définir quel intent a été demandé avec quels slots.
  • A partir de là, le NLU envoi un json avec intent/slots et d’autres infos (siteId, wakeword, confidence etc) à un intent handler. çà peut être une commande qui lance un script python à toi, le plugin jeerhasspy etc.
  • Et bien sur un moteur TTS, pour que l’assistant puisse « te parler »

En gros.

1 « J'aime »

Bonjour
Je suis le sujet aussi (et le chatting sur la community rhasspy) je galère un peu pour installer la version française, l’installation de jarvis était beaucoup plus simple mais rhasspy est peut être plus complet (ou paramétrable).
Merci à toi
PS peux tu expliquer l’intérêt et à quoi ça sert ?

Y’a pas grand chose à installer pourtant …

Tu fait un raspbian lite,
Tu install docker:

curl -sSL https://get.docker.com | sh
sudo usermod -a -G docker $USER

Et tu lance le container

docker run -d -p 12101:12101 \
      --name rhasspy-server \
      --restart unless-stopped \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      --device /dev/snd:/dev/snd \
      synesthesiam/rhasspy-server:latest \
      --user-profiles /profiles \
      --profile fr

Le reste se fait dans les settings de l’interface

J’ai commencé à écrire çà au cas où mais pas grand chose pour l’instant:

3 « J'aime »

Le master/satellite ?

En gros tu a un master dans la maison sur lequel tu définit tous tes intents, slots etc.
Et tu fait plein de satellites sur des pi 0 qui ont juste le wakeword et le tts, et qui vont renvoyer la reconnaissance d’intents sur le master. Donc tout tes intents sont à un seul endroit mais tu peux avoir un assistant dans chaque pièce si besoin.
Et chaque satellite sait où il est donc quand tu demande juste « allume la lumière » il allumera sa pièce à lui, si tu le défini comme çà.

Oui oui c’est bon ça marche, mais de temps en temps j’ai des « network error » je ne sais pas d’où ça vient

Là faut demander sur le community de rhasspy :wink:

Bonjour à tous,
Etant utilisateur (depuis peu de temps) de Snips sur un Seeed et un satellite, je souhaiterais migrer vers Rhasspy.
Quelqu’un pourrait-il faire part de son expérience dans le domaine en expliquant en gros les étapes qu’il a suivies pour cette « migration » ? Histoire de savoir ce qui peut éventuellement être récupéré et comment.
Ou ne vaut-il pas mieux acquérir un 2ème rhaspberry pour développer à son aise Rhasspy et garder les 2 systèmes en // jusqu’à ce que notre configuration de Rhasspy soit satisfaisante ?

Je vous remercie d’avance et bravo pour la réactivité par rapport à l’intégration de ces technologies dans Jeedom. C’est vraiment un plus : une fois qu’on utilise les commandes vocales, on ne sait plus s’en passer. On n’arrive même plus à presser un interrupteur pour allumer une lampe :smile:

Pascal

Perso j’ai été sur ma console, j’ai enregistré des fichier txt pour chaque intent et chaque slot. J’ai ensuite repris les termes des slots et les phrases avec la syntaxe de Rhasspy pour les recréer. C’est beaucoup plus rapide avec Rhasspy une fois la syntaxe comprise. J’ai gardé chaque intent et chaque slot dans des fichiers séparés :

  • profiles\fr\intents
  • profiles\fr\slots

Par contre, je viens de regarder, çà y’est la console SNIPS est morte …
On ne peux donc plus modifier quoique ce soit sur nos SNIPS. Le mien est encore en prod, mais Rhasspy est totalement fonctionnel et ne devrait pas tarder à prendre le relais.

Capture

Pour ceux qui veulent un wakeword custom avec Rhasspy et snowboy je viens de publier qql trucs là dessus:

Une fois la future version de Rhasspy out et le plugin en stable, j’essayerai d’écrire pas mal de trucs sur la mise en place Rhasspy-jeedom. Intents python, scenarios, logger avec jeeLog etc, tout est fonctionnel mais çà me servira aussi de pense bête :face_with_hand_over_mouth:

1 « J'aime »

Bonjour,

Merci pour le boulot.
Jusque là ca fonctionne bien pour moi.
J’ai mis un serveur ‹ central › qui gère le traitement des intent et des raspberry qui ecoutent et envoi les infos à jeedom. (oui c’est bricolage).

Raspberry avec Rhasspy en ecoute → « Serveur » Rhasspy qui traite le vocal recu → Intent envoyé au Raspberry qui transfert à Jeedom.
Encore un petit soucis avec le TTS je n’ai pas trouvé comment faire
Jeedom → « Serveur » → Raspberry satellite.

Mais je vais attendre les update avec une vrais gestion des satellite je pense.

Guillaume

Pour le TTS sur les satellite je l’ai en beta mais pas publié.

Si plusieurs sont dans cette conf, je peux la publier en attendant la futur version de Rhasspy ? Les betas servent à çà aussi …
Au pire, il faudra refaire l’importation de l’assistant et des intents après mais faut bien tester :grinning:

Actuellement tout marche, il faut juste demander un truc à chaque satellite pour qu’il soit crée dans le plugin. Après tu peux utiliser la commande tts du satellite, ou celle du master avec en title tag(siteId) donc le scénario répond automatiquement sur le device qui a reçu la demande.

Capture

Bon ben voilà j’ai poussé une nouvelle beta avec les satellites … :see_no_evil:

1 « J'aime »

MERCI ! Coeurs avec des raspberry !
je test cela ce jour ! :slight_smile:

«  »"
Bon comme je suis tres curieux j’ai testé a distance et j’ai vu mon chat faire un bon sur la camera… donc ca doit fonctionner
«  »
Update 2
Trouvé :slight_smile: il faut bricoler comme cela :


Juste cela ne suffit pas :

Petit update.
Le satellite apparait bien, le test en cliquant dessus est OK mais je n’arrive pas a le faire parler dans le scénario…

On dirait que il essaye de faire parler le ‹ serveur › et pas le satelitte.
Log serveur (essaye depuis un scenario) :
[INFO:88558920] quart.serving: 192.168.1.7:53502 POST /api/text-to-speech 1.1 200 37 88759
[DEBUG:88558917] InboxActor: → stopped
[DEBUG:88558916] PicoTTSSentenceSpeaker: speaking → ready
[DEBUG:88558914] PicoTTSSentenceSpeaker: ready → speaking
[DEBUG:88558832] PicoTTSSentenceSpeaker: [‹ pico2wave ›, ‹ -w ›, ‹ /tmp/tmpbtay726k.wav ›, ‹ -l ›, ‹ fr-FR ›, ‹ Bonjour ceci est un test depuis salon ›]

Log satellite (essaie depuis la conf du plugin en cliquant sur le satelite) / Pas de log avec le test depuis le scénario :
[INFO:3946289] quart.serving: 192.168.1.7:37672 POST /api/text-to-speech 1.1 200 24 3065238
[DEBUG:3946272] InboxActor: → stopped
[DEBUG:3946269] SnowboyWakeListener: paused → listening
[DEBUG:3946265] PicoTTSSentenceSpeaker: speaking → ready
[DEBUG:3943820] APlayAudioPlayer: [‹ aplay ›, ‹ -q ›, ‹ -D ›, ‹ sysdefault:CARD=ALSA ›]
[DEBUG:3943817] SnowboyWakeListener: listening → paused
[DEBUG:3943817] PicoTTSSentenceSpeaker: ready → speaking
[DEBUG:3943231] PicoTTSSentenceSpeaker: [‹ pico2wave ›, ‹ -w ›, ‹ /tmp/tmp3nepbuv4.wav ›, ‹ -l ›, ‹ fr-FR ›, ‹ salon, ceci est un test. ›]

Scénario :
« expressions »: [
{
« id »: « 172 »,
« scenarioSubElement_id »: « 131 »,
« type »: « action »,
« subtype »: null,
« expression »: « #[Rhasspy-Intents][TTS-salon][Speak]# »,
« options »: {
« enable »: « 1 »,
« background »: « 0 »,
« title »: «  »,
« message »: « Bonjour ceci est un test depuis salon »
},
« order »: « 0 »
}

un petit log en exécutant un scenario :
[2020-01-31 16:50:40][DEBUG] : [RhasspyUtils] <_request> POST | http://192.168.1.7:12101/api/text-to-speech?siteId=default | Bonjour ceci est un test fait depuis un scenario

PS : je sais je ne suis pas un bon testeur trop fouilli :slight_smile: les devs au boulot me le rapellent régulierement!

TL;DR :
Ca fonctionne super bien.
Il faut donc bien lui parler une fois pour que le satellite apparaisse.
Pour le faire parler j’ai du utiliser a chaque fois la commande sur le master avec tag(siteId), la commande direct sur le satellite ne réagit pas chez moi.
Merci ! A ta disposition pour faire tous les tests que tu veux.
Je vais provisionner quelques raspberry pour tester en le chargeant un peu.

1 « J'aime »

Si le test sur le satellite fonctionne, la commande tts du satellite devrait marcher. Un peu de mal à te suivre … :upside_down_face:

Mais comme je disais, je reste dans l’attente de rhasspy v2.5
A mon avis faudra encore qql bugfix, et à mon tour je stabiliserai le plugin en vue d’une stable.

En tout cas, je trouve déjà çà mieux que snips et plus facile, idem pour le plugin, çà risque d’être au top d’ici quelques semaines :hugs:

1 « J'aime »

Hello!
retour en 3.3.39. Alors hier jai tenté en vain en étant en raspbian stretch, mais cétait à cause de Rhasspy et son installation en utilisant un venv (issue connue ouverte chez eux). j’ai donc dist-upgrade en buster et jai fait quelques intent/scenarios. J’utilise des .wav car pas de micro pour le moment sur le rasp pour le moment, mais 0 soucis constaté ça marche nickel :smiley: :heart:

La seule chose que je remarque c’est le retour dans l’interface rhasspy qui me signale un

TypeError: Cannot read property ‹ name › of undefined

donc est-ce normal car tu ne renvois pas un json correctement formaté ou moi qui ai loupé un élément je ne sais pas, mais ça se passe comme je souhaite niveau scénario en tout cas!

je pense donc que tu peux descendre le require en 3.3 sans soucis car les seuls problèmes que jai eu cétait rhasspy et non le plugin :wink:

merci pour ce super boulot!