[Plugin Tiers][Sujet Principal] JeeRhasspy

Hello,
J’ai mon intent qui est bien reconnu par le master, mais le déclenchement côté jeedom ne se fait pas, pourtant j’ai bien mon scénario de câblé sur l’intent… une idée ?


les logs du satellite (je n’ai aucun log sur le master, je ne pige pas pourquoi vu que l’intent n’existe que sur le master, pas le satellite):

[DEBUG:2020-07-28 11:15:50,853] rhasspyserver_hermes: <- NluIntent(input='allume la climatisation dans le salon', intent=Intent(intent_name='OnOffJeedom', confidence_score=1.0), site_id='sat-1', id=None, slots=[Slot(entity='action', value={'kind': 'Unknown', 'value': 'allume'}, slot_name='action', raw_value='allume', confidence=1.0, range=SlotRange(start=0, end=6, raw_start=0, raw_end=6)), Slot(entity='object', value={'kind': 'Unknown', 'value': 'climatisation'}, slot_name='object', raw_value='climatisation', confidence=1.0, range=SlotRange(start=10, end=23, raw_start=10, raw_end=23)), Slot(entity='room', value={'kind': 'Unknown', 'value': 'salon'}, slot_name='room', raw_value='salon', confidence=1.0, range=SlotRange(start=32, end=37, raw_start=32, raw_end=37))], session_id='sat-1-jarvis-4e2d111a-e7db-451e-8488-907b0f4a1992', custom_data=None, asr_tokens=[[AsrToken(value='allume', confidence=1.0, range_start=0, range_end=6, time=None), AsrToken(value='la', confidence=1.0, range_start=7, range_end=9, time=None), AsrToken(value='climatisation', confidence=1.0, range_start=10, range_end=23, time=None), AsrToken(value='dans', confidence=1.0, range_start=24, range_end=28, time=None), AsrToken(value='le', confidence=1.0, range_start=29, range_end=31, time=None), AsrToken(value='salon', confidence=1.0, range_start=32, range_end=37, time=None)]], asr_confidence=None, raw_input='allume la climatisation dans le salon', wakeword_id='jarvis', lang=None)
[WARNING:2020-07-28 11:15:46,519] rhasspyserver_hermes: Dialogue management is disabled. ASR will NOT be automatically enabled.
[DEBUG:2020-07-28 11:15:46,499] rhasspyserver_hermes: <- HotwordDetected(model_id='jarvis', model_version='', model_type='personal', current_sensitivity=0.5, site_id='sat-1', session_id=None, send_audio_captured=None, lang=None)


Tu a lancé la configuration du master et du satellite depuis le plugin pour que Rhasspy envoie les événements à jeedom ? Voir la doc.

C’est quelle version de jeedom ? L’interface n’est pas normale du tout (grosses icônes etc) ?!!?

1 « J'aime »

