Rhasspy-watch

Analyse des messages

Je l’avais pour snips, donc je vais le refaire pour Rhasspy. On va regarder un peu ce que signifie tout ça.

une commande vocale complète

[2020-04-30 10:51:18] [hotword] detected on site bureau, for model jarvis
[2020-04-30 10:51:18] [Asr] was asked to stop listening on site bureau
[2020-04-30 10:51:19] [hotword] was asked to toggle itself 'off' on site bureau
[2020-04-30 10:51:19] [Dialogue] session with id 76956e9f-0aad-4f18-85a8-f3093c755197 was started on site bureau.
[2020-04-30 10:51:19] [Asr] was asked to listen on site bureau
[2020-04-30 10:51:22] [Audio] record wav file saved for site bureau. name = 20200430105122988518.wav
[2020-04-30 10:51:22] [Asr] captured text 'allume la lumière à trente pourcent dans le bureau' in 3.0s on site bureau
[2020-04-30 10:51:22] [Asr] was asked to stop listening on site bureau
[2020-04-30 10:51:22] [Nlu] was asked to parse input 'allume la lumière à trente pourcent dans le bureau'
[2020-04-30 10:51:22] [Nlu] Detected intent cedcox:allumerLumiere with confidence score 0.99828583 for input 'allume la lumière à trente pourcent dans le bureau
[2020-04-30 10:51:22] [Nlu] Intent cedcox:allumerLumiere with confidence score 0.99828583 on site bureau
           with slots :
               lights_device => Lumière (confidenceScore=0.5335989)
               intensity_percent => 30.0 (confidenceScore=0.9643166)
               house_room => bureau (confidenceScore=1.0)
[2020-04-30 10:51:23] [Dialogue] was ask to end session with id 76956e9f-0aad-4f18-85a8-f3093c755197 by saying 'ok'
[2020-04-30 10:51:23] [Tts] was asked to say 'ok' in fr on site bureau
[2020-04-30 10:51:23] [Audio] play wav file saved for site bureau. name = 20200430105123104461.wav
[2020-04-30 10:51:24] [Tts] finished speaking with id '76956e9f-0aad-4f18-85a8-f3093c755197'
[2020-04-30 10:51:24] [Dialogue] session with id 76956e9f-0aad-4f18-85a8-f3093c755197 was ended on site bureau. Reason: nominal
[2020-04-30 10:51:24] [Asr] was asked to stop listening on site bureau
[2020-04-30 10:51:24] [hotword] was asked to toggle itself 'on' on site bureau

Désolé, les couleurs ne sont pas respectées 🙁

Etape 1 :

[2020-04-30 10:51:18] [hotword] detected on site bureau, for model jarvis
[2020-04-30 10:51:18] [Asr] was asked to stop listening on site bureau
[2020-04-30 10:51:19] [hotword] was asked to toggle itself 'off' on site bureau
[2020-04-30 10:51:19] [Dialogue] session with id 76956e9f-0aad-4f18-85a8-f3093c755197 was started on site bureau.

On constate ici que le hotword a été détecté sur le satellite bureau. Du coup, il va désactiver la possibilité d’être re-détecté le temps de la commande. Et un dialogue s’engage avec un sessionId (qui permet de suivre le dialogue)

Etape 2 :

[2020-04-30 10:51:19] [Asr] was asked to listen on site bureau
[2020-04-30 10:51:22] [Audio] record wav file saved for site bureau. name = 20200430105122988518.wav
[2020-04-30 10:51:22] [Asr] captured text 'allume la lumière à trente pourcent dans le bureau' in 3.0s on site bureau
[2020-04-30 10:51:22] [Asr] was asked to stop listening on site bureau

Là, notre reconnaissance vocale se met en écoute pour enregistrer ce que demande l’utilisateur. Une fois qu’elle a reconnu la demande, elle s’arrête d’écouter.

Au passage, la ligne contenant n’est pas un message MQTT à proprement parler mais juste pour te prévenir que le stream audio de la demande a été enregistrée dans un fichier wav.

