RHASSPY: Installation Probleme Spracherkennung (gelöst)

Begonnen von romakrau, 23 Dezember 2022, 16:03:56

Vorheriges Thema - Nächstes Thema

romakrau

Tach zusammen,
ich versuche eine Sprachsteuerung mittels RHASSPY aufzubauen. Ich habe die Anleitung "Erste Schritte" befolgt und bekomme folgende Ergebnisse:

MQTTClient

Internals:
   BUF       
   CFGFN     
   Clients    :RHASSPY:
   ClientsKeepOrder 1
   DEF        localhost:12183
   DeviceName localhost:12183
   FD         36
   FUUID      63a5a884-f33f-e93f-fea4-d1b3c388c63085c4
   NAME       rhasspyMQTT2
   NR         40721
   PARTIAL   
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   rhasspyMQTT2
   eventCount 1453
   lastMsgTime 1671807224.94025
   nextOpenDelay 5
   MatchList:
     1:RHASSPY  ^.
   READINGS:
     2022-12-23 15:49:58   state           opened
Attributes:
   clientOrder RHASSPY
   room       Rhasspy
   subscriptions setByTheProgram


Modul RHASSPY:

Internals:
   CFGFN     
   CONFIGFILE ./rhasspy-de.cfg
   FUUID      63a5a8d7-f33f-e93f-e553-27c397c095e6d568
   IODev      rhasspyMQTT2
   LANGUAGE   de
   LASTInputDev rhasspyMQTT2
   MSGCNT     20
   NAME       rhasspy
   NOTIFYDEV  global
   NR         40734
   NTFY_ORDER 50-rhasspy
   STATE      online
   TYPE       RHASSPY
   autoTraining 60
   baseUrl    http://127.0.0.1:12101
   defaultRoom default
   devspec    genericDeviceType=.+
   encoding   utf8
   eventCount 27
   fhemId     fhem
   prefix     rhasspy
   rhasspyMQTT2_MSGCNT 20
   rhasspyMQTT2_TIME 2022-12-23 15:30:17
   siteId     defhem
   useGenericAttrs 1
   READINGS:
     2022-12-23 14:10:47   IODev           rhasspyMQTT2
     2022-12-23 14:10:47   enableMsgDialog 0
     2022-12-23 15:30:17   hotwordAwaiting_default 1
     2022-12-23 14:10:47   intents         GetTime,GetGarageState,GetTemperature,ChangeLightState
     2022-12-23 15:30:17   listening_default 0
     2022-12-23 14:15:50   state           online
     2022-12-23 14:15:50   training        Training completed in 0.01 second(s)
     2022-12-23 14:15:50   updateSlots     OK
   TIMER:
     rhasspy_autoTraining:
       HASH       rhasspy
       MODIFIER   autoTraining
       NAME       rhasspy_autoTraining
     rhasspy_null:
       HASH       rhasspy
       MODIFIER   null
       NAME       rhasspy_null
       enable     false
       toDisable:
         ConfirmAction
         CancelAction
         Choice
         ChoiceRoom
         ChoiceDevice
   helper:
     devicemap:
       devices:
     lng:
       commaconversion 1
       mutated_vowels:
         Ä         Ae
         Ö         Oe
         Ü         Ue
         ß         ss
         ä         ae
         ö         oe
         ü         ue
       responses:
         ContinueSession Sonst noch was? | Weitere Wünsche?
         DefaultCancelConfirmation Habe abgebrochen
         DefaultChangeIntentRequestRawInput Wechseln zu $rawInput
         DefaultChoiceNoOutstanding Warte grade nicht auf eine Auswahl
         DefaultConfirmation Gerne!|Wird erledigt|Ok|Jawohl|Zu Diensten
         DefaultConfirmationBack Also nochmal
         DefaultConfirmationNoOutstanding 'Warte grade nicht auf eine Bestätigung
         DefaultConfirmationReceived Ok, werde ich machen
         DefaultConfirmationRequestRawInput Bestätige $rawInput
         DefaultConfirmationTimeout Tut mir leid, da hat etwas zu lange gedauert
         DefaultError Da paßt irgend was nicht
         NoActiveMediaDevice Tut mir leid, es ist kein Wiedergabegerät aktiv
         NoDeviceFound Tut mir leid, ich konnte kein passendes Gerät finden
         NoIntentRecognized Ich konnte leider keinen passenden Intent finden
         NoMappingFound Tut mir leid, ich konnte kein passendes Mäpping finden
         NoMediaChannelFound Tut mir leid, der angefragte Kanal scheint nicht zu existieren.
         NoMinConfidence Deine Angaben waren mit rechnerischen $confidence nicht ausreichend, um eine Aktion auszulösen!
         NoNewValDerived Tut mir leid, ich konnte den Zielwert nicht ausrechnen
         NoTimedOnDeviceFound Das gewählte Gerät unterstützt leider keine taimer Kommandos
         NoValidData Ich habe leider zu wenig Daten um den Vorgang auszuführen
         NoValidIntentResponse Fehler. Die respond Funktion wurde von $intent ohne Antworttext aufgerufen
         NoValidResponse Fehler. Die respond Funktion wurde ohne Antworttext aufgerufen
         RequestChoiceDevice Es kommen mehrere Geräte in Frage, bitte wähle zwischen $first_items oder $last_item
         RequestChoiceGeneric Es gibt diese Möglichkeiten, unter denen du wählen kannst: $options
         RequestChoiceRoom Es kommen mehrere Geräte in verschiedenen Räumen in Frage, wähle zwischen $first_items oder $last_item
         SilentCancelConfirmation
         duration_not_understood Tut mir leid, ich habe die Dauer nicht verstanden
         reSpeak_failed Tut mir leid, ich kann mich nicht erinnern
         timeRequest Es ist $hour Uhr $min
         timerCancellation $label im $room gelöscht
         weekdayRequest Heute ist $weekDay
         Change:
           brightness $deviceName ist auf $value gestellt
           desired-temp Die Solltemperatur von $location beträgt $value Grad
           humidity   Die Luftfeuchtigkeit von $location beträgt $value Prozent
           knownType  $mappingType von $location beträgt $value Prozent
           setTarget  $device ist auf $value gesetzt
           soilMoisture Die Bodenfeuchte von $location beträgt $value Prozent
           unknownType Der Wert vom $location beträgt $value Prozent
           volume     $deviceName ist auf $value gestellt
           waterLevel Der Wasserstand von $location beträgt $value Prozent
           battery:
             0          Der Batteriestand von $location ist $value
             1          Der Batteriestand von $location beträgt $value Prozent
           temperature:
             0          Die Temperatur vom $location ist $value
             1          Die Temperatur vom $location beträgt $value Grad
         ParadoxData:
           confirm    Soll $val[0] mit dem Namen und dem besprochenen Gerät ermittelt werden?
           hint       Du hast widersprüchliche Angaben gemacht: $val[0] und $val[1] passen nicht zusammen.
         XtendAnswers:
           unknownDevs $uknDevs konnten nicht ermittelt werden
         getRHASSPYOptions:
           control    Im $room kann ich unter anderen diese Geräte steuern: $deviceNames
           generic    Es können einige Geräte gesteuert werden oder Informationen aus der Haussteuerung abgefragt werden
           info       Insbesondere $deviceNames stehen als Informationsquellen im $room zur Verfügung
           rooms      Unter anderem kenne ich die Räume $roomNames
           scenes     $deviceNames in $room kann auf die Szenen $sceneNames gestellt werden
         getStateResponses:
           STATE      $deviceName hat den Status [$device:STATE]
           price      Der aktuelle Preis für $reading in $deviceName beträgt [$device:$reading:d] Euro
           reading    [$device:$reading]
           update     Update für $deviceName ist angestoßen
         timerEnd:
           0          $label abgelaufen
           1          $label im Raum $room abgelaufen
         timerSet:
           0          $label im Raum $room ist gestellt auf $seconds Sekunden
           1          $label im Raum $room ist gestellt auf $minutetext $seconds
           2          $label im Raum $room ist gestellt auf $minutetext
           3          $label im Raum $room ist gestellt auf $hours Stunden $minutetext
           4          $label im Raum $room ist gestellt auf $hours Uhr $minutes
           5          $label im Raum $room ist gestellt auf morgen, $hours Uhr $minutes
           6          kein $label im Raum $room gestellt
       stateResponses:
         inOperation:
           0          $deviceName ist fertig
           1          $deviceName läuft noch
         inOut:
           0          $deviceName ist ausgefahren
           1          $deviceName ist eingefahren
         onOff:
           0          $deviceName ist ausgeschaltet|$deviceName ist aus
           1          $deviceName ist eingeschaltet|$deviceName ist an
         openClose:
           0          $deviceName ist geöffnet|$deviceName ist offen
           1          $deviceName ist geschlossen|$deviceName ist zu
       units:
         unitHours:
           0          stunden
           1          eine stunde
         unitMinutes:
           0          minuten
           1          eine minute
         unitSeconds:
           0          Beispiel 1a: einige Sekunden
           1          Beispiel 1b: genau eine Sekunde
       words:
         and        und
         off        aus
         on         an
     shortcuts:
     tweaks:
Attributes:
   languageFile ./rhasspy-de.cfg
   room       Rhasspy


Leider wird die Frage nach der Uhrzeit nicht erkannt bzw. nicht beantwortet. Ich benutze zur Ein- und Ausgabe ein ESP32Audiokit V2.2 mit der Software ESP32Satellite von @Romkabouter. RHASSPY läuft im Docker wie im Wiki genannt. Kann mir jemand mit den Einstellungen in RHASSPY helfen?

MQTT: Internal,Host: 192.168.xxx.xxx Port: 1883 User: <user> PWD: <pwd>
Audio Recording: Hermes
Wake Word: Hermes
Speech to text:  Hermes
Intent regnotion: Hermes
Text to speech:  Hermes
Audio playing: Hermes
Dialog management: Rhasspy
Intent handling: disabled

Gruß Roman



Beta-User

#1
Hattest du dann den Abschnitt in sentences.ini auch umbenannt (bei diesen Einstellungen dann auf "[de.fhem:GetTime]")?

EDIT: Die Einstellungen zu MQTT könnten evtl. auch nicht zusammenzupassen. Alles sollte (ausgehend von den CLIENT-Einstellungen) auf 12183 zeigen.
Und überall "Hermes" kommt mir auch komisch vor, ich weiß aber nicht, worauf sich diese Einstellungen beziehen, und für welche Satelliten das jeweils gelten soll (wenn es die Einstellungen der "base" sind).
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

