Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Rhasspy Offline Sprachsteuerung

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

Rhasspy Offline Sprachsteuerung

Geplant Angeheftet Gesperrt Verschoben Off Topic
403 Beiträge 30 Kommentatoren 100.7k Aufrufe 47 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Tictactoo

    @tobetobe Zu MQQT: Du musst nix von Hand anlegen. Es muss nur einfach ein Broker (zum Beispiel auf Windows MQTTBox) das entsprechende Topic abonnieren. Dann erscheint auch der Punkt. Ersetze es doch einfach vorerst durch log();

    Zu den States: Ist denn ".1" in jedem Gerät vorhanden? Und ist ".1" das Gerät, oder musst du evtl ".1.STATE" ersetzen. Kannst du mir von deinen Geräten auch mal einen Scrennshot anhängen aus der Baumstruktur?

    tobetobeT Offline
    tobetobeT Offline
    tobetobe
    schrieb am zuletzt editiert von
    #31

    @Tictactoo
    Vielen Dank soweit. Hier siehst du den kompletten Baum eines Dimmers. Ansprechen will ich unter .1 den LEVEL. Unter .2 und .3 stehen dieselben Werte nochmals, was jedoch hier nicht von Belang ist.

    a0555999-6115-4bea-81fd-22939429f896-grafik.png

    Und dies ist der Baum eines einfachen Lichtschalters:

    69e4c56c-0bde-4660-b8b2-6c19fd798785-grafik.png

    Unter .0 finden sich wieder dieselben werte, wie auch beim Dimmer. Der zu schaltende Punkt wäre dann der .STATE.

    Wenn es allerdings nur um die Erkennung der Devices geht, könnte man doch ggf auch einen beliebigen Punkt aus der Gruppe .0 nehmen, zB LOWBAT. Den gibt es bei jedem Device, unabhängig davon, ob das Ding eine Batterie hat oder nicht. Was meinst du?

    (Ich weiß, du kennst HomeMatic nicht, aber du weißt, was dein Skript leisten kann)

    Beste Grüße
    tobetobe

    T 1 Antwort Letzte Antwort
    0
    • tobetobeT tobetobe

      @joergeli

      Hallo, ich konnte LEDcontrol auch noch schnell installieren und ein wenig testen. Mei Log sieht genau so aus wie deiner. Der Debug Mode geht natürlich nur, wenn der HLC nicht läuft, also mit systemctl stoppen. Dann kommt bei mir dieser Hinweis:

      pi@rhasspy-1:~/hermesLedControl_v2.0.3 $ ./venv/bin/python3 main.py --debug=True
      Starting Hermes Led Control v. 2.0.3
      Initializing HermesLedControl
      Initializing ProjectAlice settings
      Loading configurations
      No Project Alice config found but debug mode, allow to continue
      

      Ansonsten passiert jedoch nichts. Die mqtt states wurden bei mir ebenfalls wie von dir beschrieben angelegt. Werte erscheinen jedoch nicht. Ich habe den Eindruck, dass dies so auch richtig ist. Auf GitHub lässt sich der Entwickler dazu im Detail aus, was wie konfiguriert werden kann.

      https://github.com/project-alice-assistant/HermesLedControl/wiki/Arguments-customization
      

      Mir scheint, dass für ein "custom-Pattern" einige Zustände bzw Betriebsmodi definiert werden müssen. In den weiteren Seiten geht es dann so richtig ins Eingemachte:

      d1c31239-e75f-443e-b5e9-b83ad74d3269-grafik.png

      Da werden wir uns wohl durchquälen müssen, wozu ich die Zeit nicht hatte, bzw aktuell auch nicht haben werde.

      Zu deiner neuen Sportart (Zurückrudern) möchte ich noch etwas anmerken: Mir war dies auch recht bald aufgefallen, weil ich nur eine Sekunde Zeit hatte, das Wake Word und den Befehl zu sprechen. Das war mir persönlich zu knapp. Ich habe meinen Timer nun auf 15 sec. gesetzt.

      Was ich jedoch in diesem Zusammenhang zur Qualität der Spracherkennung festgestellt habe, dürfte dich/euch interessieren: Ich kann reproduzierbar erkennen, dass die Auslastung meines Raspi einen signifikanten Einfluss auf die Qualität der Erkennung hat. Wenn zB der HLC läuft, wird bei mir fast kein Befehl erkannt. Schalte ich ihn aus, ist sofort alles wieder OK. Das gleiche gilt für Kaldi als Alternative zu Pocketsphinx sowie für komplexe Beziehungen zwischen Sentences und Slots!!! Also: Keep it simple.

      Das bestätigt mich, demnächst, wenn ich wieder mehr Zeit habe, den Rhasspy auf Client/Server um zu bauen, damit alle ressourcenfressenden Prozesse, wie ZB die Erkennung, auf dem Server laufen, und sich mein alter Pi3 nur mit dem Mikro selbst befassen muss.

      Wenn du/ihr mal in die einschlägigen Foren schaut, werdet ihr das bestätigt finden.

      Also: Nicht aufgeben. Rhasspy steht noch ziemlich am Anfang und ich habe den Eindruck, dass da noch einiges an positiver Entwicklung zu erwarten ist.

      joergeliJ Online
      joergeliJ Online
      joergeli
      schrieb am zuletzt editiert von joergeli
      #32

      @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

      Wenn zB der HLC läuft, wird bei mir fast kein Befehl erkannt. Schalte ich ihn aus, ist sofort alles wieder OK.

      Das kann ich bestätigen, ist bei mir leider auch so.
      Was meinst Du: Ob ein Raspi4 (mit 4 GByte) da Abhilfe schaffen könnte? (habe bei mir noch einen rumliegen).
      Wahrscheinlich nicht, wenn's an der CPU und nicht am Speicher hapert.
      ... und nein, "rumliegen" ist keine weitere Sportart von mir :grinning:

      Ich hatte in der community.rhasspy.org mal nachgefragt, was das mit Hermes-MQTT-Topics auf sich hat und ob da was passieren sollte, wenn HLC aktiv wird.

      Leider werde ich aus der Antwort nicht ganz schlau.
      KiboOst schrieb, wenn ich das richtig verstehe, daß HLC mein Rhasspy-Profil ausliest und daher die IP-Adresse meines MQTT-Brokers kennt. OK, deshalb erscheinen ja dort auch die HLC-Topics.
      Desweiteren könnte ich mit dem Parameter --mqttServer die IP-Adresse des MQTTBrokers ändern.
      OK, will ich ja gar, ich möchte nur wissen, ob in den Topics was passieren sollte, wenn HLC aktiv ist.
      Ich werde noch mal nachhaken.

      Gruß
      Jörg

      1 Antwort Letzte Antwort
      0
      • tobetobeT Offline
        tobetobeT Offline
        tobetobe
        schrieb am zuletzt editiert von
        #33

        Hallo Jörg,
        Ich habe ioBroker mit Raspi3 begonnen und einen mittlerweile durch Raspi4 mit 4GByte ersetzt. Der Performance-Unterschied ist schon beachtlich und würde meiner Meinung nach auch bei Rhasspy einiges bringen. Schließlich hat der Raspi4 nicht nur mehr RAM, sondern insgesamt eine leistungsfähigere Architektur. Wenn du allerdings daran denken solltest, evtl mehrere Rhasspy-Satelliten zu verteilen, so nimm den jetzigen Raspi3 für den Satelliten und den Raspi4 (oder besser noch etwas leistungsfähigeres) für den Rhasspy-Server. Und noch etwas: Nimm die schnellsten Mikro-SDs, die du bekommen kannst, zB Scandisk Ultra.

        Und sonst: Ich hoffe, du bekommst aus der Rhasspy Community noch eine brauchbare Antwort. Ich bin noch nicht dazu gekommen, mir die Antwort von KiboOst anzuschauen, werde das aber in den nächsten Tagen mal ins Auge fassen. Vielleicht erkenne ich ja noch was Brauchbares.

        Beste Grüße
        Thomas

        Beste Grüße
        tobetobe

        joergeliJ 1 Antwort Letzte Antwort
        0
        • tobetobeT tobetobe

          Hallo Jörg,
          Ich habe ioBroker mit Raspi3 begonnen und einen mittlerweile durch Raspi4 mit 4GByte ersetzt. Der Performance-Unterschied ist schon beachtlich und würde meiner Meinung nach auch bei Rhasspy einiges bringen. Schließlich hat der Raspi4 nicht nur mehr RAM, sondern insgesamt eine leistungsfähigere Architektur. Wenn du allerdings daran denken solltest, evtl mehrere Rhasspy-Satelliten zu verteilen, so nimm den jetzigen Raspi3 für den Satelliten und den Raspi4 (oder besser noch etwas leistungsfähigeres) für den Rhasspy-Server. Und noch etwas: Nimm die schnellsten Mikro-SDs, die du bekommen kannst, zB Scandisk Ultra.

          Und sonst: Ich hoffe, du bekommst aus der Rhasspy Community noch eine brauchbare Antwort. Ich bin noch nicht dazu gekommen, mir die Antwort von KiboOst anzuschauen, werde das aber in den nächsten Tagen mal ins Auge fassen. Vielleicht erkenne ich ja noch was Brauchbares.

          Beste Grüße
          Thomas

          joergeliJ Online
          joergeliJ Online
          joergeli
          schrieb am zuletzt editiert von joergeli
          #34

          @tobetobe
          Hallo Thomas,
          ich bin mit ioBroker ebenfalls von einem Raspi3 auf einen Raspi4 mit 4Gbyte umgestiegen, weil bei dem 3er das RAM knapp wurde. Es laufen in ioBroker "nur" 17 Instanzen, wobei der 3er schon mal unter 10% freies RAM ging, während jetzt beim 4er so um die 70% frei sind. Performancemäßig habe ich "gefühlt" keinen großen Unterschied festgestellt.

          Hier jetzt auch die Antwort bzgl HLC von KiboOst aus der community.rhasspy.org :
          Frei übersetzt:
          Von der aktuellen Rhasspy-Version werden noch keine Hermes-Topics geplublished (was für ein Wort ;-) ).
          HLC wird erst mit einer entspr. Rhasspy-Version funktionieren

          ... und ich Blödmann probiere es seit 1,5 Tagen :disappointed:

          Gruß
          Jörg

          tobetobeT 1 Antwort Letzte Antwort
          0
          • tobetobeT tobetobe

            @Tictactoo
            Vielen Dank soweit. Hier siehst du den kompletten Baum eines Dimmers. Ansprechen will ich unter .1 den LEVEL. Unter .2 und .3 stehen dieselben Werte nochmals, was jedoch hier nicht von Belang ist.

            a0555999-6115-4bea-81fd-22939429f896-grafik.png

            Und dies ist der Baum eines einfachen Lichtschalters:

            69e4c56c-0bde-4660-b8b2-6c19fd798785-grafik.png

            Unter .0 finden sich wieder dieselben werte, wie auch beim Dimmer. Der zu schaltende Punkt wäre dann der .STATE.

            Wenn es allerdings nur um die Erkennung der Devices geht, könnte man doch ggf auch einen beliebigen Punkt aus der Gruppe .0 nehmen, zB LOWBAT. Den gibt es bei jedem Device, unabhängig davon, ob das Ding eine Batterie hat oder nicht. Was meinst du?

            (Ich weiß, du kennst HomeMatic nicht, aber du weißt, was dein Skript leisten kann)

            T Offline
            T Offline
            Tictactoo
            schrieb am zuletzt editiert von
            #35

            @tobetobe Versuch es mal mit einem State, den alle deine Homatic-Geräte haben und mach bei replace dann auch den ".0" oder ".1" mit weg. Da er den Namen rausfinden will, muss es der erste Knoten des Geräts sein.

            Außerdem müsstest du dann sinvollerweise bei dir, je nach State den du schalten willst "state:.1.STATE" in den Sentense mit einbauen, damit er da richtig schaltet. Bei Zigbee (für das ich das bei mir gemacht hab) sind alle States unter einem Knoten, daher geht es da so.

            tobetobeT 1 Antwort Letzte Antwort
            0
            • T Tictactoo

              @tobetobe Versuch es mal mit einem State, den alle deine Homatic-Geräte haben und mach bei replace dann auch den ".0" oder ".1" mit weg. Da er den Namen rausfinden will, muss es der erste Knoten des Geräts sein.

              Außerdem müsstest du dann sinvollerweise bei dir, je nach State den du schalten willst "state:.1.STATE" in den Sentense mit einbauen, damit er da richtig schaltet. Bei Zigbee (für das ich das bei mir gemacht hab) sind alle States unter einem Knoten, daher geht es da so.

              tobetobeT Offline
              tobetobeT Offline
              tobetobe
              schrieb am zuletzt editiert von
              #36

              @Tictactoo
              Hi, vielen Dank. Vor nächstem Wochenende habe ich keinen Zugang zum Rhasspy, kann also nicht testen und auch nicht antworten

              Beste Grüße
              tobetobe

              1 Antwort Letzte Antwort
              0
              • joergeliJ joergeli

                @tobetobe
                Hallo Thomas,
                ich bin mit ioBroker ebenfalls von einem Raspi3 auf einen Raspi4 mit 4Gbyte umgestiegen, weil bei dem 3er das RAM knapp wurde. Es laufen in ioBroker "nur" 17 Instanzen, wobei der 3er schon mal unter 10% freies RAM ging, während jetzt beim 4er so um die 70% frei sind. Performancemäßig habe ich "gefühlt" keinen großen Unterschied festgestellt.

                Hier jetzt auch die Antwort bzgl HLC von KiboOst aus der community.rhasspy.org :
                Frei übersetzt:
                Von der aktuellen Rhasspy-Version werden noch keine Hermes-Topics geplublished (was für ein Wort ;-) ).
                HLC wird erst mit einer entspr. Rhasspy-Version funktionieren

                ... und ich Blödmann probiere es seit 1,5 Tagen :disappointed:

                Gruß
                Jörg

                tobetobeT Offline
                tobetobeT Offline
                tobetobe
                schrieb am zuletzt editiert von
                #37

                @joergeli
                Hi Jörg
                Das habe ich anders verstanden. Es fehlen noch einige Hermes Features. Wenn auf dem Rhasspy jedoch mosquito läuft, können LED Konfigurationen in Abhängigkeit vom jeweiligen Sprachbefehl ausgelöst werden. Leider kann ich dich aktuell nicht unterstützen, indem ich selbst teste.

                Bitte Lies nochmals im Rhasspy Forum unter Hermes Support nach. Ich melde mich, sobald ich selbst wieder testen kann

                Beste Grüße
                tobetobe

                joergeliJ 1 Antwort Letzte Antwort
                0
                • tobetobeT tobetobe

                  @joergeli
                  Hi Jörg
                  Das habe ich anders verstanden. Es fehlen noch einige Hermes Features. Wenn auf dem Rhasspy jedoch mosquito läuft, können LED Konfigurationen in Abhängigkeit vom jeweiligen Sprachbefehl ausgelöst werden. Leider kann ich dich aktuell nicht unterstützen, indem ich selbst teste.

                  Bitte Lies nochmals im Rhasspy Forum unter Hermes Support nach. Ich melde mich, sobald ich selbst wieder testen kann

                  joergeliJ Online
                  joergeliJ Online
                  joergeli
                  schrieb am zuletzt editiert von joergeli
                  #38

                  @tobetobe
                  Hallo Thomas,

                  aus der Antwort von KiboOst:

                  Nothing have to be sent to have the led on when service starts.
                  HLC doesn’t send anything on mqtt, it just listen on some topics to give a visual feedback
                  

                  Also horcht HLC auf bestimmte Topics.

                  And once more, actual version of rhasspy doesn’t publish every hermes topics so it doesn’t work actually.
                  

                  Aktuelle Rhasspy-Version sendet (published) nicht alle Hermes-Topics.
                  Wie ich - und Du wahrscheinlich auch - festegestellt habe, werden bei der Installation von HLC zwar die entspr. Topics in ioBroker mqtt.0 angelegt, diese aber nicht von der aktuellen Rhasspy-Version (bei mr 2.4.17) "gefüttert".

                  Ich habe aber einen Workaround von H3adcra5h gefunden, der ein Python-Script geschrieben hat, das zumindest auf einige Topics horcht und dann entspr. LED-Reaktionen auslöst.

                  Das Script ist für ein ReSpeaker 6 Mic gedacht, funktioniert aber auch mit meinem ReSpeaker 4.
                  Die LED-Ringe der ReSpeaker Mics werden über SPI des Raspis angesteuert.
                  Ob es auch mit Deinem Matrix Voice funktioniert, kann ich nich sagen.

                  Ich musste das Script aber etwas anpassen, um es zum Laufen zu bringen.
                  Zusätzlich musste ich die pixel-ring-Library mit pip install pixel_ring installieren.

                  import logging
                  import time
                  
                  import paho.mqtt.client as mqtt
                  from gpiozero import LED
                  from pixel_ring import pixel_ring
                  
                  MQTT_IP = '192.168.192.29'
                  MQTT_PORT = 1891
                  
                  def on_message(client, userdata, message):
                      if 'hermes/nlu/intentNotRecognized' == message.topic:
                          logging.info('intent not recognized')
                          pixel_ring.think()
                          time.sleep(0.5)
                          pixel_ring.off()
                  
                      if 'rhasspy/de/transition/SnowboyWakeListener' == message.topic:
                          if 'loaded' == str(message.payload.decode("utf-8")):
                              logging.info('### Snowboy-Wake-Listener: listen')
                              pixel_ring.listen()
                              time.sleep(0.5)
                              pixel_ring.off()
                  
                      if 'rhasspy/de/transition/WebrtcvadCommandListener' == message.topic:
                          if 'loaded' == str(message.payload.decode("utf-8")):
                              logging.info('### WebCard: listen')
                              pixel_ring.think()
                              time.sleep(2.5)
                              pixel_ring.off()
                  
                      if 'rhasspy/speech-to-text/transcription' == message.topic:
                          if 'loaded' != str(message.payload.decode("utf-8")):
                              logging.info('### Text: listen')
                              pixel_ring.speak()
                              time.sleep(2.5)
                              pixel_ring.off()
                  
                      if message.topic.startswith('hermes/intent/'):
                          logging.info('intent ' + message.topic.rpartition('/')[-1])
                  
                  if __name__ == '__main__':
                  #    logging.basicConfig(filename='test.log', level=logging.INFO)
                      power = LED(5)
                      power.on()
                  
                      pixel_ring.set_brightness(20)
                      pixel_ring.change_pattern('echo')
                  
                      client = mqtt.Client('spracherkenner')
                      client.connect(MQTT_IP, port=MQTT_PORT)
                      client.on_message = on_message
                      client.loop_start()
                      client.subscribe('hermes/nlu/intentNotRecognized')
                      client.subscribe('rhasspy/de/transition/SnowboyWakeListener')
                      client.subscribe('rhasspy/de/transition/WebrtcvadCommandListener')
                      client.subscribe('rhasspy/speech-to-text/transcription')
                      client.subscribe('hermes/intent/#')
                      client.subscribe('rhasspy/de/transition/MaryTTSSentenceSpeaker')
                      logging.info('starting pixels')
                  
                      while True:
                          try:
                              time.sleep(3)
                          except KeyboardInterrupt:
                              client.loop_stop()
                              break
                  
                      pixel_ring.off()
                      power.off()
                      time.sleep(1)
                  

                  Ich habe die MQTT-Adresse und MQTT-Port auf meine mqtt.0-Instanz von ioBroker umgebogen.

                  Zu erwähnen wären noch die beiden Zeilen:

                      power = LED(5)
                      power.on()
                  

                  .GPIO5 wird auf HIGH gesetzt und damit wird beim Respeaker der LED-Ring aktiviert
                  Dadurch leuchtet aber noch nichts, der LED-Ring befindet sich lediglich in "Bereitschaft".

                  Die folgenden 4 if-Abfragen horchen auf bestimmte Topics und lösen dann bestimmte LED-Sequenzen aus (abhängig vom voreingestellten Pattern).:
                  pixel_ring.think() : alle LEDS drehen sich blau/grün
                  pixel_ring.listen() : alle LEDs leuchten konstant blau
                  pixel_ring.speak(): alle LEDs blinken blau/grün

                  anschließend bleiben diese Sequenzen für eine bestimmte Zeit aktiv, dann wird der LED-Ring ausgeschaltet:
                  time.sleep(x.x)
                  pixel_ring.off()

                  Ein Workaround ist das Ganze deshalb, weil momentan nur ein paar Topics von Rhasspy unterstützt werden und das Abschalten der LEDs einfach durch einen Timeout (sleep) realisiert wird.
                  Wenn alle Hermes-Topics von Rhasspy unterstützt werden, wird das Abschalten aber wohl durch die entspr. Topics gesteuert. Für mich ist das so aber erst mal vollkommen ausreichend.

                  Ach ja, der HLC-service muss vor dem Starten des Scriptes mit sudo systemctl stop hermesledcontrol gestoppt werden!.

                  Hier ein Foto meiner Konstruktion (Gehäuse habe ich nach einer Vorlage von Thingiverse auf meinem 3D-Drucker ausgedruckt):
                  led-ring.jpg
                  Gruß
                  Jörg

                  tobetobeT 2 Antworten Letzte Antwort
                  0
                  • joergeliJ joergeli

                    @tobetobe
                    Hallo Thomas,

                    aus der Antwort von KiboOst:

                    Nothing have to be sent to have the led on when service starts.
                    HLC doesn’t send anything on mqtt, it just listen on some topics to give a visual feedback
                    

                    Also horcht HLC auf bestimmte Topics.

                    And once more, actual version of rhasspy doesn’t publish every hermes topics so it doesn’t work actually.
                    

                    Aktuelle Rhasspy-Version sendet (published) nicht alle Hermes-Topics.
                    Wie ich - und Du wahrscheinlich auch - festegestellt habe, werden bei der Installation von HLC zwar die entspr. Topics in ioBroker mqtt.0 angelegt, diese aber nicht von der aktuellen Rhasspy-Version (bei mr 2.4.17) "gefüttert".

                    Ich habe aber einen Workaround von H3adcra5h gefunden, der ein Python-Script geschrieben hat, das zumindest auf einige Topics horcht und dann entspr. LED-Reaktionen auslöst.

                    Das Script ist für ein ReSpeaker 6 Mic gedacht, funktioniert aber auch mit meinem ReSpeaker 4.
                    Die LED-Ringe der ReSpeaker Mics werden über SPI des Raspis angesteuert.
                    Ob es auch mit Deinem Matrix Voice funktioniert, kann ich nich sagen.

                    Ich musste das Script aber etwas anpassen, um es zum Laufen zu bringen.
                    Zusätzlich musste ich die pixel-ring-Library mit pip install pixel_ring installieren.

                    import logging
                    import time
                    
                    import paho.mqtt.client as mqtt
                    from gpiozero import LED
                    from pixel_ring import pixel_ring
                    
                    MQTT_IP = '192.168.192.29'
                    MQTT_PORT = 1891
                    
                    def on_message(client, userdata, message):
                        if 'hermes/nlu/intentNotRecognized' == message.topic:
                            logging.info('intent not recognized')
                            pixel_ring.think()
                            time.sleep(0.5)
                            pixel_ring.off()
                    
                        if 'rhasspy/de/transition/SnowboyWakeListener' == message.topic:
                            if 'loaded' == str(message.payload.decode("utf-8")):
                                logging.info('### Snowboy-Wake-Listener: listen')
                                pixel_ring.listen()
                                time.sleep(0.5)
                                pixel_ring.off()
                    
                        if 'rhasspy/de/transition/WebrtcvadCommandListener' == message.topic:
                            if 'loaded' == str(message.payload.decode("utf-8")):
                                logging.info('### WebCard: listen')
                                pixel_ring.think()
                                time.sleep(2.5)
                                pixel_ring.off()
                    
                        if 'rhasspy/speech-to-text/transcription' == message.topic:
                            if 'loaded' != str(message.payload.decode("utf-8")):
                                logging.info('### Text: listen')
                                pixel_ring.speak()
                                time.sleep(2.5)
                                pixel_ring.off()
                    
                        if message.topic.startswith('hermes/intent/'):
                            logging.info('intent ' + message.topic.rpartition('/')[-1])
                    
                    if __name__ == '__main__':
                    #    logging.basicConfig(filename='test.log', level=logging.INFO)
                        power = LED(5)
                        power.on()
                    
                        pixel_ring.set_brightness(20)
                        pixel_ring.change_pattern('echo')
                    
                        client = mqtt.Client('spracherkenner')
                        client.connect(MQTT_IP, port=MQTT_PORT)
                        client.on_message = on_message
                        client.loop_start()
                        client.subscribe('hermes/nlu/intentNotRecognized')
                        client.subscribe('rhasspy/de/transition/SnowboyWakeListener')
                        client.subscribe('rhasspy/de/transition/WebrtcvadCommandListener')
                        client.subscribe('rhasspy/speech-to-text/transcription')
                        client.subscribe('hermes/intent/#')
                        client.subscribe('rhasspy/de/transition/MaryTTSSentenceSpeaker')
                        logging.info('starting pixels')
                    
                        while True:
                            try:
                                time.sleep(3)
                            except KeyboardInterrupt:
                                client.loop_stop()
                                break
                    
                        pixel_ring.off()
                        power.off()
                        time.sleep(1)
                    

                    Ich habe die MQTT-Adresse und MQTT-Port auf meine mqtt.0-Instanz von ioBroker umgebogen.

                    Zu erwähnen wären noch die beiden Zeilen:

                        power = LED(5)
                        power.on()
                    

                    .GPIO5 wird auf HIGH gesetzt und damit wird beim Respeaker der LED-Ring aktiviert
                    Dadurch leuchtet aber noch nichts, der LED-Ring befindet sich lediglich in "Bereitschaft".

                    Die folgenden 4 if-Abfragen horchen auf bestimmte Topics und lösen dann bestimmte LED-Sequenzen aus (abhängig vom voreingestellten Pattern).:
                    pixel_ring.think() : alle LEDS drehen sich blau/grün
                    pixel_ring.listen() : alle LEDs leuchten konstant blau
                    pixel_ring.speak(): alle LEDs blinken blau/grün

                    anschließend bleiben diese Sequenzen für eine bestimmte Zeit aktiv, dann wird der LED-Ring ausgeschaltet:
                    time.sleep(x.x)
                    pixel_ring.off()

                    Ein Workaround ist das Ganze deshalb, weil momentan nur ein paar Topics von Rhasspy unterstützt werden und das Abschalten der LEDs einfach durch einen Timeout (sleep) realisiert wird.
                    Wenn alle Hermes-Topics von Rhasspy unterstützt werden, wird das Abschalten aber wohl durch die entspr. Topics gesteuert. Für mich ist das so aber erst mal vollkommen ausreichend.

                    Ach ja, der HLC-service muss vor dem Starten des Scriptes mit sudo systemctl stop hermesledcontrol gestoppt werden!.

                    Hier ein Foto meiner Konstruktion (Gehäuse habe ich nach einer Vorlage von Thingiverse auf meinem 3D-Drucker ausgedruckt):
                    led-ring.jpg
                    Gruß
                    Jörg

                    tobetobeT Offline
                    tobetobeT Offline
                    tobetobe
                    schrieb am zuletzt editiert von
                    #39

                    @joergeli
                    Hallo Jörg,
                    Zunächst einmal Glückwunsch, du bist da ja schon recht weit gekommen.

                    Es war auch mein Verständnis, dass HLC auf bestimmte Topics reagieren kann, was ja auch durch das Skript bestätigt wird.

                    Ich hoffe, diese LED Steuerung beansprucht den Raspi nicht zu sehr, sodass es wieder zu Problemen bei der Erkennung der Intents kommt.

                    Auf alle Fälle jedenfalls ein riesiger Schritt nach vorne. Ich komme leider erst am nächsten Wochenende wieder zum Testen.

                    Beste Grüße
                    tobetobe

                    joergeliJ 1 Antwort Letzte Antwort
                    0
                    • tobetobeT tobetobe

                      @joergeli
                      Hallo Jörg,
                      Zunächst einmal Glückwunsch, du bist da ja schon recht weit gekommen.

                      Es war auch mein Verständnis, dass HLC auf bestimmte Topics reagieren kann, was ja auch durch das Skript bestätigt wird.

                      Ich hoffe, diese LED Steuerung beansprucht den Raspi nicht zu sehr, sodass es wieder zu Problemen bei der Erkennung der Intents kommt.

                      Auf alle Fälle jedenfalls ein riesiger Schritt nach vorne. Ich komme leider erst am nächsten Wochenende wieder zum Testen.

                      joergeliJ Online
                      joergeliJ Online
                      joergeli
                      schrieb am zuletzt editiert von
                      #40

                      @tobetobe
                      Hallo Thomas,

                      ich konnte bislang keine Auslastungsprobleme durch die LED-Steuerung feststellen.

                      mal was anderes: Was hast Du in Rhasspy unter Intent Recognition aktiviert?

                      Ich bin von "Do intent recognition with fuzzywuzzy on this device" auf
                      "Do intent recognition with OpenFST on this device" , bzw. "fsticuffs" gewechselt und habe
                      zusätzlich das "Fuzzy text matching" ausgeschaltet.

                      Warum?:
                      Nun, ich hatte doch einige Fehlerkennungen meiner Sätze, worauf dann nicht das gewünschte Intent, sondern ein anderes ausgelöst wurde.
                      Ich verstehe das mit OpenFST so, daß hier nur die trainierten Sätze erkannt werden und nicht versucht wird, mit "fuzzy text matching" Unbekanntes zu erkennen.

                      Der Nachteil ist zwar, daß wirklich nur auf die exakt trainierten sentences reagiert wird, aber andererseits keine Fehlinterpretionen mehr vorkommen können. Bei Nichterkennung wird dann halt kein Intent ausgelöst.

                      Kannst ja nächstes Wochenende mal berichten, wie sich das bei Dir mit Fehlerkennungen verhält.

                      Gruß
                      Jörg

                      tobetobeT 1 Antwort Letzte Antwort
                      0
                      • tobetobeT Offline
                        tobetobeT Offline
                        tobetobe
                        schrieb am zuletzt editiert von
                        #41

                        Hi Jörg,
                        Das schaue ich mir gerne am nächsten Wochenende an. Allerdings verfolge ich aktuell die Lösung eines anderen Problems. Siehe hier https://community.rhasspy.org/t/number-range-not-working/398/15

                        Auf der einen Seite wird behauptet, dass Kaldi das bessere Erkennungsverfahren darstellt. Auf der anderen Seite wird aber auch wieder darauf hingewiesen, dass Kaldi mehr Ressourcen in Anspruch nimmt, was wiederum zu einer schlechteren Erkennungsquote führen könnte. Ich brauche Zeit, mir das in Ruhe anzuschauen. Next weekend...

                        Beste Grüße
                        tobetobe

                        joergeliJ 1 Antwort Letzte Antwort
                        0
                        • tobetobeT tobetobe

                          Hi Jörg,
                          Das schaue ich mir gerne am nächsten Wochenende an. Allerdings verfolge ich aktuell die Lösung eines anderen Problems. Siehe hier https://community.rhasspy.org/t/number-range-not-working/398/15

                          Auf der einen Seite wird behauptet, dass Kaldi das bessere Erkennungsverfahren darstellt. Auf der anderen Seite wird aber auch wieder darauf hingewiesen, dass Kaldi mehr Ressourcen in Anspruch nimmt, was wiederum zu einer schlechteren Erkennungsquote führen könnte. Ich brauche Zeit, mir das in Ruhe anzuschauen. Next weekend...

                          joergeliJ Online
                          joergeliJ Online
                          joergeli
                          schrieb am zuletzt editiert von
                          #42

                          @tobetobe
                          Mmmh, bei mir wird bei Speech Recognition angezeigt:
                          Do speech recognition with kaldi on this device
                          Not compatible with this profile

                          .. und somit kann ich es auch nicht auswählen.

                          Gruß
                          Jörg

                          tobetobeT 1 Antwort Letzte Antwort
                          0
                          • tobetobeT Offline
                            tobetobeT Offline
                            tobetobe
                            schrieb am zuletzt editiert von
                            #43

                            Au. Das ist wohl ein Fall fürs Entwicklerteam

                            Beste Grüße
                            tobetobe

                            1 Antwort Letzte Antwort
                            0
                            • joergeliJ joergeli

                              @tobetobe
                              Mmmh, bei mir wird bei Speech Recognition angezeigt:
                              Do speech recognition with kaldi on this device
                              Not compatible with this profile

                              .. und somit kann ich es auch nicht auswählen.

                              Gruß
                              Jörg

                              tobetobeT Offline
                              tobetobeT Offline
                              tobetobe
                              schrieb am zuletzt editiert von
                              #44

                              @joergeli
                              Hallo Jörg,
                              Ich hatte auch schon Fälle, die zu Fehlermeldungen führten und die über die Konfig nicht behoben werden konnten. Mach bitte dahermal folgendes: Im Rhasspy Verzeichnis alles löschen, was nach Kaldi klingt, also Ordner und Dateien. Dann profile.json editieren und ebenfalls alle Einträge zu Kaldi löschen. Am besten Den Raspi neustarten und danach in der Rhasspy Konfig Kaldi neu einrichten und TRAIN ausführen. Falls das nicht helfen sollte, brauchst du in der Tat Hilfe vom Rhasspy Forum.

                              Beste Grüße
                              Th

                              Beste Grüße
                              tobetobe

                              joergeliJ 1 Antwort Letzte Antwort
                              0
                              • tobetobeT tobetobe

                                @joergeli
                                Hallo Jörg,
                                Ich hatte auch schon Fälle, die zu Fehlermeldungen führten und die über die Konfig nicht behoben werden konnten. Mach bitte dahermal folgendes: Im Rhasspy Verzeichnis alles löschen, was nach Kaldi klingt, also Ordner und Dateien. Dann profile.json editieren und ebenfalls alle Einträge zu Kaldi löschen. Am besten Den Raspi neustarten und danach in der Rhasspy Konfig Kaldi neu einrichten und TRAIN ausführen. Falls das nicht helfen sollte, brauchst du in der Tat Hilfe vom Rhasspy Forum.

                                Beste Grüße
                                Th

                                joergeliJ Online
                                joergeliJ Online
                                joergeli
                                schrieb am zuletzt editiert von joergeli
                                #45

                                @tobetobe
                                Hallo Thomas,
                                Es gibt bei mir nur eine einzige Datei kaldi_custom_words.txt im Verzeichnis /home/pi/.config/rhasspy/profiles/de und sonst nichts, was auf Kaldi hinweist.
                                Insofern stimmt die obige Angabe aus den Rhasspy-Settings Do speech recognition with kaldi on this device -> Not compatible with this profile wohl schon, denn Kaldi ist bei mir anscheinend nicht installiert worden.
                                Ich nehme an, daß das mit dem "de"-Profil zusammenhängt.

                                Ist aber nicht so schlimm, denn mit Pocketsphinx klappt es soweit ganz gut.
                                Was Rhasspy bei mir in den sentences nicht mag:

                                [Zeit]
                                zeit_name = (zeit) {name}
                                zeit_state = (späht) {state}
                                wie späht ist es
                                wieviel uhr haben wir
                                wieviel uhr ist es
                                

                                ist das "wie späht ist es".
                                Wobei er sich aber nicht an dem "späht", also Umlaut stört, sondern an dem "ist es", das wird manchmal vollkommen willkürlich durch ein anderes Wort ersetzt.
                                Komischerweise wird "wieviel uhr ist es" korrekt erkannt.
                                Auch mit "wieviel uhr haben wir" klappt es einwandfrei.

                                Das ist das einzige Erkennungsproblem bei mir, alle anderen Befehle werden korrekt umgesetzt.
                                Insofern belasse ich es bei Pocketsphinx.

                                Gruß
                                Jörg

                                tobetobeT 2 Antworten Letzte Antwort
                                0
                                • joergeliJ joergeli

                                  @tobetobe
                                  Hallo Thomas,
                                  Es gibt bei mir nur eine einzige Datei kaldi_custom_words.txt im Verzeichnis /home/pi/.config/rhasspy/profiles/de und sonst nichts, was auf Kaldi hinweist.
                                  Insofern stimmt die obige Angabe aus den Rhasspy-Settings Do speech recognition with kaldi on this device -> Not compatible with this profile wohl schon, denn Kaldi ist bei mir anscheinend nicht installiert worden.
                                  Ich nehme an, daß das mit dem "de"-Profil zusammenhängt.

                                  Ist aber nicht so schlimm, denn mit Pocketsphinx klappt es soweit ganz gut.
                                  Was Rhasspy bei mir in den sentences nicht mag:

                                  [Zeit]
                                  zeit_name = (zeit) {name}
                                  zeit_state = (späht) {state}
                                  wie späht ist es
                                  wieviel uhr haben wir
                                  wieviel uhr ist es
                                  

                                  ist das "wie späht ist es".
                                  Wobei er sich aber nicht an dem "späht", also Umlaut stört, sondern an dem "ist es", das wird manchmal vollkommen willkürlich durch ein anderes Wort ersetzt.
                                  Komischerweise wird "wieviel uhr ist es" korrekt erkannt.
                                  Auch mit "wieviel uhr haben wir" klappt es einwandfrei.

                                  Das ist das einzige Erkennungsproblem bei mir, alle anderen Befehle werden korrekt umgesetzt.
                                  Insofern belasse ich es bei Pocketsphinx.

                                  Gruß
                                  Jörg

                                  tobetobeT Offline
                                  tobetobeT Offline
                                  tobetobe
                                  schrieb am zuletzt editiert von
                                  #46

                                  @joergeli
                                  @joergeli
                                  Hallo Jörg,
                                  Versuche es mal mit einem alternativen Aufbau des Sentence, zB so wie bei ChangeLightState (s.o.). Ich würde es auch mit Alternativen für das Intent versuchen, also (spät | Uhr | Uhrzeit). Die Füllwörter wie „wie, wieviel“ sowie „ist“ und „es“ würde ich als Optionen einbauen, die nicht unbedingt gesprochen werden müssen. Zusätzlich hättest du noch die Möglichkeit, „istes“ als ein Customer Word anzulernen. Und dann hilft nur probieren und testen

                                  Gruß Thomas

                                  Beste Grüße
                                  tobetobe

                                  joergeliJ 1 Antwort Letzte Antwort
                                  0
                                  • tobetobeT tobetobe

                                    @joergeli
                                    @joergeli
                                    Hallo Jörg,
                                    Versuche es mal mit einem alternativen Aufbau des Sentence, zB so wie bei ChangeLightState (s.o.). Ich würde es auch mit Alternativen für das Intent versuchen, also (spät | Uhr | Uhrzeit). Die Füllwörter wie „wie, wieviel“ sowie „ist“ und „es“ würde ich als Optionen einbauen, die nicht unbedingt gesprochen werden müssen. Zusätzlich hättest du noch die Möglichkeit, „istes“ als ein Customer Word anzulernen. Und dann hilft nur probieren und testen

                                    Gruß Thomas

                                    joergeliJ Online
                                    joergeliJ Online
                                    joergeli
                                    schrieb am zuletzt editiert von
                                    #47

                                    @tobetobe
                                    Hallo Thomas,
                                    schon gesehen ?: MATRIX Labs has created two Rhasspy tutorials for beginners using a MATRIX microphone

                                    Gruß
                                    Jörg

                                    tobetobeT 1 Antwort Letzte Antwort
                                    0
                                    • joergeliJ joergeli

                                      @tobetobe
                                      Hallo Thomas,
                                      schon gesehen ?: MATRIX Labs has created two Rhasspy tutorials for beginners using a MATRIX microphone

                                      Gruß
                                      Jörg

                                      tobetobeT Offline
                                      tobetobeT Offline
                                      tobetobe
                                      schrieb am zuletzt editiert von
                                      #48

                                      @joergeli
                                      Hallo Jörg,
                                      Nein noch nicht. Vielen Dank für den Tipp. Das muss ich mir unbedingt bei Gelegenheit mal anschauen.

                                      Gruß Thomas

                                      Beste Grüße
                                      tobetobe

                                      1 Antwort Letzte Antwort
                                      0
                                      • joergeliJ joergeli

                                        @tobetobe
                                        Hallo Thomas,
                                        Es gibt bei mir nur eine einzige Datei kaldi_custom_words.txt im Verzeichnis /home/pi/.config/rhasspy/profiles/de und sonst nichts, was auf Kaldi hinweist.
                                        Insofern stimmt die obige Angabe aus den Rhasspy-Settings Do speech recognition with kaldi on this device -> Not compatible with this profile wohl schon, denn Kaldi ist bei mir anscheinend nicht installiert worden.
                                        Ich nehme an, daß das mit dem "de"-Profil zusammenhängt.

                                        Ist aber nicht so schlimm, denn mit Pocketsphinx klappt es soweit ganz gut.
                                        Was Rhasspy bei mir in den sentences nicht mag:

                                        [Zeit]
                                        zeit_name = (zeit) {name}
                                        zeit_state = (späht) {state}
                                        wie späht ist es
                                        wieviel uhr haben wir
                                        wieviel uhr ist es
                                        

                                        ist das "wie späht ist es".
                                        Wobei er sich aber nicht an dem "späht", also Umlaut stört, sondern an dem "ist es", das wird manchmal vollkommen willkürlich durch ein anderes Wort ersetzt.
                                        Komischerweise wird "wieviel uhr ist es" korrekt erkannt.
                                        Auch mit "wieviel uhr haben wir" klappt es einwandfrei.

                                        Das ist das einzige Erkennungsproblem bei mir, alle anderen Befehle werden korrekt umgesetzt.
                                        Insofern belasse ich es bei Pocketsphinx.

                                        Gruß
                                        Jörg

                                        tobetobeT Offline
                                        tobetobeT Offline
                                        tobetobe
                                        schrieb am zuletzt editiert von
                                        #49

                                        @joergeli
                                        Hallo Jörg,

                                        ich habe mir deine Frage zur Uhrzeit nochmals angeschaut und mir folgenden Sentence gebaut:

                                        [GetTime]
                                        time_state = (spät | uhr | zeit | uhrzeit) {state}
                                        (wie | wieviel | was | sag mir) [(ist die)] <time_state> [(ist es | haben wir)]
                                        

                                        Ich habe alle möglichen Fragen durchprobiert, angefangen bei wie ist die zeit über wie spät ist es, wieviel uhr ist es bis hin zu sag mir die zeit, sag mir wieviel uhr es ist usw. Das klappt bei mir alles und der State wird als spät, uhr, uhrzeit, zeit an mqtt ausgegeben, wo die Abfrage dann entsprechend weiter verarbeitet werden kann.

                                        Vielleicht kannst du damit ja noch etwas anfangen.

                                        Noch etwas anderes: die beiden Artikel zu Matrix kannte ich doch schon. Ich dachte, es wäre etwas neues...

                                        Und bei der Intent Erkennung arbeite ich jetzt mit Kaldi. Hier (wie auch zuvor bei Pocketsphinx) habe ich den Open transcription mode NICHT eingeschaltet. Ich hatte gelesen, dass dies zu erheblich längeren Antwortzeiten führt.

                                        Beste Grüße
                                        tobetobe

                                        joergeliJ 2 Antworten Letzte Antwort
                                        0
                                        • joergeliJ joergeli

                                          @tobetobe
                                          Hallo Thomas,

                                          ich konnte bislang keine Auslastungsprobleme durch die LED-Steuerung feststellen.

                                          mal was anderes: Was hast Du in Rhasspy unter Intent Recognition aktiviert?

                                          Ich bin von "Do intent recognition with fuzzywuzzy on this device" auf
                                          "Do intent recognition with OpenFST on this device" , bzw. "fsticuffs" gewechselt und habe
                                          zusätzlich das "Fuzzy text matching" ausgeschaltet.

                                          Warum?:
                                          Nun, ich hatte doch einige Fehlerkennungen meiner Sätze, worauf dann nicht das gewünschte Intent, sondern ein anderes ausgelöst wurde.
                                          Ich verstehe das mit OpenFST so, daß hier nur die trainierten Sätze erkannt werden und nicht versucht wird, mit "fuzzy text matching" Unbekanntes zu erkennen.

                                          Der Nachteil ist zwar, daß wirklich nur auf die exakt trainierten sentences reagiert wird, aber andererseits keine Fehlinterpretionen mehr vorkommen können. Bei Nichterkennung wird dann halt kein Intent ausgelöst.

                                          Kannst ja nächstes Wochenende mal berichten, wie sich das bei Dir mit Fehlerkennungen verhält.

                                          Gruß
                                          Jörg

                                          tobetobeT Offline
                                          tobetobeT Offline
                                          tobetobe
                                          schrieb am zuletzt editiert von
                                          #50

                                          @joergeli said in Rhasspy Offline Sprachsteuerung:

                                          mal was anderes: Was hast Du in Rhasspy unter Intent Recognition aktiviert?
                                          Ich bin von "Do intent recognition with fuzzywuzzy on this device" auf
                                          "Do intent recognition with OpenFST on this device" , bzw. "fsticuffs" gewechselt und habe
                                          zusätzlich das "Fuzzy text matching" ausgeschaltet.

                                          Also, ich bin nun deiner Frage nochmals genauer nachgegangen. Ich verwende ebenfalls OpenFST allerdings mit der Option Fuzzy Text Matching. Die Erkennung funktioniert bei mir damit soweit ganz gut. Alle Probleme, die bei mir mit der Intent Erkennung auftraten, hatten eher mit einem unsauberen Aufbau der Slots und Sentences zu tun. Da ich beides nun relativ sauber strukturiert habe, treten auch kaum noch Fehler auf, selbst bei Hintergrundgeräuschen.

                                          In wie weit, mein Umstieg auf Kaldi hierbei einen positiven Beitrag geleistet hat, kann ich noch nicht abschließend beurteilen.

                                          Beste Grüße
                                          tobetobe

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          860

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe