FHEM Forum

FHEM => Frontends => Sprachsteuerung => Thema gestartet von: Gisbert am 15 Juli 2022, 11:54:08

Titel: Rhasspy + AMAD
Beitrag von: Gisbert am 15 Juli 2022, 11:54:08
Hallo Jörg,

https://forum.fhem.de/index.php/topic,119447.msg1222628.html#msg1222628 (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= GooglePixel4aWie geht es jetzt weiter?

Viele​ Grüße​ Gisbert​
Titel: Antw:Rhasspy + AMAD
Beitrag von: Beta-User am 15 Juli 2022, 12:01:32
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).
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 15 Juli 2022, 16:41:48
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
Titel: Antw:Rhasspy + AMAD
Beitrag von: Beta-User am 15 Juli 2022, 17:06:41
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:
Zitat
and 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).
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 15 Juli 2022, 19:28:38
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​
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 15 Juli 2022, 19:43:23
Zitat
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.
Den Import deines (unsichtbaren) Widget hab ich in der Zwischenzeit hinbekommen; zumindest der Punkt ist abgehakt.
Titel: Antw:Rhasspy + AMAD
Beitrag von: Beta-User am 16 Juli 2022, 06:23:22
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.
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 16 Juli 2022, 11:44:53
Hallo Jörg,

einen Schritt bin ich weiter, wenn auch noch nicht ganz am Ziel, doch, wie sich unten herausstellt:
Zitat
Intent 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​
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 16 Juli 2022, 11:45:39
Gegen das unsichtbare Widget kann man wahrscheinlich nichts tun, oder?
Titel: Antw:Rhasspy + AMAD
Beitrag von: Beta-User am 16 Juli 2022, 14:57:40
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 ;) .

Gegen das unsichtbare Widget kann man wahrscheinlich nichts tun, oder?
Jedenfalls habe ich auch noch kein Gegenmittel gefunden... :'(
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 16 Juli 2022, 15:26:42
Hallo Jörg,

Zitat
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 ;) .
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/ (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
Titel: Antw:Rhasspy + AMAD
Beitrag von: Beta-User am 16 Juli 2022, 15:43:28
 "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 (http://hpthin2:8083/fhem?detail=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.
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 16 Juli 2022, 17:25:53
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​
Titel: Antw:Rhasspy + AMAD
Beitrag von: Beta-User am 16 Juli 2022, 17:44:06
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 (https://forum.fhem.de/index.php/topic,126913.0.html) der passende Thread dazu.
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 17 Juli 2022, 09:23:53
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​
Titel: Antw:Rhasspy + AMAD
Beitrag von: Beta-User am 17 Juli 2022, 09:51:51
 ;D ...dann schauen wir mal, ob wir das Ärgernis beseitigt bekommen...

Allerdings hat das in der Tat eigentlich wenig mit RHASSPY zu tun, das leitet einfach nur einen Text weiter an das AMADDevice. Das macht afaik dasselbe, und vermutlich tut dann die AMADCommBridge auch nichts anderes.
Würde die Ursache daher auf dem Androiden suchen. Da Automagic auf den Handy als eine Art Dienst läuft, würde ich zunächst darauf tippen, dass man diesen Dienst einmal beendet haben muss, damit er die geänderten allgemeinen Einstellungen neu einliest? Wenn diese Annahme zutrifft, sollte z.B. ein (soft-) reboot des Pixel ausreichend sein.
(Bei mir antwortet das Handy weiblich, ohne dass ich was ein- oder umgestellt hätte).
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 17 Juli 2022, 11:23:16
Es ist aber auch verflixt. Neustarten, Deinstallieren von Automagic mit anschließendem Neustart und erneuter Installation der Automagic APK haben keine Veränderung gebracht: Google Assistant hat eine weibliche Stimme, Automagic/Rhasspy eine männliche.
Google ist doof, eine andere Erklärung hab ich im Moment nicht >:( :'(
Titel: Antw:Rhasspy + AMAD
Beitrag von: Beta-User am 17 Juli 2022, 11:49:20
Hmmm, habe jetzt mal etwas rumgesucht, und (Android 11) unter "Einstellungen->System->Sprachen und Eingabe->Erweitert->Sprachausgabe->Bevorzugtes Modul->Zahnrad->Sprachdaten installieren->Deutsch (Deutschland)" drei Stimmen zur Auswahl gefunden. Stimme I ist weiblich, die anderen beiden männlich.
Dort umgestellt auf Stimme III, einen ttsMsg-Command an dem AMADDevice abgesetzt => anderer Sprecher, ohne Neustart, keine sonstigen Aktionen. Zurück auf Stimme I => wieder weiblich.

Ansonsten sehe ich Alphabet durchaus auch kritisch, aber andererseits gäbe es ohne die vermutlich ein noch mächtigeres Microschrott, und das wäre definitiv auch nicht besser...
Titel: Antw:Rhasspy + AMAD
Beitrag von: Gisbert am 17 Juli 2022, 13:16:53
Hallo Jörg,

du bist der Beste! (leider gibt es kein Symbol für Daumen hoch im Text).
Da muss man ja zuerst mal drauf kommen, wo man suchen muss.

Lustig ist die weibliche Stimme bei höherer Tonlage, es hat was von einer Wespe auf Speed an sich ;D

Vielen Dank und einen schönen Sonntag wünsche ich dir
Gisbert
Titel: Antw:Rhasspy + AMAD
Beitrag von: Beta-User am 17 Juli 2022, 16:47:18
Na ja, ich bin einfach meiner Nase nach...

funfact am Rande: Mein RHASSPY-AMAD-Pfad hat grade einen Hau und es gibt aus irgendwelchen Gründen keine Events mehr am AMADDevice, wenn ich VoiceInput mache... Alles andere (screen orientation etc.) wirft Events :o . Keine Idee grade, ist aber auch nicht wichtig ;D .