J’ai importé l’assistant, mais en effet j’ai zapé la partie configuration, ça doit venir de là le problème. Pardon Kiboost, je te fais perdre ton temps ;-(
je prends 10 min pour lire la odc et je reviens si je comprends pas un truc.

Et c’est quelle version de jeedom ?? Y’a plein d’incohérence l’interface n’est pas propre du tout, jamais vue ça. Histoire de savoir d’où ça pourrait venir, vraiment pas pro là donc core ou plugin si je peut y faire qql chose.

Ha, pour l’interface ne te tracasse pas, je suis simplement sous une instance nextdom, donc l’IHM est complètement revue.
Du reste tu avais raison, maintenant que j’ai configuré le master ça passe, mon scénario semble bien se déclencher ! Me faut encore bien comprendre les slots et je pense que je vais pouvoir utiliser ton plugin à merveille :slight_smile: merci pour tout ton taff

@kiboost ; peux tu partager ta config de wakeword. J’ai compris que tu utilisais snowboy, mais des faux positifs au début?
Quelle sensibilité?
utilises tu le wakeword perso?

Merci d’avance

1 « J'aime »

Hello à tous,
je débute dans la domotique depuis moins d’un an.
Je me suis équipé pour le moment d’ampoule Ikea Tradfri et de pas mal d’équipements Smartlife pilotable en Wifi et certains en Zigbee).
J’ai 2 instances de Jeedom une sur container sur mon NAS comme pré-production, pour tester des plug-in et les versions en beta par exemple) et mon instance de production sur une VM de ma Freebox Delta.
Comme beaucoup d’entre vous, je souhaite pouvoir fonctionner en limitant le besoin de connexions à Internet et aux Cloud (chinois et américains notamment). (Je compte ainsi par exemple utiliser le plug(in wifilight2 pour piloter mes équipements Smartlife.)
Je ne souhaite donc pas connecter et piloter toutes mes équipements ni via Alexa ni via Google Home et je recherche donc un assistant vocal pour piloter ma domotique qui fonctionne en local.
Je me suis intéressé pour le moment à Jarvis, qui me plaisait bien car le serveur était installé avec le plug-in, donc pas besoin de l’installer sur une autre appliance.
Mais je n’ai pas encore abouti, car le serveur ne détecte pas systématiquement mes équipements micro/speaker connectés à la Freebox Server via un HUB USB… et je n’arrive à déclencher aucune interaction.
En me renseignant sur d’autres topic du forum, on m’a donc conseillé de m’intéresser à Rhasspy et JeeRhasspy.
Mais avant de me lancer j’avais quelques questions pour bien comprendre où je vais.
1) JeeRhasspy est un plug-in pour Rhasspy et nécessite donc que Rhasspy soit installé « quelquepart »?
2) Rhasspy est un package dédié au Raspberry Pi et ne s’installe que sur Rhasbian? (Cela tombe bien j’ai prévu l’acquisition d’un RPi4 8Go à terme)
3) Mes micros et écouteurs devront donc se connecter en USB (Jack?) à ce Rpi?
4) Pourrais-je éventuellement piloter Rhasspy depuis un autre endroit que là où est localisé le RPi ? I.e. la partie commande vocale et retour peut-elle être déportée (autres micro sur des PC, application sur mobile, …)?
5) Au pire cela peut-il se faire via plusieurs instances de Rhasspy déployés sur d’autres appliance? I.e. les instances de Rhasspy peuvent communiquer et partager via MQTT par exemple?
Merci d’avance si vous avez des billes sur ce sujet!

Edit 1: @kiboost je pense que la notion de master et de satellite répond à ma question sur les différentes appliances qui communiquent
Je vais prendre le temps de relire plus en détail ce topic pour essayer de trouver des réponses à mes questions

1 « J'aime »

Bonjour à tous ! Encore un grand merci à toi @kiboost pour ce merveilleux plugin !

J’ai juste un léger soucis depuis l’installation de celui-ci, je n’ai plus accès aux résumés.
En effet normalement lorsque tu clique sur l’icone du résumé (entouré en rouge sur l’image) tu es redirigé sur une page qui te montre les équipement compris dans ton résumé, hors depuis que j’ai installer ton plugin ça ne fonctionne plus, j’arrive sur une page vierge. J’ai restaurer une sauvegarde avant l’installation de ton plugin et la ça refonctionne.
J’ai également remarqué qu’un titre (Rhasspy-Intents) s’affiche pendant le chargement de la page des équipement résumés puis disparait une fois la page complètement chargée (entouré en vert sur l’image), je ne sait pas si c’est obligatoirement une confusion avec ton plugin mais voilà je préfère te remonter le problème.

Bonjour à tous,

J’ai installé Rhasspy sous docker , tout fonctionne bien, il me reconnaît ainsi que les intents.

Sur Jeerhasspy installé sur le même raspberry, la connexion se fait bien , la configuration aussi se colle dans mon intent Handling et mes différents intents s’affichent.

Le problème est que quand je relie un intent à n’importe quel scenario qui se déclenche en action, rien ne se passe côté Jeerhasspy. Je vois bien la commande envoyée depuis rhasspy mais rien dans les loges côté Jeedom.
Dans les logs rhasspy, je vois qu’il passe par hermes hors quand je fais le test vocal depuis Jeedom il me sort l’adresse 192.168.1.2

Voici le fichier de conf ( j’ai remplacé l’a clé par des X):

{
    "command": {
        "webrtcvad": {
            "vad_mode": "3"
        }
    },
    "dialogue": {
        "system": "rhasspy"
    },
    "handle": {
        "remote": {
            "url": "http://172.17.0.1/core/api/jeeApi.php?plugin=jeerhasspy&apikey=XXXXX&plugin=jeerhasspy&type=jeerhasspy"
        },
        "system": "remote"
    },
    "home_assistant": {
        "key_file": "/home/pi/key.pem",
        "pem_file": "/home/pi/cert.pem"
    },
    "intent": {
        "system": "fsticuffs"
    },
    "microphone": {
        "arecord": {
            "device": "sysdefault:CARD=MS"
        },
        "system": "arecord"
    },
    "mqtt": {
        "site_id": "AssistantV2.5"
    },
    "sounds": {
        "aplay": {
            "device": "sysdefault:CARD=MS"
        },
        "system": "aplay"
    },
    "speech_to_text": {
        "pocketsphinx": {
            "open_transcription": true
        },
        "system": "pocketsphinx"
    },
    "text_to_speech": {
        "system": "picotts"
    },
    "wake": {
        "system": "snowboy"
    },
    "webhooks": {
        "awake": [
            "http://172.17.0.1/core/api/jeeApi.php?plugin=jeerhasspy&apikey=XXXXX&plugin=jeerhasspy&type=jeerhasspy"
        ]
    }
}

Les logs quand je lance le test audio dans JeeRhasspy sur Jeedom :

[2020-11-19 18:12:57][DEBUG] : [RhasspyUtils] <test> _siteId: AssistantV2.5
[2020-11-19 18:12:57][DEBUG] : [RhasspyUtils] <textToSpeech> _text: AssistantV2.5, ceci est un test. | _siteId: AssistantV2.5 | lang:
[2020-11-19 18:12:57][DEBUG] : [RhasspyUtils] <_request> POST | http://192.168.1.2:12101/api/text-to-speech?siteId=AssistantV2.5 | AssistantV2.5, ceci est un test.

Sinon rien ne se passe dans les logs Jeerhasspy quand je parle à « Snowboy ». Rhasspy reconnait mes intents mais ne communique pas à Jeedom, j’ai fais un test avec l’intent GetTime et ma commande ouvre le salon. Je sais ça n’a rien à voir mais c’est pouyr tester

Voici les logs Rhasspy:

[DEBUG:2020-11-19 18:15:32,587] rhasspyserver_hermes: Sent 398 char(s) to websocket
[DEBUG:2020-11-19 18:15:32,584] rhasspyserver_hermes: <- NluIntent(input='ouvre le salon', intent=Intent(intent_name='GetTime', confidence_score=1.0), site_id='AssistantV2.5', id=None, slots=[], session_id='AssistantV2.5-snowboy-acbfd6bc-27ea-461d-a3da-4f047f8edc82', custom_data=None, asr_tokens=[[AsrToken(value='ouvre', confidence=1.0, range_start=0, range_end=5, time=None), AsrToken(value='le', confidence=1.0, range_start=6, range_end=8, time=None), AsrToken(value='salon', confidence=1.0, range_start=9, range_end=14, time=None)]], asr_confidence=None, raw_input='ouvre le salon', wakeword_id='snowboy', lang=None)
[DEBUG:2020-11-19 18:15:27,325] rhasspyserver_hermes: <- HotwordDetected(model_id='snowboy', model_version='', model_type='personal', current_sensitivity=0.5, site_id='AssistantV2.5', session_id=None, send_audio_captured=None, lang=None)

Bonjour,

Merci pour le dev de ce plugin, il est très bien fait et remplace bien ce qui se faisait sur Snips (RIP).

Vu qu’il est bien documenté je n’ai pas eu besoin de poster sur le forum pour trouver des réponses, jusqu’à maintenant.

Je cherchais le moyen de désactiver proprement l’écoute du mot clé pour éviter les faux positifs (en réunion teams au télétravail c’est moche quand ça allume la TV :grinning:).
Du coup j’ai cherché le moyen le plus propre et je suis tombé là dessus: https://github.com/synesthesiam/rhasspy/issues/171

En résumé il y a une API pour ça.

Est-ce que tu pourrais gérer l’appel de cet API dans un objet dédié pour qu’on puisse piloter ça directement dans une commande de jeedom?

Dispo pour beta tester si besoin :nerd_face:

1 « J'aime »

Je comptais le faire en commande sur les devices mais ça bug. Je le fait en mqtt depuis le bouton du respeaker. Mais je regarderai à l’occase.

Thanks,
Après j’ai un bouton mute sur mon jabra 510, mais ça serait cool de pouvoir piloter ça à distance, si on à des assistant vocaux, c’est pas pour lever nos fesses du canapé :stuck_out_tongue_closed_eyes:

Il faut que tu aille dans outils / objets, vue d’ensemble, et tu glisse l’objet rhasspy_intents tout en bas.

Ce soucis est corrigé en v4.1

Hello,

Je n’ai pas beaucoup donné de nouvelles sur ce plugin ces derniers temps. Très occupé sur plusieurs autres projets, boulot etc bref !

Je reprends rapidement le changelog suite à la publication d’une nouvelle beta

### 13/12/2020
- Nouvelle commande `repeatTTS`. Necessite de réimporter l'assistant dans le plugin.

### 26/11/2020
- Nouvelle commande `SetVolume`. Necessite Rhasspy 2.5.8 et de réimporter l'assistant dans le plugin.

### 30/05/2020
- Support du TTS simultané sur plusieurs devices (site1,site2).

### 19/04/2020
- **Attention**: Le plugin supporte maintenant Rhasspy v2.5 minimum !
- Ajouter un satellite : récupération automatique du siteId et vérifications.
- New : Deux nouvelles commandes sur les devices Rhasspy:
	- ledOn : Allume les LEDs
	- ledOff : Etaint les LEDs
	Nécessite [HermesLedControl](https://github.com/project-alice-assistant/HermesLedControl/wiki)
	*Il faut réimporter l'assistant pour créer ces nouvelles commandes*

A part le repeatTTS, le reste est déjà en Stable :wink:

changelog
documentation

Et en prime, un petit scénario repeat
intent:

[repeat]
tu peux répéter
qu'est-ce que tu a dit
répète s'il te plait
peux tu répéter

:beers:

2 « J'aime »

Merci Kiboost, pour ton travail.

En revanche est-ce que tu as pu prendre connaissance du sujet qui a été ouvert concernant la fonction ask qui semble ne pas prendre en compte les réponses ?

Aurais-tu une idée du souci ?

Merci d’avance,

Hello kiboost.
Ayant eu vent de ce plugin, j’ai enfin dégagé snips pour installer rhasspy. Quelle heureuse surprise de voir que tu en es l’auteur. Merci a toi.
J’ai installé lemaster sur un pi3 et les Satellites sur pi0.
Le tout sous docker czr c’est la seul méthode d’installation qui a marché.
Par contre, le pi0 semble bien chargé et ça ne communique pas bien avec le maître. Je communique en http. Aurais-tu un tuto de config en mqtt?
Merci

petite question … mon jeedom est configurer pour n’importer que les intents qui ont Jeedom dans le nom. Dans ton exemple je dois donc renommer [repeat] par [repeatJeedom] … C’est peu etre là mon erreur sur ma l’intent [GetAskResponseJeedom].

Bonjour olico et kiboost.
Déjà je remercie vraiment tous les membres de ce forum JeeRhasspy et surtout évidement Kiboost pour tout le travail effectué (en fait on te trouve partout). Sans vous tous j’aurai pas fait grand chose seul. Alors vraiment sincèrement Merci a tous.
Merci Olico d’avoir repousser le sujet de la fonction ASK. Pour ma part et je pense que ça peut en aider certain j’ai percuté ce WE. En fait j’avais pas de retour, tout simplement parce que je n’avais pas rediriger (callback) l’intent YesNo (donné en exemple) sur le scenario que je testai. Je sais pas si je suis très clair alors pour faire court:
J’ai un scenario d’ouverture et fermeture de volet déclenché par un intent tout simple:

[OuvrirFermer]
action = ( ouvre | ferme )
object = (volet)
room = (salon | salle à manger)
(){action} [ le | les ] (){object} [ du | de la] (){room}

dans ce scenario je voulais tester la fonction ASK donnée dans la doc de Jeerhasspy avec la question « voulez vous vraiment fermer/ouvrir les volets ». avec la réponse YesNo.
Le pb c’est que l’intent YesNo n’était pas redirigé (callback) vers ce même scenario.

c’est chose faite et j’ai maintenant un retour.
Il faut de temps en temps poser le cerveau et miraculeusement tout devient limpide.

Sorry c’est l’intent [GetAskResponseJeedom] et non YesNo qui est le Slot

Merci Pat974 pour ta précision, mais je ne comprends pas pourquoi tu dois rediriger l’intent vers le même scénario.

Ta méthode fonctionne peut-être sur 1 scénario, mais comment tu fais si tu a 3 scénario différents ? Tu ne peux pas faire 3 callback sur 1 intent ?

Y a quelque chosequi m’échappe !