Etape 3 :

[2020-04-30 10:51:22] [Nlu] was asked to parse input 'allume la lumière à trente pourcent dans le bureau'
[2020-04-30 10:51:22] [Nlu] Detected intent cedcox:allumerLumiere with confidence score 0.99828583 for input 'allume la lumière à trente pourcent dans le bureau
[2020-04-30 10:51:22] [Nlu] Intent cedcox:allumerLumiere with confidence score 0.99828583 on site bureau
           with slots :
               lights_device => Lumière (confidenceScore=0.5335989)
               intensity_percent => 30.0 (confidenceScore=0.9643166)
               house_room => bureau (confidenceScore=1.0)

Le NLU se met alors en route pour transformer le texte de l’utilisateur en une intent et des slots

Etape 4 :

[2020-04-30 10:51:23] [Dialogue] was ask to end session with id 76956e9f-0aad-4f18-85a8-f3093c755197 by saying 'ok'
[2020-04-30 10:51:23] [Tts] was asked to say 'ok' in fr on site bureau
[2020-04-30 10:51:23] [Audio] play wav file saved for site bureau. name = 20200430105123104461.wav
[2020-04-30 10:51:24] [Tts] finished speaking with id '76956e9f-0aad-4f18-85a8-f3093c755197'
[2020-04-30 10:51:24] [Dialogue] session with id 76956e9f-0aad-4f18-85a8-f3093c755197 was ended on site bureau. Reason: nominal

L’intent a été correctement envoyée/récupérée par le gestionnaire des intents.

Ça ne veut pas dire que le gestionnaire des intents ne va pas faire des chocapics ! C’est juste que ce n’est plus du ressort de Rhasspy.

Du coup, un texte à lire sur le haut-parleur du Rhasspy satellite et le dialogue est fermé.

2 Comments

  1. Bonjour Ced,
    Tu m’as orienté sur ton script, en effet, c’est une très bonne base pour débuter sur MQTT, il y a pas mal de choses à récupérer !
    1- Y a t il un intérêt à dockeriser ton script (tu sembles le proposer), vu qu’il n’y a pas beaucoup de dépendances… ?
    2- Questions bêtes car je ne suis pas trop calé en python : pourquoi as-tu des fonctions vides (on_message, appelée par on_msg dans rhasspymqttclient.py) ?
    3- J’ai vu dans ton dossier Git, un projet SNIPS NLU… est-ce meilleur que fsticuffs ?
    4- En terme de reconnaissance d’intent, existe-il des fichiers setences.ini tout fait (il y en a qui traînent sur jeedom) qui fonctionnent bien (certains préconisent une seule intent avec plein de sentences) et qui peuvent servir de base de personnalisation ? Ton dernier lien du tuto “les sentences et les intents” ne fonctionne plus d’ailleurs.
    Merci !
    Damien

    • Bonjour Damien,

      Normalement, il est censé déjà être Dockerisable. J’ai fait le merge d’un utilisateur qui l’a fait. Mais j’avoue ne pas l’avoir testé 🙂 Pour ce qui est de l’intérêt, je dira que ça dépend de chacun ! Moi perso, non 🙂
      Pour les fonctions vides, même si elles apparaissent vides, elles ont un rôle dédié aux évènements (regarde ligne 262 à 264 de Rhasspy-watch.py). Ça permet de déclencher un évènement dont le code sera traité par le script principal.
      Snips NLU était le NLU de Snips. Snips n’existant plus, il a perdu un peu d’intérêt car pas mal de boulot si on souhaite l’utiliser. Certains ont été essayé de l’implémenter. Je crois qu’il y avait eu à un moment l’idée de l’intégrer à Rhasspy mais je ne sais pas ce que le sujet est devenu
      Pour les intents, non, il n’en existe pas des tout fait à ma connaissance. Peut-être sur le forum Jeedom

      @ pluche

      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.