Rhasspy et node-red

Test de bon fonctionnement

Voilà ! On y est, on va pouvoir tester notre gestionnaire d’intent node-red. Bon, pour l’instant il ne sait gérer que notre intent de test, mais c’est déjà pas mal.

Donc je résume :

  1. Rhasspy est configuré pour envoyer les intents détectées sur notre node-red
  2. node-red détecte lorsque l’intent disBonjour est appelée et envoie la réponse à lire « Bonjour le monde ! »

Il nous reste plus qu’à vérifier si c’est le cas. Pour ça, on va sur la page d’accueil de notre Rhasspy et on refait comme tout à l’heure pour la détection d’intent, toujours sans oublier la case à cocher « Handle »

Et sous tes yeux ébahis (enfin tes oreilles), tu as « Bonjour le monde » qui sort de ton enceinte Rhasspy.

L’autre solution pour vérifier ce qui se passe, c’est d’utiliser Rhasspy-watch. Voici ce que j’obtiens :

[2020-05-03 01:01:54] [hotword] detected on site bureau, for model jarvis
[2020-05-03 01:01:54] [Dialogue] session with id bureau-jarvis-4a079039-016a-490e-8dfd-23ffc20fab5a was started on site bureau.
[2020-05-03 01:01:54] [hotword] was asked to toggle itself 'off' on site bureau
[2020-05-03 01:01:54] [Asr] was asked to listen on site bureau
[2020-05-03 01:01:56] [Audio] record wav file saved for site bureau. name = 20200503010156648449_bureau_record.wav
[2020-05-03 01:01:56] [Asr] captured text 'dit bonjour' in 1.788943523002672s on site bureau
[2020-05-03 01:01:56] [Asr] was asked to stop listening on site bureau
[2020-05-03 01:01:56] [hotword] was asked to toggle itself 'on' on site bureau
[2020-05-03 01:01:56] [Nlu] was asked to parse input 'dit bonjour'
[2020-05-03 01:01:56] [Nlu] Detected intent disBonjour with confidence score 1.0 for input Dit bonjour
[2020-05-03 01:01:56] [Nlu] Intent disBonjour with confidence score 1.0 on site bureau
[2020-05-03 01:01:56] [Tts] was asked to say 'Bonjour le monde.' in None on site bureau
[2020-05-03 01:01:56] [Audio] play wav file saved for site bureau. name = 20200503010156911826_bureau_play.wav
[2020-05-03 01:01:58] [Tts] finished speaking with id 'bureau-jarvis-4a079039-016a-490e-8dfd-23ffc20fab5a'
[2020-05-03 01:02:24] [Asr] was asked to stop listening on site bureau
[2020-05-03 01:02:24] [Dialogue] session with id bureau-jarvis-4a079039-016a-490e-8dfd-23ffc20fab5a was ended on site bureau. Reason: timeout
[2020-05-03 01:02:24] [hotword] was asked to toggle itself 'on' on site bureau

Donc, on dirait que ça fonctionne comme ça devrait. Néanmoins, si on regarde les 2 dernières lignes, on constate que la réponse qu’on a renvoyée suite à la réception de l’intent disBonjour, a été envoyée en dehors du dialogue initié ligne 2.

Je ne sais pas si c’est moi qui interprète mal le fonctionnement ou si c’est la version pre-release qui fait ça.

En soi, ce n’est pas grave car ça fait exactement ce qu’on lui demande. C’est juste qu’il faudrait qu’on regarde comment faire pour un dialogue. Très bonne idée pour un prochain article.

Tu trouveras le json à importer dans node-red pour avoir le flow complet.

