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.7k

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

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

Rhasspy Offline Sprachsteuerung

Geplant Angeheftet Gesperrt Verschoben Off Topic
403 Beiträge 30 Kommentatoren 100.4k 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.
  • 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
                      • tobetobeT tobetobe

                        @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.

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

                        @tobetobe
                        Hallo Thomas,
                        ich habe Deinen sentence 1:1 übernommen und jetzt funktioniert die Uhrzeit-Abfrage auch bei mir.
                        Keine Ahnung, warum da vorher der Wurm drin war. Danke!

                        Intent Recognition mache ich mit OpenFST (wobei "Fuzzy text matching" ausgeschaltet ist).
                        Speech Recognition mache ich nach wie vor mit "pocketsphinx", "Open transcription mode " ist bei mir ebenfalls ausgeschaltet.

                        Ich habe noch mal mit den webrtcvad-Einstellungen gespielt, um die Erkennung bei Umgebungsgeräuschen (TV/Radio) zu verbessern.
                        Dazu habe ich folgende Einstellungen für webrtcvad im profile.json ergänzt:

                        {
                            "command": {
                                "webrtcvad": {
                                    "silence_sec": 1.5,
                                    "timeout_sec": 4,
                                    "vad_mode": 3
                                }
                            },
                            "handle": {
                                "command": {
                                    "program": "$RHASSPY_BASE_DIR/bin/mock-commands/handle.sh"
                                }
                            },
                            "intent": {
                        .........
                        

                        Meine Überlegungen dabei:
                        silence_sec:
                        Die Zeitspanne zwischen WakeWord-Erkennung und Sprechen des Befehls war mir mit 0,5s zu kurz.
                        Deshalb habe ich sie auf 1,5s geändert, damit ich nach der WakeWord-Erkennung etwas länger Zeit habe, um meinen Sprachbefehl abzusetzen.

                        timeout_sec:
                        Habe ich von 30s auf 4s verkürzt, damit wird erzwungen, daß auch bei Umgebungsgeräuschen Rhasspy nach 4 Sekunden gezwungen wird, mit der Spracherkennung zu beginnen.
                        Bei den defaultmäßigen 30s hat Rhasspy (bei Umgebungsgeräuschen) diese 30s abgewartet, bevor er mit der Sprachanalyse begonnen hat.

                        vad_mode:
                        Lt. Beschreibung: "how aggressive the voice activity filter vad_mode is: this is an integer between 0 and 3. 0 is the least aggressive about filtering out non-speech, 3 is the most aggressive."
                        Ich bin mir nicht sicher, ob meine Umstellung von 0 auf 3 signifikante Änderungen bewirkt.

                        Gefühlt habe ich jetzt auch bei Umgebungsgeräuschen eine bessere Chance, daß Rhasspy meine Befehle erkennt.
                        Sehr schlecht ist es aber nach wie vor, wenn im TV, oder Radio gesprochen wird.
                        Bei musikalischem Hintergrund klappt es so aber ganz gut.

                        Gruß
                        Jörg

                        1 Antwort Letzte Antwort
                        0
                        • tobetobeT tobetobe

                          @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.

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

                          @tobetobe
                          Hallo Thomas,
                          ich habe gerade hier gelesen, daß "Sikk" einfach seinen Fernseher automatisch stumm schaltet (mute), wenn das WakeWord erkannt wurde.
                          Nachdem das Intent erkannt wurde, deaktiviert er wohl die Stummschaltung wieder.
                          Das ist m.E. ein guter Workaround, um das leidige Erkennen bei TV-Geräuschen zu umgehen.
                          Muß ich bei mir mal testen.

                          tobetobeT 1 Antwort Letzte Antwort
                          0
                          • joergeliJ joergeli

                            @tobetobe
                            Hallo Thomas,
                            ich habe gerade hier gelesen, daß "Sikk" einfach seinen Fernseher automatisch stumm schaltet (mute), wenn das WakeWord erkannt wurde.
                            Nachdem das Intent erkannt wurde, deaktiviert er wohl die Stummschaltung wieder.
                            Das ist m.E. ein guter Workaround, um das leidige Erkennen bei TV-Geräuschen zu umgehen.
                            Muß ich bei mir mal testen.

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

                            @joergeli
                            Hallo Jörg,
                            deine Einstellungen zu webrtcvad hören sich ganz vernünftig an; ich habe sie so übernommen. Nun muss ich testen...

                            Nicht übernommen habe ich den Eintrag zu "handle". Wozu gehört der, bzw wozu wird der benötigt?

                            Die Idee, Musik und TV einfach stumm zu schalten, hatte ich auch schon. Die Umsetzung scheiterte bei mir lediglich daran, dass es mir noch nicht gelungen ist, meinen Harmony Hub per Sofware zu steuern.

                            @joergeli
                            @Tictactoo
                            übrigens ist es mir soeben gelungen, Dimmer- und Rollladen-Werte im Bereich 1 bis 100 an die Devices schicken zu können. Ich musste nur eine geringfügige Änderung an den Sentences vornehmen. Falls euch so etwas auch interessiert, müsst ihr zur korrekten Übergabe der Werte an zB MQTT folgendes beachten:

                            [ChangeDimmerLevel]
                            dimmer_level =  (1..100) {value}
                            ($device_change_command_synonyms) [(die | das | den)] ($device_dimmer_name){device} [auf] <dimmer_level> (:) {state:.LEVEL} [Prozent]
                            

                            Ein externer Bezug auf einen Slot-Eintrag muss erstens in Klammern stehen und zweitens anschließend mit seiner {Kennung} versehen werden, also zB ($device_dimmer_name){device}.

                            Ein lokaler Bezug hingegen wird wie in Zeile 2 dargestellt, mit seinen Werten und seiner Kennung definiert und im Sentence ohne nachstehende Kennung verwendet, also zB nur <dimmer_level> (ohne {value})

                            Dann funktioniert auch dein Steuerungsskript sowohl für schaltbare, wie auch für dimmbare Lampen fehlerlos, Tictactoo

                            Beste Grüße
                            tobetobe

                            joergeliJ 1 Antwort Letzte Antwort
                            0
                            • tobetobeT tobetobe

                              @joergeli
                              Hallo Jörg,
                              deine Einstellungen zu webrtcvad hören sich ganz vernünftig an; ich habe sie so übernommen. Nun muss ich testen...

                              Nicht übernommen habe ich den Eintrag zu "handle". Wozu gehört der, bzw wozu wird der benötigt?

                              Die Idee, Musik und TV einfach stumm zu schalten, hatte ich auch schon. Die Umsetzung scheiterte bei mir lediglich daran, dass es mir noch nicht gelungen ist, meinen Harmony Hub per Sofware zu steuern.

                              @joergeli
                              @Tictactoo
                              übrigens ist es mir soeben gelungen, Dimmer- und Rollladen-Werte im Bereich 1 bis 100 an die Devices schicken zu können. Ich musste nur eine geringfügige Änderung an den Sentences vornehmen. Falls euch so etwas auch interessiert, müsst ihr zur korrekten Übergabe der Werte an zB MQTT folgendes beachten:

                              [ChangeDimmerLevel]
                              dimmer_level =  (1..100) {value}
                              ($device_change_command_synonyms) [(die | das | den)] ($device_dimmer_name){device} [auf] <dimmer_level> (:) {state:.LEVEL} [Prozent]
                              

                              Ein externer Bezug auf einen Slot-Eintrag muss erstens in Klammern stehen und zweitens anschließend mit seiner {Kennung} versehen werden, also zB ($device_dimmer_name){device}.

                              Ein lokaler Bezug hingegen wird wie in Zeile 2 dargestellt, mit seinen Werten und seiner Kennung definiert und im Sentence ohne nachstehende Kennung verwendet, also zB nur <dimmer_level> (ohne {value})

                              Dann funktioniert auch dein Steuerungsskript sowohl für schaltbare, wie auch für dimmbare Lampen fehlerlos, Tictactoo

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

                              @tobetobe
                              Hallo Thomas,
                              Zitat:
                              "Nicht übernommen habe ich den Eintrag zu "handle". Wozu gehört der, bzw wozu wird der benötigt?"
                              ... das war sowieso schon in meinem Profil drin.
                              Hatte ich nur im Code stehen lassen, damit man sehen kann, an welcher Stelle die webcrd-Einträge eingefügt wurden.

                              1 Antwort 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
                                #55

                                @joergeli said in Rhasspy Offline Sprachsteuerung:

                                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.

                                Hallo Jörg,

                                ich bin gerade dabei zu testen, scheitere aber am Skript. Ich bekomme diese Fehlermeldung nach Aufruf des Skripts mit python2 (python3 ging garnicht):

                                pi@rhasspy-1:~/.local/lib/python2.7/site-packages/pixel_ring $ sudo python2 pixelring.py
                                Traceback (most recent call last):
                                  File "pixelring.py", line 12, in <module>
                                    from pixel_ring import pixel_ring
                                ImportError: cannot import name pixel_ring
                                

                                Daher einige Fragen:

                                • Hast du pixel_ring mit oder ohne sudo installiert?
                                • In welchem Verzeichnis? Oder egal?
                                • In welchem Verzeichnis liegt dein Skript?
                                • Was musstest du sonst noch anpassen (mqtt-IP und Port sind klar...)?

                                Wäre klasse, wenn du mir hier mit einem Tipp weiterhelfen könntest.

                                Dann nochmals zurück zur Intent Recognition: Ich habe deine Werte für webrtcvad übernommen, allerdings mit Timeout 3 Sekunden und, wie geschildert, mit Kaldi und eingeschalteter Option Fuzzy text matching. Damit habe ich verschiedenste Befehle über eine Distanz von 6 Metern zum MatrixVoice getestet. Und zwar zunächst ohne Hintergrundgeräusche: Alles OK. Danach habe ich das Radio eingeschaltet. An der Stelle, wo ich stand, hatte ich einen Schallpegel von ca. 35 - 40 dBA im Durchschnitt, bis 60 dBA im Peak. Am Ort des Mikrofons gemessen betrug der Schallpegel ca. 30 - 35 dBA im Durchschnitt und ca. 50 im Peak. Dennoch gingen alle Kommandos fehlerfrei durch. Das ist absolut erfreulich.

                                Allerdings habe ich dafür auch einen Preis zu zahlen, nämlich dass die Erkennung deutlich mehrere Sekunden dauert, abhängig von der Komplexität des Kommandos.

                                Als nächstes werde ich jetzt meinen Pi3 mit dem MatrixVoice zu einem reinen Rhasspy-Satelliten umkonfigurieren und die komplexeren Funktionalitäten auf einen Rhasspy-Host verlagern (der dann zukünftig auch mehrere Satelliten bedienen kann).

                                Anmerken möchte ich noch, dass ich allerdings schon eine verlängerte Reaktionszeit festgestellt hatte, nachdem ich beim Rhasspy vom LAN auf WLAN gewechselt habe. Nachvollziehbar, dass komplexere Anwendungen wie Kaldi über die im Vergleich zum LAN langsamere WLAN Verbindung noch mehr ausgebremst werden.

                                Beste Grüße
                                tobetobe

                                joergeliJ 2 Antworten Letzte Antwort
                                0
                                • tobetobeT tobetobe

                                  @joergeli said in Rhasspy Offline Sprachsteuerung:

                                  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.

                                  Hallo Jörg,

                                  ich bin gerade dabei zu testen, scheitere aber am Skript. Ich bekomme diese Fehlermeldung nach Aufruf des Skripts mit python2 (python3 ging garnicht):

                                  pi@rhasspy-1:~/.local/lib/python2.7/site-packages/pixel_ring $ sudo python2 pixelring.py
                                  Traceback (most recent call last):
                                    File "pixelring.py", line 12, in <module>
                                      from pixel_ring import pixel_ring
                                  ImportError: cannot import name pixel_ring
                                  

                                  Daher einige Fragen:

                                  • Hast du pixel_ring mit oder ohne sudo installiert?
                                  • In welchem Verzeichnis? Oder egal?
                                  • In welchem Verzeichnis liegt dein Skript?
                                  • Was musstest du sonst noch anpassen (mqtt-IP und Port sind klar...)?

                                  Wäre klasse, wenn du mir hier mit einem Tipp weiterhelfen könntest.

                                  Dann nochmals zurück zur Intent Recognition: Ich habe deine Werte für webrtcvad übernommen, allerdings mit Timeout 3 Sekunden und, wie geschildert, mit Kaldi und eingeschalteter Option Fuzzy text matching. Damit habe ich verschiedenste Befehle über eine Distanz von 6 Metern zum MatrixVoice getestet. Und zwar zunächst ohne Hintergrundgeräusche: Alles OK. Danach habe ich das Radio eingeschaltet. An der Stelle, wo ich stand, hatte ich einen Schallpegel von ca. 35 - 40 dBA im Durchschnitt, bis 60 dBA im Peak. Am Ort des Mikrofons gemessen betrug der Schallpegel ca. 30 - 35 dBA im Durchschnitt und ca. 50 im Peak. Dennoch gingen alle Kommandos fehlerfrei durch. Das ist absolut erfreulich.

                                  Allerdings habe ich dafür auch einen Preis zu zahlen, nämlich dass die Erkennung deutlich mehrere Sekunden dauert, abhängig von der Komplexität des Kommandos.

                                  Als nächstes werde ich jetzt meinen Pi3 mit dem MatrixVoice zu einem reinen Rhasspy-Satelliten umkonfigurieren und die komplexeren Funktionalitäten auf einen Rhasspy-Host verlagern (der dann zukünftig auch mehrere Satelliten bedienen kann).

                                  Anmerken möchte ich noch, dass ich allerdings schon eine verlängerte Reaktionszeit festgestellt hatte, nachdem ich beim Rhasspy vom LAN auf WLAN gewechselt habe. Nachvollziehbar, dass komplexere Anwendungen wie Kaldi über die im Vergleich zum LAN langsamere WLAN Verbindung noch mehr ausgebremst werden.

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

                                  @tobetobe
                                  Hallo Thomas,
                                  ich habe pixel_ring bei mir im Verzeichnis /home/pi/4mics_hat/pixel_ring installiert.
                                  Das ist das Verzeichnis, wo meine ReSpeaker-Dateien liegen, ist aber (wahrscheinlich) egal, wo es installiert wird.
                                  Ob mit oder ohne sudo weiß ich nicht mehr, allerdings gehören nach Installation der Ordner pixel_ring und die darunter liegenden Dateien/Ordner den User "pi".

                                  Mein python-script liegt im Ordner /home/pi/4mics_hat.
                                  Achtung: das Script läuft nur, wenn ich vorher die virtuelle Umgebung für Python starte.
                                  source /home/pi/env/bin/activate
                                  Diese virtuelle Umgebung wurde bei mir mit der Installation meines ReSpeaker Mic-Arrays angelegt.
                                  Die Eingabezeile im Terminal sieht dann so aus, wenn die virtuelle Umgebung aktiv ist:
                                  (env) pi@Rhasspy:~/4mics_hat $

                                  Anschließend kann ich das Script mit
                                  (env) pi@Rhasspy:~/4mics_hat $ python rhasspy_led_ring.py
                                  starten

                                  Hinweis: Das Script, bzw. die virtuelle Umgebung kann man nur mit
                                  Ctrl + c und anschl.
                                  (env) pi@Rhasspy:~/4mics_hat $ deactivate
                                  beenden.

                                  Damit das Script, bzw. der Pixel-Ring automatisch beim Boot gestartet wird, habe ich mit sudo nano .profile
                                  folgende Zeile in die Datei .profile eingefügt:
                                  (cd /home/pi/4mics_hat; echo "4Mic:Hat"; source /home/pi/env/bin/activate; echo "Virtuelle Umgebung gestartet"; python rhasspy_led_ring.py)&
                                  (Wichtig ist das & am Ende)
                                  Zuerst wird in das Verzeichnis /home/pi/4mics_hat gewechselt.
                                  Dann wird die virtuelle Umgebung gestasrtet: source /home/pi/env/bin/activate
                                  Das echo xxxxxxxx gibt nur einen Hinweistext aus.
                                  Anschließend wird der Pixel-Ring gestartet: python rhasspy_led_ring,py

                                  Man kann das Ganze wohl auch als Service implementieren, das habe ich aber nicht hinbekommen.

                                  Wie schon erwähnt, weiß ich nicht, ob das Script auch mit Deinem Matrix-Voice funktioniert
                                  Ich weiß z.B. nicht, ob die Befehle:

                                      power = LED(5)
                                      power.on()
                                  

                                  speziell für das ReSpeaker Mic-Array gelten.
                                  (Damit wird GPIO5 auf HIGH gesetzt.)

                                  Ich werde aber trotzdem abwarten, bis in einer künftigen Rhasspy-Version alle Hermes MQTT-Topics unterstützt werden,
                                  denn dann soll ja angeblich auch HERMES-LED funktionieren.

                                  Intent Recognition:
                                  Das Wakeword wird bei mir meist auch bei laufendem TV erkannt, nur mit der anschl. Intent-Erkennung hat es dann gehapert.
                                  Ich habe heute den Workaround implementiert, daß ich den Fernseher nach WakeWord-Erkennung stumm (mute) schalte und ein paar Sekunden nach Abschluß der Intent-Erkennung die Stummschaltung wieder aufhebe.
                                  Die Stummschaltung läuft bei mir über JavaScript -> Broadlink RM 3+ --> Umwandlung und Senden via Infrarot.
                                  Das funktioniert soweit ganz gut.

                                  Die Problematik hängt aber m.E. nicht nur mit dem Schallpegel zusammen, sondern ob im TV/Radio gerade gesprochen, oder Musik gespielt wird.
                                  Musik ist m.E. unproblematischer, wenn aber gesprochen wird, weiß Rhasspy nicht , "auf wen" er hören soll, auf den TV/Radio, oder meine Stimme - was dann i.d.R. mit einem "nicht erkannt" quittiert wird.
                                  Ich hatte mal bei einem Nachbarn, der Alexa hat, nachgefragt, wie das bei ihm funktioniert.
                                  Angeblich soll es keine Probleme geben, auch wenn die Box ziemlich nah beim Fernseher steht.
                                  Was bei mir natürlich die Frage aufkommen läßt " .... wie machen die das?"
                                  Reine Software-Lösung, und/oder spezielle Hardware?

                                  Reaktionszeit
                                  Ist bei mir so ca. 2-3 Sekunden.

                                  LAN/WLAN
                                  Ist das wirklich so relevant?
                                  Ich denke, daß Rhasspy ja erst mal die ganze Erkennungsprozedur abarbeitet und dann "nur" das Intent zu iobroker via MQTT übertragt. Die paar Byte sollten m.E. den Kohl nicht fett machen.
                                  Ich kann mich natürlich auch irren.

                                  Rhasspy-Satellit/Host
                                  Was für Hardware willst Du für den Host verwenden? Auch einen Raspi, oder was leistungsfähigeres?
                                  Halt mich mit Deinen Erfahrungen diesbzgl. mal auf dem Laufenden.

                                  Gruß
                                  Jörg

                                  tobetobeT Tom10webT 3 Antworten Letzte Antwort
                                  1
                                  • tobetobeT tobetobe

                                    @joergeli said in Rhasspy Offline Sprachsteuerung:

                                    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.

                                    Hallo Jörg,

                                    ich bin gerade dabei zu testen, scheitere aber am Skript. Ich bekomme diese Fehlermeldung nach Aufruf des Skripts mit python2 (python3 ging garnicht):

                                    pi@rhasspy-1:~/.local/lib/python2.7/site-packages/pixel_ring $ sudo python2 pixelring.py
                                    Traceback (most recent call last):
                                      File "pixelring.py", line 12, in <module>
                                        from pixel_ring import pixel_ring
                                    ImportError: cannot import name pixel_ring
                                    

                                    Daher einige Fragen:

                                    • Hast du pixel_ring mit oder ohne sudo installiert?
                                    • In welchem Verzeichnis? Oder egal?
                                    • In welchem Verzeichnis liegt dein Skript?
                                    • Was musstest du sonst noch anpassen (mqtt-IP und Port sind klar...)?

                                    Wäre klasse, wenn du mir hier mit einem Tipp weiterhelfen könntest.

                                    Dann nochmals zurück zur Intent Recognition: Ich habe deine Werte für webrtcvad übernommen, allerdings mit Timeout 3 Sekunden und, wie geschildert, mit Kaldi und eingeschalteter Option Fuzzy text matching. Damit habe ich verschiedenste Befehle über eine Distanz von 6 Metern zum MatrixVoice getestet. Und zwar zunächst ohne Hintergrundgeräusche: Alles OK. Danach habe ich das Radio eingeschaltet. An der Stelle, wo ich stand, hatte ich einen Schallpegel von ca. 35 - 40 dBA im Durchschnitt, bis 60 dBA im Peak. Am Ort des Mikrofons gemessen betrug der Schallpegel ca. 30 - 35 dBA im Durchschnitt und ca. 50 im Peak. Dennoch gingen alle Kommandos fehlerfrei durch. Das ist absolut erfreulich.

                                    Allerdings habe ich dafür auch einen Preis zu zahlen, nämlich dass die Erkennung deutlich mehrere Sekunden dauert, abhängig von der Komplexität des Kommandos.

                                    Als nächstes werde ich jetzt meinen Pi3 mit dem MatrixVoice zu einem reinen Rhasspy-Satelliten umkonfigurieren und die komplexeren Funktionalitäten auf einen Rhasspy-Host verlagern (der dann zukünftig auch mehrere Satelliten bedienen kann).

                                    Anmerken möchte ich noch, dass ich allerdings schon eine verlängerte Reaktionszeit festgestellt hatte, nachdem ich beim Rhasspy vom LAN auf WLAN gewechselt habe. Nachvollziehbar, dass komplexere Anwendungen wie Kaldi über die im Vergleich zum LAN langsamere WLAN Verbindung noch mehr ausgebremst werden.

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

                                    @tobetobe
                                    ... und noch eine Baustelle?:
                                    Wir hatten gestern abend Besuch und haben in der Eßecke gesessen.
                                    Rhasspy hat im Wohnzimmer vor sich hingedöst.
                                    Eßecke/Wohnzimmer sind offen, d.h. es ist ein rel. breiter Durchgang zwischen beiden.
                                    Rhasspy ist in einer Ecke des Wohnzimmers platziert, d.h. es existiert keine direkte "Schallverbindung" zwischen Eßecke und Rhasspy.
                                    Bei angeregter Unterhaltung ist Rhasspy trotzdem mehrfach aufgewacht, obwohl das WakeWord nicht gesagt wurde.
                                    Hat natürlich Gelächter bei den Bekannten und Frust bei mir ausgelöst :disappointed:

                                    Gruß
                                    Jörg

                                    1 Antwort Letzte Antwort
                                    0
                                    • joergeliJ joergeli

                                      @tobetobe
                                      Hallo Thomas,
                                      ich habe pixel_ring bei mir im Verzeichnis /home/pi/4mics_hat/pixel_ring installiert.
                                      Das ist das Verzeichnis, wo meine ReSpeaker-Dateien liegen, ist aber (wahrscheinlich) egal, wo es installiert wird.
                                      Ob mit oder ohne sudo weiß ich nicht mehr, allerdings gehören nach Installation der Ordner pixel_ring und die darunter liegenden Dateien/Ordner den User "pi".

                                      Mein python-script liegt im Ordner /home/pi/4mics_hat.
                                      Achtung: das Script läuft nur, wenn ich vorher die virtuelle Umgebung für Python starte.
                                      source /home/pi/env/bin/activate
                                      Diese virtuelle Umgebung wurde bei mir mit der Installation meines ReSpeaker Mic-Arrays angelegt.
                                      Die Eingabezeile im Terminal sieht dann so aus, wenn die virtuelle Umgebung aktiv ist:
                                      (env) pi@Rhasspy:~/4mics_hat $

                                      Anschließend kann ich das Script mit
                                      (env) pi@Rhasspy:~/4mics_hat $ python rhasspy_led_ring.py
                                      starten

                                      Hinweis: Das Script, bzw. die virtuelle Umgebung kann man nur mit
                                      Ctrl + c und anschl.
                                      (env) pi@Rhasspy:~/4mics_hat $ deactivate
                                      beenden.

                                      Damit das Script, bzw. der Pixel-Ring automatisch beim Boot gestartet wird, habe ich mit sudo nano .profile
                                      folgende Zeile in die Datei .profile eingefügt:
                                      (cd /home/pi/4mics_hat; echo "4Mic:Hat"; source /home/pi/env/bin/activate; echo "Virtuelle Umgebung gestartet"; python rhasspy_led_ring.py)&
                                      (Wichtig ist das & am Ende)
                                      Zuerst wird in das Verzeichnis /home/pi/4mics_hat gewechselt.
                                      Dann wird die virtuelle Umgebung gestasrtet: source /home/pi/env/bin/activate
                                      Das echo xxxxxxxx gibt nur einen Hinweistext aus.
                                      Anschließend wird der Pixel-Ring gestartet: python rhasspy_led_ring,py

                                      Man kann das Ganze wohl auch als Service implementieren, das habe ich aber nicht hinbekommen.

                                      Wie schon erwähnt, weiß ich nicht, ob das Script auch mit Deinem Matrix-Voice funktioniert
                                      Ich weiß z.B. nicht, ob die Befehle:

                                          power = LED(5)
                                          power.on()
                                      

                                      speziell für das ReSpeaker Mic-Array gelten.
                                      (Damit wird GPIO5 auf HIGH gesetzt.)

                                      Ich werde aber trotzdem abwarten, bis in einer künftigen Rhasspy-Version alle Hermes MQTT-Topics unterstützt werden,
                                      denn dann soll ja angeblich auch HERMES-LED funktionieren.

                                      Intent Recognition:
                                      Das Wakeword wird bei mir meist auch bei laufendem TV erkannt, nur mit der anschl. Intent-Erkennung hat es dann gehapert.
                                      Ich habe heute den Workaround implementiert, daß ich den Fernseher nach WakeWord-Erkennung stumm (mute) schalte und ein paar Sekunden nach Abschluß der Intent-Erkennung die Stummschaltung wieder aufhebe.
                                      Die Stummschaltung läuft bei mir über JavaScript -> Broadlink RM 3+ --> Umwandlung und Senden via Infrarot.
                                      Das funktioniert soweit ganz gut.

                                      Die Problematik hängt aber m.E. nicht nur mit dem Schallpegel zusammen, sondern ob im TV/Radio gerade gesprochen, oder Musik gespielt wird.
                                      Musik ist m.E. unproblematischer, wenn aber gesprochen wird, weiß Rhasspy nicht , "auf wen" er hören soll, auf den TV/Radio, oder meine Stimme - was dann i.d.R. mit einem "nicht erkannt" quittiert wird.
                                      Ich hatte mal bei einem Nachbarn, der Alexa hat, nachgefragt, wie das bei ihm funktioniert.
                                      Angeblich soll es keine Probleme geben, auch wenn die Box ziemlich nah beim Fernseher steht.
                                      Was bei mir natürlich die Frage aufkommen läßt " .... wie machen die das?"
                                      Reine Software-Lösung, und/oder spezielle Hardware?

                                      Reaktionszeit
                                      Ist bei mir so ca. 2-3 Sekunden.

                                      LAN/WLAN
                                      Ist das wirklich so relevant?
                                      Ich denke, daß Rhasspy ja erst mal die ganze Erkennungsprozedur abarbeitet und dann "nur" das Intent zu iobroker via MQTT übertragt. Die paar Byte sollten m.E. den Kohl nicht fett machen.
                                      Ich kann mich natürlich auch irren.

                                      Rhasspy-Satellit/Host
                                      Was für Hardware willst Du für den Host verwenden? Auch einen Raspi, oder was leistungsfähigeres?
                                      Halt mich mit Deinen Erfahrungen diesbzgl. mal auf dem Laufenden.

                                      Gruß
                                      Jörg

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

                                      @joergeli

                                      Hallo Jörg,
                                      vielen Dank für die schnelle Antwort.

                                      Zu Pixelring: Das sieht natürlich bei mir komplett anders aus und hört sich daher nach zeitaufwändigem Suchen und Testen an. Dazu fehlt mir momentan die Motivation. Dennoch vielen Dank für die wertvollen Hinweise, die möglicherweise zum Ziel führen.

                                      Intent Recognition: Ich gebe dir Recht. Mit Musik geht alles leichter - bzw mit Sprache aus dem Radio oder Fernsehen wird es schwieriger.

                                      @joergeli said in Rhasspy Offline Sprachsteuerung:

                                      ... und noch eine Baustelle?

                                      Auch ich hatte den Effekt, dass bei einem Telefonat mit meiner Frau (dabei kein TV/Radio im Hintergrund) mit einem Male verschiedene Lampen eingeschaltet wurden.. Allerdings habe ich dieses Verhalten bislang nur festgestellt, wenn ich eins von meinen "Self made Wake Words" verwendet habe (Hallo Butler oder Hey Oskar). Mit Snowboy ist dies (für mich erkennbar) noch nicht aufgetreten.
                                      Das Ganze ist ja letztlich ein mathematisches Problem: Wie hoch ist die Wahrscheinlichkeit, dass in einem akustischen Wirrwar Teile der Frequenzen und Amplituden auftreten, wie sie zu einem gewissen Prozentsatz in dem echten Wake Word enthalten sind. Je mehrsilbig das Wake Word ist, um so geringer sollte mMn die Wahrscheinlichkeit eines Mismatches sein. Wenn dann das Wake Word nicht nur mehrsilbig ist, sondern auch noch einen relativ markanten Verlauf hat, kann eigentlich kaum etwas passieren - wie zB bei "Alexa". Dein Hiwi scheint mir aus dieser Überlegung heraus auch nicht prägnant genug zu sein.

                                      Ich hirne auch schon, wie ein gutes Wake Word aussehen könnte, was sich auch noch gut aussprechen lässt und gleichzeitig nicht albern klingt...

                                      Hier folgten soeben 10 Minuten Schreibpause. Denn: Ich musste doch schnell mal prüfen, ob das, was ich da schreibe eigentlich richtig sein kann.

                                      Dazu habe ich schnell mal eben eines meiner eigenen Wake Words eingestellt. Es lautet "Hallo Butler", was ich nicht für so schlecht hielt, mit dem ich aber beim Telefonieren schlechte Erfahrung gemacht habe. Das pmdl-File, welches ich mir auf der Snowboy-Plattform generiert und heruntergeladen habe, ist so miserabel, dass Rhasspy auch auf "Hallo Xerxes", "Snowboy" und sogar "Mathilde" reagiert. Eigentlich scheint es egal zu sein, was man da eingibt. Mit dem original snowboy.umdl passiert das definitiv nicht. Wenngleich mir dieses Wort weder gefällt, noch besonders gut über die Lippen geht, bleibe ich jetzt also erst einmal dabei und verfolge lieber die Gesamtfunktionalität weiter. Die gefällt mir nämlich bisher ganz gut. Der Rest wird sich schon sukzessive entwickeln.

                                      @joergeli said in Rhasspy Offline Sprachsteuerung:

                                      Rhasspy-Satellit/Host
                                      Ich habe hier noch einen Banana Pi3 mit 2GB RAM herumliegen, bei dem allerdings der Kernel nicht mehr weiter gepflegt wird. Mein letztes Betriebssystem war Ubuntu 17.04. Danach ging kein Update/Upgrade mehr. Zum prinzipiellen Testen wäre die Kiste gerade noch geeignet. Oder alternativ dazu eine Virtuelle Linux Maschine auf meinem PC.

                                      Liebäugeln würde ich mit einem Ondroid H2, weil ich dann gleich meinen ganzen ioBroker optimieren könnte. Bei diesem gerät stören mich weniger die Kosten von ca. 300 - 350 € (mit a bissle mehr RAM...) als die Spannungsversorgung von 15 VDC, die mir nicht ins Konzept passen. Bei mir läuft alles mit 5 und 12 V. Also werde ich weiterschauen, was es noch so gibt...

                                      Viele Grüße
                                      Thomas

                                      Beste Grüße
                                      tobetobe

                                      1 Antwort Letzte Antwort
                                      0
                                      • joergeliJ joergeli

                                        @tobetobe
                                        Hallo Thomas,
                                        ich habe pixel_ring bei mir im Verzeichnis /home/pi/4mics_hat/pixel_ring installiert.
                                        Das ist das Verzeichnis, wo meine ReSpeaker-Dateien liegen, ist aber (wahrscheinlich) egal, wo es installiert wird.
                                        Ob mit oder ohne sudo weiß ich nicht mehr, allerdings gehören nach Installation der Ordner pixel_ring und die darunter liegenden Dateien/Ordner den User "pi".

                                        Mein python-script liegt im Ordner /home/pi/4mics_hat.
                                        Achtung: das Script läuft nur, wenn ich vorher die virtuelle Umgebung für Python starte.
                                        source /home/pi/env/bin/activate
                                        Diese virtuelle Umgebung wurde bei mir mit der Installation meines ReSpeaker Mic-Arrays angelegt.
                                        Die Eingabezeile im Terminal sieht dann so aus, wenn die virtuelle Umgebung aktiv ist:
                                        (env) pi@Rhasspy:~/4mics_hat $

                                        Anschließend kann ich das Script mit
                                        (env) pi@Rhasspy:~/4mics_hat $ python rhasspy_led_ring.py
                                        starten

                                        Hinweis: Das Script, bzw. die virtuelle Umgebung kann man nur mit
                                        Ctrl + c und anschl.
                                        (env) pi@Rhasspy:~/4mics_hat $ deactivate
                                        beenden.

                                        Damit das Script, bzw. der Pixel-Ring automatisch beim Boot gestartet wird, habe ich mit sudo nano .profile
                                        folgende Zeile in die Datei .profile eingefügt:
                                        (cd /home/pi/4mics_hat; echo "4Mic:Hat"; source /home/pi/env/bin/activate; echo "Virtuelle Umgebung gestartet"; python rhasspy_led_ring.py)&
                                        (Wichtig ist das & am Ende)
                                        Zuerst wird in das Verzeichnis /home/pi/4mics_hat gewechselt.
                                        Dann wird die virtuelle Umgebung gestasrtet: source /home/pi/env/bin/activate
                                        Das echo xxxxxxxx gibt nur einen Hinweistext aus.
                                        Anschließend wird der Pixel-Ring gestartet: python rhasspy_led_ring,py

                                        Man kann das Ganze wohl auch als Service implementieren, das habe ich aber nicht hinbekommen.

                                        Wie schon erwähnt, weiß ich nicht, ob das Script auch mit Deinem Matrix-Voice funktioniert
                                        Ich weiß z.B. nicht, ob die Befehle:

                                            power = LED(5)
                                            power.on()
                                        

                                        speziell für das ReSpeaker Mic-Array gelten.
                                        (Damit wird GPIO5 auf HIGH gesetzt.)

                                        Ich werde aber trotzdem abwarten, bis in einer künftigen Rhasspy-Version alle Hermes MQTT-Topics unterstützt werden,
                                        denn dann soll ja angeblich auch HERMES-LED funktionieren.

                                        Intent Recognition:
                                        Das Wakeword wird bei mir meist auch bei laufendem TV erkannt, nur mit der anschl. Intent-Erkennung hat es dann gehapert.
                                        Ich habe heute den Workaround implementiert, daß ich den Fernseher nach WakeWord-Erkennung stumm (mute) schalte und ein paar Sekunden nach Abschluß der Intent-Erkennung die Stummschaltung wieder aufhebe.
                                        Die Stummschaltung läuft bei mir über JavaScript -> Broadlink RM 3+ --> Umwandlung und Senden via Infrarot.
                                        Das funktioniert soweit ganz gut.

                                        Die Problematik hängt aber m.E. nicht nur mit dem Schallpegel zusammen, sondern ob im TV/Radio gerade gesprochen, oder Musik gespielt wird.
                                        Musik ist m.E. unproblematischer, wenn aber gesprochen wird, weiß Rhasspy nicht , "auf wen" er hören soll, auf den TV/Radio, oder meine Stimme - was dann i.d.R. mit einem "nicht erkannt" quittiert wird.
                                        Ich hatte mal bei einem Nachbarn, der Alexa hat, nachgefragt, wie das bei ihm funktioniert.
                                        Angeblich soll es keine Probleme geben, auch wenn die Box ziemlich nah beim Fernseher steht.
                                        Was bei mir natürlich die Frage aufkommen läßt " .... wie machen die das?"
                                        Reine Software-Lösung, und/oder spezielle Hardware?

                                        Reaktionszeit
                                        Ist bei mir so ca. 2-3 Sekunden.

                                        LAN/WLAN
                                        Ist das wirklich so relevant?
                                        Ich denke, daß Rhasspy ja erst mal die ganze Erkennungsprozedur abarbeitet und dann "nur" das Intent zu iobroker via MQTT übertragt. Die paar Byte sollten m.E. den Kohl nicht fett machen.
                                        Ich kann mich natürlich auch irren.

                                        Rhasspy-Satellit/Host
                                        Was für Hardware willst Du für den Host verwenden? Auch einen Raspi, oder was leistungsfähigeres?
                                        Halt mich mit Deinen Erfahrungen diesbzgl. mal auf dem Laufenden.

                                        Gruß
                                        Jörg

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

                                        @joergeli said in Rhasspy Offline Sprachsteuerung:

                                        Rhasspy-Satellit/Host

                                        Das hier könnte eine Möglichkeit für den Host sein:

                                        Odroid N2 mit 4GB RAM, 7,5 - 18V

                                        Beste Grüße
                                        tobetobe

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

                                          @joergeli
                                          @Tictactoo

                                          Hallo, nun melde ich mich wieder zum Thema Rhasspy Satellit/Host. Nach gescheiterter Wiederbelebung meines Banana Pi M3 (Docker wurde vom zuletzt verfügbaren Kernel nicht unterstützt), habe ich einen alten PC wiederbelebt und dort zu Testzwecken Rhasspy auf Basis Linux installiert. Zur Migration der Konfigurationsdaten meines bisher für Rhasspy verwendeten Raspberry Pi3 habe ich den kompletten Profilordner vom Pi3 auf den PC kopiert. Wichtig: Um schnell zur alten Konfiguration zurückkehren zu können, habe ich mir zuvor von den Originaldaten auf beiden Rechnern eine Kopie gezogen und im neuen Verzeichnis .../profiles/backup/ gesichert.Es waren dann anschließend über "Settings" nur noch geringfügige Anpassungen auf beiden Seiten vorzunehmen. Prinzipiell beschrieben findet man dies hier:

                                          https://community.home-assistant.io/t/rhasspy-offline-voice-control-step-by-step-server-client-docker/154015
                                          

                                          Ich weiche davon zum Teil ab, da ich ja zB Kaldi verwende und FST mit Fuzzy...
                                          Es funktioniert trotzdem.

                                          Zum Ergebnis: Ich bin begeistert!!! Während es mit dem Raspi immer mehrere Sekunden dauerte, bis der Schaltbefehl umgesetzt wurde, ist dies nun in der neuen Konfiguration innerhalb von weniger als einer Sekunde erledigt.

                                          Unklar war mir, wo nun MQTT aktiviert sein muss. Ich dachte zunächst, dass dies auf der Host-Seite der Fall sein müsste. Es kamen jedoch keine Kommandos an. Erst als ich MQTT auch wieder beim Satelliten aktivierte, wurde wie gewünscht geschaltet. Hier tappe ich ehrlich gesagt noch ein wenig im Dunkeln.

                                          Die Ausgabe eines Kommandos im "log" und in "Speech" ist übrigens auf beiden Systemen (weitestgehend) identisch. Da ich momentan nur über erste Eindrücke verfüge, möchte ich mich mit einer verbindlichen Aussage hierzu noch ein wenig zurückhalten.

                                          Da die Verwendung meines alten PC auf Dauer keien Lösung ist, habe ich mir heute einen Ondroid H2 mit 16GB RAM und nVME SSD bestellt. Dass 15V nicht unbedingt mein Favorit sind, nehme ich in Kauf.

                                          Wenn ihr euch auch für diesen Ansatz interessiert, möchte ich euch hiermit Mut machen, es auch einfach mal zu versuchen. Der Aufwand hält sich wirklich in Grenzen.

                                          Bin gespannt, was ihr sagt.

                                          Viele Grüße
                                          Thomas

                                          Beste Grüße
                                          tobetobe

                                          joergeliJ 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

                                          951

                                          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