Rhasspy + AMAD

Begonnen von Gisbert, 15 Juli 2022, 11:54:08

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo Jörg,

https://forum.fhem.de/index.php/topic,119447.msg1222628.html#msg1222628

Ich eröffne wie vorgeschlagen einen neuen Thread, um eine angenehmere Stimme als Antwort auf meine Anweisungen zu bekommen.
Ich hab in Fhem ein funktionierendes AMAD-Device (Automagic/GooglePixel4a)  und auf meinem Handy die Automagic-App installiert.

Die Definition ist jetzt vorhanden:
attr Rhasspy rhasspySpeechDialog allowed= GooglePixel4a
Wie geht es jetzt weiter?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

Hmm, das sollte es eigentlich schon gewesen sein.

In Automagic sollte es einen Flow "VoiceInput" geben. Wenn du den startest (ich habe dazu einen shortcut erstellt, es sollte aber auch aus der App heraus manuell gehen oder von FHEM (am AMADDevice) aus), solltest du was "Rhasspy-bekanntes" (soweit ich mich entsinne z.B. "stelle den Rollladen im Wohnzimmer auf Schlitz" (?)) einsprechen können und die Anweisung sollte dann auch direkt ausgeführt werden, sobald sich das Dialogfeld (wegen Stille/Sprech-Ende) schließt.

Wenn das nicht klappt, muss ich mir das im Detail auch nochmal an meinen Devices vergegenwärtigen (was etwas dauern kann).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Gisbert

Hallo Jörg,

ich hab mir das AMAD-Device GooglePixel4a zerschossen, als ich den "First Run Assistant" ausgeführt hab - keine Anhnung, was mich dazu veranlasst hat. Ich musste das Device in Fhem löschen und hab jetzt ein neues angelegt, was auf den Namen "Pixel4a" hört. Das hab ich dann entsprechend auch in Rhasspy geändert.

Ich hab eine Flow "VoiceControl" aber keinen Flow "VoiceInput".
Wenn ich "VoiceControl" ausführe (in Automagic), öffnet sich die Google-Spracheingabe und der gesprochende Befehl erscheint dann unter receiveVoiceCommand in der AMADBridge - soweit ganz schön, aber das war es dann auch; jedenfalls kommt nichts in Rhasspy an. Fehlen in der AMADBridge oder im AMAD-Device eventuell Attribute für Rhasspy?
Könntest du mir auch verraten, wie du einen Shortcut für einen Flow hinbekommen hast?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

Das "allowed" im Attribut rhasspySpeechDialog hattest du auch angepaßt?

Ansonsten ist das "reines Event-Handling", man braucht keine weiteren Attribute in den AMAD.*-Devices, aber im RHASSPY-Device sollte im NOTIFYDEF sowas auftauchen:
TYPE=(AMADCommBridge|AMADDevice),global

Den Shortcut bekommt man irgendwie über "eigene widgets" in Automagic hin, anbei das betr. xml, das sollte irgendwie zu importieren gehen...

Ach so, das Wichtigste dazu hatte ich zwar mehrfach erwähnt, aber wohl noch nicht in der commandref ergänzt. Es gilt dasselbe wie für's Testen per file/einzelnem Satz und Dialogen per Messenger:
Zitatand additionally for each RHASSPY instance a siteId has to be added to the intent recognition service

Deine RHASSPY-siteid (meistens:defhem) muss (zusätzlich) als siteId für die "intent recognition" in Rhasspy mit angegeben werden (speichern+Rhasspy entsprechend der dortigen Aufforderung neu starten).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Gisbert

Hallo Jörg,

die Punkte bis auf "das Wichtigste" sind erfüllt.
Ich hab versucht zu verstehen, was du anschließend geschrieben hast, aber kann es leider nicht umsetzen.
Meine SideID in Rhasspy-Fhem:
Reading siteIds Pixel4a
Wo muss ich was eintragen? Etwas in Fhem im Rhasspy-Device, in eine Datei auf meinem Server, in RHASSPY (wo?) auf meinem Server?

Das unsichtbare Widget konnte ich erzeugen. Da ich wohl den gleichen Flow wie das angehängte schon hab, konnte ich letzteres nicht importieren.
Das ist im Moment noch sekundär.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Gisbert

ZitatDas unsichtbare Widget konnte ich erzeugen. Da ich wohl den gleichen Flow wie das angehängte schon hab, konnte ich letzteres nicht importieren.
Das ist im Moment noch sekundär.
Den Import deines (unsichtbaren) Widget hab ich in der Zwischenzeit hinbekommen; zumindest der Punkt ist abgehakt.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

Zitat von: Gisbert am 15 Juli 2022, 19:28:38
die Punkte bis auf "das Wichtigste" sind erfüllt.
Ich hab versucht zu verstehen, was du anschließend geschrieben hast, aber kann es leider nicht umsetzen.
Meine SideID in Rhasspy-Fhem:
Reading siteIds Pixel4a
Wo muss ich was eintragen? Etwas in Fhem im Rhasspy-Device, in eine Datei auf meinem Server, in RHASSPY (wo?) auf meinem Server?
Auszug aus meiner Rhasspy-Konfiguration (danger zone, der "Advanced"-Bereich):
"intent": {
        "fuzzywuzzy": {
            "min_confidence": "0.01"
        },
        "lang": "de",
        "satellite_site_ids": "motox,buero,büro,Küche,defhem",
        "system": "fsticuffs"
    },