9 Comments

  1. Bonjour,
    eh bien j’ai du potasser un peu les principes des « Dockers » car j’ai effectivement mon Rhasspy sous docker et Node-RED sous l’environnement classique car livré avec mon Raspberry Pi OS FULL (32Bits) – bref le réseau coté Docker n’est pas tout à fait ce que je pensais .
    après moult péripéties, finalement, ma soluce à été de créer un macvlan afin que mon Rhasspy[Docké] puisse joindre le réseau local (eth0)
    $ docker network create -d macvlan \
    –subnet=192.168.1.0/24 \
    –gateway=192.168.1.1 \
    -o parent=eth0 my-macvlan-net
    ce qui donne :
    docker network ls
    NETWORK ID NAME DRIVER SCOPE
    4cb908bd20ea bridge bridge local
    fafc959be3eb host host local
    0709ee34b3ad my-macvlan-net macvlan local
    9f87a5a688ff none null local

    J’ai donc modifié le remote URL de l’Intent Handling par « http://192.168.16:1880/GestionIntent » et j’ai pu enfin voir mon objet dans la fenêtre debug de Node-RED …

    Merci pour la piste 😉

    Pascal

  2. Bonjour,
    J’ai quelques soucis de communication entre Rhasspy 2.5.0-pre et Node-RED
    le coté Rhasspy me semble correct voici le log (le fin)

    [DEBUG:2020-06-02 15:30:02,220] rhasspyserver_hermes: Sent 331 char(s) to websocket
    [DEBUG:2020-06-02 15:30:02,214] rhasspyserver_hermes: Handling NluIntent (topic=hermes/intent/disBonjour, id=7d377247-031a-4549-8a78-cbfc3743fb69)

    Mais le silence dans le log de Node-RED déployé …
    ma config Remote URL de Rhasspy -> http://127.0.0.1:1880/endpoint/GestionIntent
    (j’ai bien nommé le node ainsi maj/min)
    Je vais essayer de tester autrement le Node-RED pour valider celui-ci …
    Merci,
    Au fait « Ce site est vraiment formidable ! »
    Pascal

    Je vias continuer à chercher mais si vous avez une idée …

    • Bonjour Pascal,

      Comme ça, pas simple de voir ce qui cloche mais ce que j’essaierai dans un premier temps c’est juste de mettre le composant HTTP (ecoute intent) et juste derrière, le composant debug (msg.payload).
      Cela permettra juste de savoir si Rhasspy a bien envoyé quelque chose.
      Une autre chose aussi qui peut être tenter c’est d’accéder à l’URL depuis un navigateur (Internet explorer, chrome, edge ou firefox).

      Si il n y a toujours rien qui apparait dans la console de debug, alors cela serait plus « réseau » (firewall etc.)

      Autre point, si tu es avec Docker pour Rhasspy, il y a peut être une config réseau à configurer. Mais comme je n’utilise pas Docker…

      Voilà quelques pistes à étudier 🙂

      Ced

  3. Bonjour, vraiment super boulot j’adore !

    Je tente le coup avec node red et je n’arrive pas à connecter rhasspy à celui-ci.

    J’ai un pi4 maître basé sur hassio (hass + rhasspy + node red) et un satellite pi0 basé raspbian buster avec juste rhasspy.

    Bon an mal an, j’arrive à progresser un peu même si certaines choses restent floues dans ma tête sur qu’est-ce qui gère quoi et comment…

    Dans la section « Use a remote HTTP server to handle intents » je peux y mettre l’url
    Dans tout ça je bute sur un méchant problème : node-red ferme la porte à rhasspy d’un « 401 Client Error: Unauthorized for url: http://jarvis.lan:1880/gestionIntent« .
    En joignant directement cette adresse avec un browser j’obtiens toujours un écran de login.
    J’ai tenté le coup avec localhost à la place de jarvis.lan et j’obtiens ceci : HTTPConnectionPool(host=’localhost’, port=1880): Max retries exceeded with url: /gestionIntent (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’))

    Ce qui paraît pire. Ce message mène à d’autres fils de discussions relatifs à des BDD
    Mon google-fu ne m’a été d’aucune aide.
    J’ai vu que Frenck (le dev de l’addon) a prévu une option « leave_front_door_open » mais ça ne me plaît que modérément.
    En activant cette option, le problème d’accès est (temporairement) réglé.
    J’ai vu ensuite qu’il avait prévu le préfixe /endpoint, avec localhost j’ai toujours le message « Max retries », avec jarvis.lan j’obtiens un 404 -_-

    Je suis évidemment une bille avec node-red, mais vu le morceau j’ignore si je dois chercher dans node red, ou bien dans le module supervisor, dans une option docker ou dans les intégrations hassio

    Je précise que je ne manque pas de redémarrer les plugins après modif et que je n’ai pas oublié de cliquer sur « deploy ».

    Pierre

  4. Bonjour bravo pour la qualité de votre site et merci pour le partage….
    Après une lecture rapide de l’ensemble des tuto sur Rhasspy , je vais reprendre depuis le début ….
    Une question : avez vous déjà testé rhasspy sur raspberry pi4 ?
    merci d’avance

    • Bonjour,

      Moi, non, mais d’autres personnes oui et elles n’ont pas eu de soucis. Et il y a beaucoup de monde aujourd’hui teste rhasspy avec le pi 4.

      Ced

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.