drhirn

Die baseUrl stimmt ziemlich sicher auch nicht. Die muss auf die Rhasspy-Base zeigen. Also den Docker Container, in dem Rhasspy läuft. Und dort muss der Port natürlich nach außen freigegeben sein.

romakrau

Wenn ich den MQTT auf localhost : 12138 stelle bekomme ich kein online im MQTT Client
Sentence.ini ist umbenannt.

drhirn

Machen wir's ganz von Anfang an:
- Wo ist FHEM installiert (+IP-Adresse)
- Wo ist die Docker Base installiert (+IP Adresse)
- Du verwendest den MQTT-Broker von Rhasspy?

romakrau

FHEM auf RPi4 IP 192.168.187.76
Docker Base auf RPi4 IP 192.168.187.76
MQTT Brocker von Rhasspy

Das Audiokit erkennt den MQTT Server.

PS: Muss unterbrechen und die Enkel holen

drhirn

Ok, dann ist das soweit eh richtig.

Aber im Satellit wäre die Config:
MQTT:
- external
- Host: 192.168.187.76
- Port: 12183
- Username/Passwort

Audio Recording:
- muss BetaUser beantworten
Wakeword:
- muss BetaUser beantworten
Speech to Text:
- Hermes MQTT
Intent Recognition:
- Hermes MQTT
Text to Speech:
- Hermes MQTT
Audio Playing:
- muss ebenfalls BetaUser beantworten
Dialogue Management:
- Rhasspy

(Ich hab leider (noch) kein ESP32 Gerät, deshalb kann ich dazu keine Aussage treffen).

Auf der Base muss du auf jeden Fall noch die Satelliten-ID (siteId) des Satelliten in allen Konfigurations-Einstellungen eintragen, in denen das möglich ist (Wakeword, SpeechToText, IntentRecognition, TextToSpeech und Dialogue Management).

Beta-User

Hmmm, die Einstellungen auf dem esp32 habe ich auch grade nicht mehr parat, müsste das Ding erst mal suchen....
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

romakrau

So ein Mist. Ich kann mich nochmal mehr anmelden am Port 12101.
Der Versuch Docker zu deinstallieren erweist sich als schwierig. Den Container neu starten ergibt 0.0.0.0:12101 als Port aAngabe. Villeicht kann ich mich deshalb nicht anmelden. Hat jemand schon Docker  entfernt. Ist ja schlimmer als Windows.

drhirn

Warum genau willst du's deinstallieren?
Hast du die beiden Ports beim Start des Containers veröffentlicht?

romakrau

Ja ich habe den aufruf aus dem Wiki Erste Schritte verwendet. Kann mich wie geschrieben nicht anmelden. Versuche nochmal Docker wie bei Berrybase beschrieben zu installieren. Irgendwie ist das Ganze jetzt verkorkst. Danke für die Hilfe.

JensS

#11
Die fehlgeschlagenen Verbindungsversuche hängen eventuell mit der Mosquitto-Version 2.x zusammen, welche im Standard nur localhost zulässt.
https://community.rhasspy.org/t/bullseye-mosquitto-and-authentification-for-remote-access/3444
Lokal liegt die Datei vermutlich hier: /usr/lib/rhasspy/rhasspy-supervisor/rhasspysupervisor/__init__.py

Auf jeden Fall muss der Port 12183 durchgeschliffen werden
docker run -d -p 12101:12101 -p 12183:12183\
      --name rhasspy \
      --restart unless-stopped \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      -v "/etc/localtime:/etc/localtime:ro" \
      --device /dev/snd:/dev/snd \
      rhasspy/rhasspy \
      --user-profiles /profiles \
      --profile de


Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

romakrau

Hallo Jens u.a.,
genauso habe ich es gemacht. Ich werde heute den Faden wieder aufnehmen und erstmal mit Rhasspy arbeiten. Sobald dies in allen Konfigurationsschritte passt werde ich die Anbindung an FHEM versuchen und mich ggf. wieder melden. Ich halte mich auch den Thread von Gisbert.
Gruss Roman

romakrau

Hallo zusammen,
jetzt hatte ich endlich die Zeit das Problem anzugehen und zu lösen.
Hauptgrund war, ist und bleibt die Verwendung eines geeigneten Satelliten. Der zuerst verwendete ESP32-Rhasspy Satellit hatte Probleme mit der Empfindlichkeit des Mikrofons. Es war ein ESP32-A1S, ein scheinbar komplettes System zur Ein- und Ausgabe. Nach Aenderung an der Software läuft die Spracherkennung zumindest, ist aber nicht das was ich mir vorgestellt habe. Der Versuch mit ESP32 und I2S Mikrofon und Lautsprecher, scheiterte an der Qualität der Signale. Ferner ist die in der Version 2.5.11 vorhandene Wake-Erkennung nicht korrekt eingebunden. Hier ist ein Patch des Porcupine System erforderlich, den ich in der Docker Version noch nicht probiert habe. Andere Wake Erkennungen laufen nur bedingt, was auch an der verwendeten Hardware liegen kann. Ein weitere Versuch mit einem RPI Zero W hingegen und einer Grundinstallation von Rhasspy mit dem Patch läuft zumindest. Eine Anbindung an FHEM werde ich demnächst versuchen.
Erstmal Dank an alle und  Gruß
Roman

Beta-User

Danke für den Update!

Schade, dass du dir mit der Wahl der Hardware solche Stolpersteinchen auf der Rhasspy-Seite eingefangen hast...

Dann wünsche ich dir mal, dass das mit der FHEM-Integration wesentlich stressfreier läuft (bin da optimistisch)!
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