Ausführlicher Weg:
Nimm den Wert des Internals "siteid" aus dem RHASSPY-Device (bei dir vermutlich auch "defhem"). Trage das im Bereich "Settings" der Rhasspy-Konfiguration (nur!) unter "Intent Recognition" als zusätzlichen Satelliten ("Satellite siteIds:") ein (kommagetrente Liste). Speichern, Rhasspy neu starten, done.

"Settings" meint den Bereich in Rhasspy, der im 2. Bild zu sehen ist, das unter https://rhasspy.readthedocs.io/en/latest/tutorials/#settings zu finden ist.

Erklärung:
RHASSPY sendet in "gewissen Situationen" (messenger-Interaktion, AMAD-Interaktion und Sätze-Test) direkt und nur den Text an Rhasspy, um die Auswertung zu bekommen, welche Intents und Bestandteile erkannt wurden.
Die tatsächliche Ausführung erfolgt dann entweder "wie immer" oder eben gar nicht (die Test-getter), und die  Antwort wird dann nicht über Rhasspy abgewickelt, sondern "intern", im AMAD-Fall also über ein speak-Kommando an das AMADDevice.

Die svn-Version ist jetzt diesbezüglich in der commandref (nicht in der Funktionalität) angepaßt/ergänzt, so dass das (hoffentlich) etwas klarer wird.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Gisbert

Hallo Jörg,

einen Schritt bin ich weiter, wenn auch noch nicht ganz am Ziel, doch, wie sich unten herausstellt:
ZitatIntent Recognition" als zusätzlichen Satelliten ("Satellite siteIds:") ein (kommagetrente Liste). Speichern, Rhasspy neu starten, done.
Das hat funktioniert, Rhasspy hab ich auf Linuxebene mit sudo systemctl restart rhasspy.service durchgeführt. Der Restart Button auf der Rhasspy-Seite startet den Server neu - das wollte ich nicht, da alle möglichen Sachen auf dem Server laufen.

Es funktioniert mit:
schalte das licht im wohnzimmer an/aus
Nicht funktioniert:
fahre den rolladen in meinem schlafzimmer hoch/runter/auf lücke
Ich erhalte dann folgende Antwort:
Ich habe keinen passenden Intent gefunden (oder so ähnlich, aus der Erinnerung).
Das Problem ist die Schreibweise von "Rollladen". Google macht daraus "Rolladen" mit lediglich 2 "l".
Abhilfe hat geschaffen, dass ich dem rhasspyName jetzt beide Schreibweisen mitgegeben habe: rollladen,rolladen
Damit läuft es rund.

Viele​n Dank und viele Grüße​
Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Gisbert

Gegen das unsichtbare Widget kann man wahrscheinlich nichts tun, oder?
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

Zitat von: Gisbert am 16 Juli 2022, 11:44:53
Der Restart Button auf der Rhasspy-Seite startet den Server neu - das wollte ich nicht, da alle möglichen Sachen auf dem Server laufen.
Hmm, bei mir startet nur der Rhasspy-Dienst neu, wenn man den roten Knopf oben links drückt, aber via systemctl ist auch ok :) .

Ansonsten: Daumen hoch, dass es jetzt prinzipiell läuft. Damit kannst du jetzt auch die "Testsuite" durchlaufen lassen und/oder über einen Messenger mit RHASSPY chatten ;) .

Zitat
Es funktioniert mit:
schalte das licht im wohnzimmer an/aus
Nicht funktioniert:
[...]
Das Problem ist die Schreibweise von "Rollladen". Google macht daraus "Rolladen" mit lediglich 2 "l".
Das sind die "Kleinigkeiten", die halt in der Erkennung bzw. Interaktion einfach "anders" sind, die  ich bereits angedeutet  hatte...
Gerade (auch) um solchen Problemen "schnell" auf die Schliche kommen zu können, gibt es die Test-Suite ;) .

Zitat von: Gisbert am 16 Juli 2022, 11:45:39
Gegen das unsichtbare Widget kann man wahrscheinlich nichts tun, oder?
Jedenfalls habe ich auch noch kein Gegenmittel gefunden... :'(
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Gisbert

Hallo Jörg,

ZitatAnsonsten: Daumen hoch, dass es jetzt prinzipiell läuft. Damit kannst du jetzt auch die "Testsuite" durchlaufen lassen und/oder über einen Messenger mit RHASSPY chatten ;) .
Das Grundgerüst hab ich (von verstanden wollen wir nicht erst reden), aber was ist jetzt "Testsuite" - ich hab deine Wikiseite durchforstet, das Wort bzw. der Wortteil "suite" taucht nicht auf, auch nicht auf der Rhasspy-Seite (https://rhasspy.readthedocs.io/en/latest/tutorials/).

Mit welchem Messenger könnte ich denn mit RHASSPY chatten, bzw. wie nutzt du es?

... für meine Verhältnisse Jammern auf hohem Niveau, aber das Bessere ist immer der Feind des Guten ...

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

 "Testsuite" bezieht sich auf https://forum.fhem.de/index.php/topic,126864.0.html. Allerdings muss ich zugeben, pah's letzte Fassung der file mit den "Test-Sätzen" noch nicht näher angesehen zu haben.

Als Messenger nutze ich im FHEM-Kontext Telegram (=>TelegramBot), aber Signalbot (evtl. mit der jüngst diskutierten Anpassung bzgl. msgConfig.pm) oder das whatsapp-Modul sollten genauso funktionieren, eben alles, was mit dem "msg-Kosmos" kompatibel ist.

Auch diese Variante ist eine "schlichte Eventhandler-Konstruktion" (die auf ROOMMATES und GUEST hört, das NOTIFYDEV sieht dann effektiv so aus: TYPE=(AMADCommBridge|AMADDevice|ROOMMATE|GUEST),global), bei der eingehende Messages erst auf eine "Zugangssequenz" untersucht wird und dann ggf. eine Art Sitzung eröffnet. Innerhalb der Sitzung kann man dann "alles mögliche" an "Sätzen" an Rhasspy weiterleiten lassen und bekommt die Antwort dann halt schriftlich... Bis die Sitzung geschlossen wird (wg. Zeitablauf oder per "Ciao-Wort"). Im Zweifel einfach mal ausprobieren ;) .
Der definitiv "schwierigere" Teil dabei ist das Einrichten von msgConfig.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Gisbert

Hallo Jörg,

ich denke, dass ich es erstmal bei dem belasse, was ich bisher erreicht habe. Irgendwann wird es weitergehen, wenn deine Entwicklungen sich etwas gesetzt haben.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

#13
Zitat von: Gisbert am 16 Juli 2022, 17:25:53
ich denke, dass ich es erstmal bei dem belasse, was ich bisher erreicht habe. Irgendwann wird es weitergehen, wenn deine Entwicklungen sich etwas gesetzt haben.
:) Gerne. Letztlich geht es ja darum, dass du zufrieden bist mit dem, was du erreicht hast ;) .

Ich denke im Moment nicht, dass in näherer Zukunft (oder überhaupt) allzuviel an weiterer Entwicklung im Modul an zu erwarten ist, das finde ich jetzt ziemlich rund. Kann sein, dass es in Randbereichen noch kleinerer Anpassungen bedarf, aber das wird sich ggf. erst zeigen, wenn mehr Leute testen, was da ist (was aber keinen Sinn macht, wenn man keinen Bedarf sieht/hat).

pah's aktuelle Fassung "Testsuite" habe ich eben mal durchlaufen lassen, da gab es keine Probleme. Die Ergebnisse sehen dann in etwa so aus:

   [RHASSPY] Input:      wie ist das wetter
                Id:       aid 301
             GetState {"Device":"wetter","Type":"heute","confidence":1,"customData":null,"input":"wie heute wetter","intent":"GetState","lang":"de","rawInput":"wie ist das wetter ","sessionId":"defhem_215_testmode","siteId":"defhem"}
             Response: heute Den ganzen Tag lang Klar. Es hat zwischen 12 und 27 Grad und Wind bis 7 Kilometer pro Stunde.

   [RHASSPY] Input:      wie ist das wetter von morgen
             GetState {"Device":"wetter","Type":"morgen","confidence":0.8,"customData":null,"input":"wie heute wetter morgen","intent":"GetState","lang":"de","rawInput":"wie ist das wetter von morgen","sessionId":"defhem_220_testmode","siteId":"defhem"}
             Response: morgen Den ganzen Tag lang Klar. Es gibt zwischen 13 und 29 Grad und Wind bis 8 Kilometer pro Stunde.


Falls jetzt jemand interessiert, wie man sowas testet und ggf. umsetzt, wenn es nicht klappt, wäre [RHASSPY] - Einstellungen optimieren mit Hilfe der Testsuite der passende Thread dazu.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Gisbert

Hallo Jörg,

danke für die Erklärung zu "Testsuite", die ich mir vielleicht mal anschauen werde.

Mich ärgert eine Kleinigkeit, die keinen Einfluss auf die Funktion hat, dennoch ärgert es mich, oder anders gesagt, ich hab beschlossen, dass es mich ärgert ;)

Ich hab bei Google Assistant bisher immer die männliche Stimme benutzt. Ich wollte jetzt mal testen, wie sich die weibliche Stimme anhört und hab das bei Google Assistant umgestellt. Google Maps antwortet seither mit weiblicher Stimme - nicht jedoch Rhasspy, da bleibt es bei der männlichen Stimme. Wie kann das sein? Nachdem ich nicht herausgefunden habe, woran es liegt und wie ich es ändern kann, hab ich beschlossen mich zu ärgern ;)

Hast du eine Idee, wo ich im Konstrukt Google Assistant, Automagic und Rhasspy ansetzen könnte? An dem Widget alleine kann es nicht liegen, denn auch VoiceControl in der Automagic App antwortet mit der männlichen Stimme.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY