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

Rhasspy Offline Sprachsteuerung

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

        @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

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

        @tobetobe
        Hallo Thomas,
        ehrlich gesagt, möchte ich nicht noch weitere "potente" Hardware einsetzen, nur um Rhasspy, welches für mich letztendlich nur ein Gimmick ist, halbwegs vernünftig zum Laufen zu bekommen. 1 Rhasspy reicht mir da vollkommen aus.

        Ich habe heute ein wenig experimentiert:
        Rhasspy-SD-Kartenimage von meinem Raspi 3 gezogen und auf eine andere SD-Karte überspielt.
        Diese neue SD-Karte dann in einen Raspi 4 (mit 4 GByte) gesteckt.
        Rhasspy speech-recognition mit pocketsphinx ist erheblich schneller, als auf dem Raspi3, es efolgt praktisch sofort eine Antwort.

        Dann habe ich es "irgendwie" doch geschafft, Kaldi in das de-Profil zu installieren.
        Danach die SD-Karte zurück in den Raspi3 gesteckt.
        Dort ist jetzt also speech-recognition mit kaldi aktiviert.
        Aaaber: Speech-Recognition, bzw. Intent-Erkennung dauert jetzt ca. 10 Sekunden !

        Ergo: Ich habe speech-recognition wieder auf pocketsphinx zurückgestellt, damit dauert die Erkennung nur ca. 2-3 Sekunden auf dem Raspi 3.

        Mein persönliches Fazit: Kaldi mag zwar in der Spracherkennung besser sein, aber es braucht dafür "sehr lange"..
        Mag sein, daß es mit entspr. Hardwareaufwand schneller geht.

        Nebenbei:
        Du hattest mal geschrieben daß die persönlichen WakeWords von Snowboy schlechte Qualität haben und deshalb wohl rel. viele Fehlerkennungen möglich sind.
        Ich habe es mal mit dem defaultmäßigen snowboy.umdl, also dem Universal-Modell, versucht.
        Das "mag" Rhasspy bei mir aber überhaupt nicht.
        Egal, ob ich snowboy.umdl via WEB-Gui, oder auch direkt im profile.json eintrage, bringt es das ganze Profil durcheinander. Da wird dann plötzlich auf englisches Profil umgestellt, oder es taucht gar keine Länder-Angabe mehr in der GUI auf. Außerdem werden willkürlich Settings verändert, Custom-Words nicht mehr gelistet, o.ä.
        Also auch da wieder zurück auf mein persönliches Hiwi.pmdl

        Summa sumarum:
        Rhasspy "works as designed", aber mit Problemen bei Hintergrund-Geräuschen (TV/Radio oder Unterhaltung mit mehreren Personen).
        Für mich im Bastelzimmer durchaus brauchbar, aber im Wohnzimmer, oder am Frühstückstisch geht der WAF in den Keller, da häufiges "Fehl-Aufwachen".

        Ich habe auch keine Ideen mehr, wie ich dieses Verhalten in den Griff bekommen könnte.

        Gruß
        Jörg

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

          @joergeli
          Hallo Jörg,
          @joergeli said in Rhasspy Offline Sprachsteuerung:

          möchte ich nicht noch weitere "potente" Hardware einsetzen

          Das verstehe ich natürlich. Hier muss jeder seinen eigenen Weg gehen. Und da will ich auch nicht hinein reden. Da du aber schon einen Pi3 und einenPi4 bereits besitzt, würde ich dir empfehlen zu schauen, ob eine Konstellation Host = Pi4 und Satellite = Pi3 nicht doch eine deutliche Verbesserung (auch mit Kaldi) bringen könnte. Ich glaube, die wesentliche Verbesserung liegt in der prinzipiellen Trennung von Funktionen, nicht in der leistungsfähigeren Hardware.

          @joergeli said in Rhasspy Offline Sprachsteuerung:

          Aaaber: Speech-Recognition, bzw. Intent-Erkennung dauert jetzt ca. 10 Sekunden !

          Wo? auf dem Pi3 oder auf dem Pi4? Wie gesagt: Bei mir war das exakt genau so, und nach der Trennung Host/Satellite war dasProblem weg.

          @joergeli said in Rhasspy Offline Sprachsteuerung:

          Mein persönliches Fazit: Kaldi mag zwar in der Spracherkennung besser sein, aber es braucht dafür "sehr lange"..
          Mag sein, daß es mit entspr. Hardwareaufwand schneller geht.

          Wie gesagt: Kaldi gehört auf den Host. Nach Trennung ist meine Erfahrung nunmal, dass Kaldi wirklich sehr gut reagiert und die Perfomance in einer Host/Satellite-Konfiguration wirklich sehr gut ist.

          Anmerken möchte ich, dass ich mittlerweile festgestellt habe, dass sichdie Reaktionszeit bei schlechtem Signal/Noise-Verhältnis )(also bei Hintergrundgeräuschen) verlängert. Kaldi erkennt trotzdem richtig!

          @joergeli said in Rhasspy Offline Sprachsteuerung:

          Nebenbei:
          Du hattest mal geschrieben daß die persönlichen WakeWords von Snowboy schlechte Qualität haben und deshalb wohl rel. viele Fehlerkennungen möglich sind.

          Da habe ich mich wohl nicht korrekt ausgedrückt. Zunächst habe ich gesagt, dass MEINE persönlichen Wake Wordes schlechte Qualität haben, weil ich zB über das Browser-Mikro und nicht über das Rhasspy-Mikro (also MatrixVoice in meinem Fall) aufgenommen habe. Letzteres wird aber empfohlen, dh, man muss die entsprechenden wav-Files bei Snowboy hochladen, was ich so nicht getan habe. Somit erste Fehlerquelle

          Zweite Fehlerquelle: Meine Wake Words (wie auch dein HiWi) sind phonetischen Folgen, wie sie in einer Diskussion vorkommen, zu ähnlich. Hiwi mit nur zwei Silben ist den allgemeinen Empfahlungen nach auch eindeutig zu kurz.

          Verschiedene Quellen habe sich dazu ganz gut ausgelassen:

          https://picovoice.ai/blog/tips-for-choosing-a-wake-word/
          https://medium.com/@rowantrollope/7-things-you-didnt-know-about-wake-words-d4e9e041d11d
          u.viele mehr
          

          Im Prinzip hatte ich das mit eigenen Worten bereits versucht auszudrücken.

          @joergeli said in Rhasspy Offline Sprachsteuerung:

          Egal, ob ich snowboy.umdl via WEB-Gui, oder auch direkt im profile.json eintrage, bringt es das ganze Profil durcheinander.

          Solche Effekte stelle ich auch immer wieder fest. Sie haben mich bei meiner Umstellung zu Host/Satellite fast in den Wahnsinn getrieben. Hier scheint Rhasspy durchaus noch eine Schwäche zu haben, die sich allerdings umgehen lässt.

          Lösung: Umkonfigurieren und speichern OHNE zu trainieren. Danach das Profile ausmisten: Die Slots und Sentences, sowie das profile.json prüfen. Wenn alles korrekt ist: Neustarten ohne zu trainieren. DANACH trainieren.

          Und was die wake words betrifft: Mir ist bei der Konfig über die Web GUI der Fehler unterlaufen, dass ich nicht auf die Endung geachtet habe: umdl und pmdl!!! Das hat bei mir auch zu Fehlern geführt.

          @joergeli said in Rhasspy Offline Sprachsteuerung:

          Summa sumarum:
          Rhasspy läuft bei mir jetzt wirlklich sehr gut. Die auftretenden Probleme bei der Konfiguration (zB auf einmal englisches Profil) konnten mit meinen Hiweisen umgangen werden. Und finally: Host/Satellite ist wirklich sehr performant, bestimmt auch in einer Konstallation Host = Pi4 und Satellite = Pi3. Es muss ja kein Ondroid H2 sein... (mit dem ich ja außerhalb von Rhaspy auch noch ganz andere Ziele verfolge)

          @joergeli said in Rhasspy Offline Sprachsteuerung:

          Ich habe auch keine Ideen mehr, wie ich dieses Verhalten in den Griff bekommen könnte.

          Davon bin ich aufgrund eigener Erfahrung wirklich überzeugt, sonst würde ich es nicht sagen: Folge meinen Empfehlungen und du wirst zufrieden sein. Ich hatte heute zur Biathlon den Fernseher im Wohnzimmer laufen - zwei Reporter haben gequatscht. Rhasspy ist im Büro hinter einer beidseits offenen Trennwand, Distanz ca. 6 Meter. Nun gut. ich musste etwas lauter sprechen, um verstanden zu werden. Fehlversuche (false positives), die irgend etwas anderes geschaltet haben, gab es jedenfalls keine. Für mich ist das so vollkommen in Ordnung.

          Viele Grüße
          Thomas

          Beste Grüße
          tobetobe

          joergeliJ 1 Antwort Letzte Antwort
          0
          • tobetobeT tobetobe

            @joergeli
            Hallo Jörg,
            @joergeli said in Rhasspy Offline Sprachsteuerung:

            möchte ich nicht noch weitere "potente" Hardware einsetzen

            Das verstehe ich natürlich. Hier muss jeder seinen eigenen Weg gehen. Und da will ich auch nicht hinein reden. Da du aber schon einen Pi3 und einenPi4 bereits besitzt, würde ich dir empfehlen zu schauen, ob eine Konstellation Host = Pi4 und Satellite = Pi3 nicht doch eine deutliche Verbesserung (auch mit Kaldi) bringen könnte. Ich glaube, die wesentliche Verbesserung liegt in der prinzipiellen Trennung von Funktionen, nicht in der leistungsfähigeren Hardware.

            @joergeli said in Rhasspy Offline Sprachsteuerung:

            Aaaber: Speech-Recognition, bzw. Intent-Erkennung dauert jetzt ca. 10 Sekunden !

            Wo? auf dem Pi3 oder auf dem Pi4? Wie gesagt: Bei mir war das exakt genau so, und nach der Trennung Host/Satellite war dasProblem weg.

            @joergeli said in Rhasspy Offline Sprachsteuerung:

            Mein persönliches Fazit: Kaldi mag zwar in der Spracherkennung besser sein, aber es braucht dafür "sehr lange"..
            Mag sein, daß es mit entspr. Hardwareaufwand schneller geht.

            Wie gesagt: Kaldi gehört auf den Host. Nach Trennung ist meine Erfahrung nunmal, dass Kaldi wirklich sehr gut reagiert und die Perfomance in einer Host/Satellite-Konfiguration wirklich sehr gut ist.

            Anmerken möchte ich, dass ich mittlerweile festgestellt habe, dass sichdie Reaktionszeit bei schlechtem Signal/Noise-Verhältnis )(also bei Hintergrundgeräuschen) verlängert. Kaldi erkennt trotzdem richtig!

            @joergeli said in Rhasspy Offline Sprachsteuerung:

            Nebenbei:
            Du hattest mal geschrieben daß die persönlichen WakeWords von Snowboy schlechte Qualität haben und deshalb wohl rel. viele Fehlerkennungen möglich sind.

            Da habe ich mich wohl nicht korrekt ausgedrückt. Zunächst habe ich gesagt, dass MEINE persönlichen Wake Wordes schlechte Qualität haben, weil ich zB über das Browser-Mikro und nicht über das Rhasspy-Mikro (also MatrixVoice in meinem Fall) aufgenommen habe. Letzteres wird aber empfohlen, dh, man muss die entsprechenden wav-Files bei Snowboy hochladen, was ich so nicht getan habe. Somit erste Fehlerquelle

            Zweite Fehlerquelle: Meine Wake Words (wie auch dein HiWi) sind phonetischen Folgen, wie sie in einer Diskussion vorkommen, zu ähnlich. Hiwi mit nur zwei Silben ist den allgemeinen Empfahlungen nach auch eindeutig zu kurz.

            Verschiedene Quellen habe sich dazu ganz gut ausgelassen:

            https://picovoice.ai/blog/tips-for-choosing-a-wake-word/
            https://medium.com/@rowantrollope/7-things-you-didnt-know-about-wake-words-d4e9e041d11d
            u.viele mehr
            

            Im Prinzip hatte ich das mit eigenen Worten bereits versucht auszudrücken.

            @joergeli said in Rhasspy Offline Sprachsteuerung:

            Egal, ob ich snowboy.umdl via WEB-Gui, oder auch direkt im profile.json eintrage, bringt es das ganze Profil durcheinander.

            Solche Effekte stelle ich auch immer wieder fest. Sie haben mich bei meiner Umstellung zu Host/Satellite fast in den Wahnsinn getrieben. Hier scheint Rhasspy durchaus noch eine Schwäche zu haben, die sich allerdings umgehen lässt.

            Lösung: Umkonfigurieren und speichern OHNE zu trainieren. Danach das Profile ausmisten: Die Slots und Sentences, sowie das profile.json prüfen. Wenn alles korrekt ist: Neustarten ohne zu trainieren. DANACH trainieren.

            Und was die wake words betrifft: Mir ist bei der Konfig über die Web GUI der Fehler unterlaufen, dass ich nicht auf die Endung geachtet habe: umdl und pmdl!!! Das hat bei mir auch zu Fehlern geführt.

            @joergeli said in Rhasspy Offline Sprachsteuerung:

            Summa sumarum:
            Rhasspy läuft bei mir jetzt wirlklich sehr gut. Die auftretenden Probleme bei der Konfiguration (zB auf einmal englisches Profil) konnten mit meinen Hiweisen umgangen werden. Und finally: Host/Satellite ist wirklich sehr performant, bestimmt auch in einer Konstallation Host = Pi4 und Satellite = Pi3. Es muss ja kein Ondroid H2 sein... (mit dem ich ja außerhalb von Rhaspy auch noch ganz andere Ziele verfolge)

            @joergeli said in Rhasspy Offline Sprachsteuerung:

            Ich habe auch keine Ideen mehr, wie ich dieses Verhalten in den Griff bekommen könnte.

            Davon bin ich aufgrund eigener Erfahrung wirklich überzeugt, sonst würde ich es nicht sagen: Folge meinen Empfehlungen und du wirst zufrieden sein. Ich hatte heute zur Biathlon den Fernseher im Wohnzimmer laufen - zwei Reporter haben gequatscht. Rhasspy ist im Büro hinter einer beidseits offenen Trennwand, Distanz ca. 6 Meter. Nun gut. ich musste etwas lauter sprechen, um verstanden zu werden. Fehlversuche (false positives), die irgend etwas anderes geschaltet haben, gab es jedenfalls keine. Für mich ist das so vollkommen in Ordnung.

            Viele Grüße
            Thomas

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

            @tobetobe
            Hallo Thomas,

            Speech Recognition:
            Kaldi Raspi P4: ca. 4-5 Sekunden
            Kaldi Raspi P3: ca. 10 Sekunden

            Pocketsphinx Raspi P4: quasi sofort
            Pocketsphinx Raspi P3: ca. 2-3 Sekunden

            WakeWord:
            Ich hatte während der abendlichen Unterhaltung im Bekanntenkreis ein WakeWord "r2d2" (erzwodezwo = 4 Silben) aktiv, trotzdem ist es zu "Fehlaufwachern" gekommen.
            Ich werde jetzt noch mal ein Wakeword namens "Lieselotte" erstellen und damit testen.

            Heute habe ich noch einen Test mit Raspi P4 / Kaldi bei laufendem TV durchgeführt:
            Dazu habe ich den Raspi in einen Karton gepackt und diesen innen ringsum mit Schaumstoff ausgekleidet,
            dabei nur eine Seite offen gelassen. Also quasi so was wie ein Richtmikrofon gebastelt.
            Den Karton nebst Raspi habe ich dann ca. 2 Meter parallel neben dem TV platziert, die Kartonöffnung in meine Richtung.
            Überlegung dabei: TV-Sprache wird stärker gedämpft, als meine Sprachbefehle.
            Ergebnis: Die Erkennungsrate ist mit Kaldi einigemassen OK. Mit Pocketsphinx so gut wie unbrauchbar.

            Weiteres Vorgehen:
            1.) Ich werde mit meinem 3D-Drucker ein Gehäuse (mit einer offenen Seite) für den Raspi 4 drucken, dieses innen mit Schaumstoff auskleiden und den Raspi darin "versenken".
            2.) Zusätzlich werde ich den TV automatisch auf "Mute" schalten, wenn das WakeWord erkannt wurde.

            Das wird einige Zeit in Anspruch nehmen und ich bin gespannt auf das Ergebnis.

            Gruß
            Jörg

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

              @joergeli
              Hallo Jörg,
              die Werte mit deinem Pi4 sehen ja mit Pocketsphinx gar nicht so schlecht aus. Interessant finde ich auch deinen Ansatz mit der Gehäusekonstruktion. Deine Überlegungen, das Signal/Noise-Verhältnis durch die Gehäusekonstruktion und durch Abschalten des TV-Tons zu verbessern, könnten vielversprechend sein. Da bin ich auch auf deine Ergebnisse gespannt.

              Wobei, eigentlich sollen die Mikrofon Arrays ja rundum empfangen. So wie ich das von dir verwendete Respeaker Array verstanden habe, unterstützt es die Funktionen DOA (Direction of A.), also Erkennung der Richtung aus der das Wake Word kommt, und dann anschließend Beamforming, dh das Mikrofon Array wird per Software so "ausgerichtet", dass sich die verschiedenen Eingangssignale an den Einzelmikrofonen optimal ergänzen. was dazu allerdings noch zu machen ist, damit diese Funktionen auch wirklich genutzt werden können, weiß ich natürlich nicht.

              Das muss man bei einem Gehäuse evtl jedoch berücksichtigen. Ich selbst habe in deine Richtung auch schon Überlegungen angestellt und werde mir daher ein Flachbandkabel für den GPIO-Anschluss am Raspberry besorgen. Das hätte für mich den Vorteil, dass Array und Pi nicht so starr miteinander verbunden sind und man höhere Freiheitsgrade bei der Gestaltung des Gehäuses hat.

              Das bringt mich zu der Frage, welchen 3D-Drucker du besitzt. Und ob du mit ihm zufrieden bist, vor allem mit der Software, die du zum Design der Druckobjekte verwendest.

              Zu deinen Wake Words möcht ich noch etwas anmerken: Nach allem, was ich dazu gelesen habe, sind gute Wake Words so aufgebaut, dass sie einerseits markante Konsonanten aufweisen (also x, tz,) und andererseits abwechselnde Vokale mit starker Betonung auf jedem Vokal. Vielleicht wäre Tsunami hierfür ein gutes Beispiel, oder noch besser Munatsi, weil das ts in der Mitte die Vokale schärfer trennt. R2D2 passt nicht in diese Überlegungen, schon allein, weil sich der Vokal wiederholt. Lieselotte (Liezelotta???) könnte so gesehen evtl ganz gut sein. Bin gespannt...

              Jedenfalls wünsche ich dir weiterhin gutes Gelingen, denn das schöne an diesem Projekt ist doch, dass man sich weder mit der Hardware, noch mit der Rhasspy-Software irgend etwas verbaut.

              Ich stecke momentan noch mitten im Umzug: Odroid H2 ist aufgesetzt, mein ioBroker Host ist auf ihn migriert und der Rhasspy Host auch schon dorthin umgezogen. Nun folgen noch zwei weitere ioBroker-Installationen und ich werde statt vier zu pflegenden Linux-Rechnern nur noch einen haben. Die frei werdenden Pis will ich für weitere Rhasspy-Satelliten verwenden.

              Viele Grüße
              Thomas

              Beste Grüße
              tobetobe

              joergeliJ 2 Antworten Letzte Antwort
              0
              • tobetobeT tobetobe

                @joergeli
                Hallo Jörg,
                die Werte mit deinem Pi4 sehen ja mit Pocketsphinx gar nicht so schlecht aus. Interessant finde ich auch deinen Ansatz mit der Gehäusekonstruktion. Deine Überlegungen, das Signal/Noise-Verhältnis durch die Gehäusekonstruktion und durch Abschalten des TV-Tons zu verbessern, könnten vielversprechend sein. Da bin ich auch auf deine Ergebnisse gespannt.

                Wobei, eigentlich sollen die Mikrofon Arrays ja rundum empfangen. So wie ich das von dir verwendete Respeaker Array verstanden habe, unterstützt es die Funktionen DOA (Direction of A.), also Erkennung der Richtung aus der das Wake Word kommt, und dann anschließend Beamforming, dh das Mikrofon Array wird per Software so "ausgerichtet", dass sich die verschiedenen Eingangssignale an den Einzelmikrofonen optimal ergänzen. was dazu allerdings noch zu machen ist, damit diese Funktionen auch wirklich genutzt werden können, weiß ich natürlich nicht.

                Das muss man bei einem Gehäuse evtl jedoch berücksichtigen. Ich selbst habe in deine Richtung auch schon Überlegungen angestellt und werde mir daher ein Flachbandkabel für den GPIO-Anschluss am Raspberry besorgen. Das hätte für mich den Vorteil, dass Array und Pi nicht so starr miteinander verbunden sind und man höhere Freiheitsgrade bei der Gestaltung des Gehäuses hat.

                Das bringt mich zu der Frage, welchen 3D-Drucker du besitzt. Und ob du mit ihm zufrieden bist, vor allem mit der Software, die du zum Design der Druckobjekte verwendest.

                Zu deinen Wake Words möcht ich noch etwas anmerken: Nach allem, was ich dazu gelesen habe, sind gute Wake Words so aufgebaut, dass sie einerseits markante Konsonanten aufweisen (also x, tz,) und andererseits abwechselnde Vokale mit starker Betonung auf jedem Vokal. Vielleicht wäre Tsunami hierfür ein gutes Beispiel, oder noch besser Munatsi, weil das ts in der Mitte die Vokale schärfer trennt. R2D2 passt nicht in diese Überlegungen, schon allein, weil sich der Vokal wiederholt. Lieselotte (Liezelotta???) könnte so gesehen evtl ganz gut sein. Bin gespannt...

                Jedenfalls wünsche ich dir weiterhin gutes Gelingen, denn das schöne an diesem Projekt ist doch, dass man sich weder mit der Hardware, noch mit der Rhasspy-Software irgend etwas verbaut.

                Ich stecke momentan noch mitten im Umzug: Odroid H2 ist aufgesetzt, mein ioBroker Host ist auf ihn migriert und der Rhasspy Host auch schon dorthin umgezogen. Nun folgen noch zwei weitere ioBroker-Installationen und ich werde statt vier zu pflegenden Linux-Rechnern nur noch einen haben. Die frei werdenden Pis will ich für weitere Rhasspy-Satelliten verwenden.

                Viele Grüße
                Thomas

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

                Hallo Thomas,

                @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                die Werte mit deinem Pi4 sehen ja mit Pocketsphinx gar nicht so schlecht aus

                Ja, allerdings ist damit die Erkennungsgenauigkeit (bei Umgebungsgeräuschen!) nicht so gut wie mit Kaldi.

                @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                Wobei, eigentlich sollen die Mikrofon Arrays ja rundum empfangen. So wie ich das von dir verwendete Respeaker Array verstanden habe, unterstützt es die Funktionen DOA (Direction of A.), also Erkennung der Richtung aus der das Wake Word kommt, und dann anschließend Beamforming, dh das Mikrofon Array wird per Software so "ausgerichtet", dass sich die verschiedenen Eingangssignale an den Einzelmikrofonen optimal ergänzen. was dazu allerdings noch zu machen ist, damit diese Funktionen auch wirklich genutzt werden können, weiß ich natürlich nicht.

                Ja, bloß ich möchte keinen Rundumempfang, sondern lieber Empfang aus einer bevorzugten Richtung, wegen den TV/Radio-Problemen.
                Bei meinen Spielereien mit dem LED-Ring gab es auch ein Python-Script von ReSpeaker, welches DOA "sichtbar" machte, d.h. am LED-Ring leuchteten alle LEDs grün, bis auf eine, welche blau leuchtete.
                Hat man gesprochen, ist die blaue LED im Ring in Richtung der Sprache "gewandert".
                Der Raspi, bzw. das Mic-Array lag dabei waagerecht auf dem Basteltisch.
                Ich glaube aber nicht, daß diese DOA-Funktion automatisch von Rhasspy genutzt wird.

                Aber wie gesagt, ich will ja möglichst nur Empfang aus meiner Richtung, deshalb betreibe ich das Mic-Array senkrecht, d.h. alle 4 Mikrofone zeigen in meine Richtung, s. Foto:
                rhasspy.jpg

                @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                Das bringt mich zu der Frage, welchen 3D-Drucker du besitzt. Und ob du mit ihm zufrieden bist, vor allem mit der Software, die du zum Design der Druckobjekte verwendest.

                Mein 3D-Drucker: guckst Du hier
                Den Anycubic-Drucker habe ich mit einem Raspi 3, auf dem Octoprint läuft "gepimpt".
                Damit kann ich ihn auch aus ioBroker heraus beobachten.
                Für meine Zwecke ist der Anycubic ( 300,- €-Klasse) vollkommen ausreichend.
                Als Software nutze ich das kostenlose FreeCAD
                Es erfordert zwar Einarbeitungszeit, das ist aber wohl auch bei den kommerziellen Produkten so.

                @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                Ich stecke momentan noch mitten im Umzug: Odroid H2 ist aufgesetzt, mein ioBroker Host ist auf ihn migriert und der Rhasspy Host auch schon dorthin umgezogen. Nun folgen noch zwei weitere ioBroker-Installationen und ich werde statt vier zu pflegenden Linux-Rechnern nur noch einen haben. Die frei werdenden Pis will ich für weitere Rhasspy-Satelliten verwenden.

                Ich bin mit ioBroker von einem Raspi 3B auf einen Raspi 4B (4GByte RAM) umgezogen.
                Es laufen ca. 20 ioBroker-Instanzen und div. JavaScripte darauf.
                Auf dem Raspi 3 wurde das RAM (1 GByte) ab ca. 15 Instanzen knapp, deshalb der Umzug.
                Auf dem Raspi 4 sind jetzt immer noch ca. 77% RAM frei, läuft problemlos und flott 24/7.

                Rhasspy lasse ich lieber auf einem eigenem Raspi laufen, ich will die ioBroker-Installation nicht "gefährden".

                Ich werde weiter berichten, wenn ich mein "Schallschutzgehäuse" fertig habe.

                Gruß
                Jörg

                1 Antwort Letzte Antwort
                0
                • tobetobeT tobetobe

                  @joergeli
                  Hallo Jörg,
                  die Werte mit deinem Pi4 sehen ja mit Pocketsphinx gar nicht so schlecht aus. Interessant finde ich auch deinen Ansatz mit der Gehäusekonstruktion. Deine Überlegungen, das Signal/Noise-Verhältnis durch die Gehäusekonstruktion und durch Abschalten des TV-Tons zu verbessern, könnten vielversprechend sein. Da bin ich auch auf deine Ergebnisse gespannt.

                  Wobei, eigentlich sollen die Mikrofon Arrays ja rundum empfangen. So wie ich das von dir verwendete Respeaker Array verstanden habe, unterstützt es die Funktionen DOA (Direction of A.), also Erkennung der Richtung aus der das Wake Word kommt, und dann anschließend Beamforming, dh das Mikrofon Array wird per Software so "ausgerichtet", dass sich die verschiedenen Eingangssignale an den Einzelmikrofonen optimal ergänzen. was dazu allerdings noch zu machen ist, damit diese Funktionen auch wirklich genutzt werden können, weiß ich natürlich nicht.

                  Das muss man bei einem Gehäuse evtl jedoch berücksichtigen. Ich selbst habe in deine Richtung auch schon Überlegungen angestellt und werde mir daher ein Flachbandkabel für den GPIO-Anschluss am Raspberry besorgen. Das hätte für mich den Vorteil, dass Array und Pi nicht so starr miteinander verbunden sind und man höhere Freiheitsgrade bei der Gestaltung des Gehäuses hat.

                  Das bringt mich zu der Frage, welchen 3D-Drucker du besitzt. Und ob du mit ihm zufrieden bist, vor allem mit der Software, die du zum Design der Druckobjekte verwendest.

                  Zu deinen Wake Words möcht ich noch etwas anmerken: Nach allem, was ich dazu gelesen habe, sind gute Wake Words so aufgebaut, dass sie einerseits markante Konsonanten aufweisen (also x, tz,) und andererseits abwechselnde Vokale mit starker Betonung auf jedem Vokal. Vielleicht wäre Tsunami hierfür ein gutes Beispiel, oder noch besser Munatsi, weil das ts in der Mitte die Vokale schärfer trennt. R2D2 passt nicht in diese Überlegungen, schon allein, weil sich der Vokal wiederholt. Lieselotte (Liezelotta???) könnte so gesehen evtl ganz gut sein. Bin gespannt...

                  Jedenfalls wünsche ich dir weiterhin gutes Gelingen, denn das schöne an diesem Projekt ist doch, dass man sich weder mit der Hardware, noch mit der Rhasspy-Software irgend etwas verbaut.

                  Ich stecke momentan noch mitten im Umzug: Odroid H2 ist aufgesetzt, mein ioBroker Host ist auf ihn migriert und der Rhasspy Host auch schon dorthin umgezogen. Nun folgen noch zwei weitere ioBroker-Installationen und ich werde statt vier zu pflegenden Linux-Rechnern nur noch einen haben. Die frei werdenden Pis will ich für weitere Rhasspy-Satelliten verwenden.

                  Viele Grüße
                  Thomas

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

                  @tobetobe
                  Hallo Thomas,

                  Schallschutzgehäuse:
                  Hat nicht viel gebracht; Fremdgeräusche werden auch aus anderen Richtungen, als aus der "Sprechrichtung" empfangen.
                  Ich habe das zusätzliche Gehäuse wieder entfernt.

                  WakeWord:
                  Du hattest ja mal erwähnt, daß man das WakeWord am Besten mit dem später auch verwendeten Mikrofon (bei mir ReSpeaker 4 Mic-Array) trainieren sollte.
                  Bei mir gab es aber das Problem, daß ich für Rhasspy Raspbian Buster light, also Headless verwende, ergo auch kein Browser (Chromium) verfügbar ist, mit dem das WakeWord auf https://snowboy.kitt.ai/ trainiert werden konnte.

                  Ich habe hier: Snowboy-CustomMaker zwei Python-Scripte gefunden, mit denen man das auch ohne Browser trainieren kann.

                  Es gab aber leider auch damit Probleme:
                  Das erste Python-Script snowboyRecord ist bei mir auf Fehler gelaufen, somit konnte ich keine wav-Dateien aufnehmen.
                  Ich habe die 3 wav-Dateien (0.wav, 1.wav, 2.wav) dann auf dem Raspi manuell mit arecord aufgenommen. Als WakeWord habe ich "Lieselotte" verwendet.
                  Anschließend habe ich die 3 wav-Dateien auf einem Windows-PC mit Audacity bereinigt, d.h. Pausen am Anfang und Ende des Wakewortes entfernt.
                  Anschließend die nun bereinigten wav-Dateien zurück auf den Raspi kopiert.

                  Das zweite Script snowboyTrain hat funktionirt und ich konnte erfolgreich mit den 3 wav-Dateien die Datei "Lieselotte.pmdl" erstellen.
                  Mit "Lieselotte" funktioniert die WakeWord-Erkennung jetzt recht gut.

                  MemoryLeak:
                  Ich habe mehrfach gelesen, daß evtl. ein MemoryLeak bei Rhasspy auftreten kann.
                  Deshalb habe ich zur Sicherheit mit sudo crontab -e einen Cronjob angelegt (0 5 * * * sudo reboot), der den Raspi jeden morgen um 05:00 Uhr rebootet.
                  __

                  Status Quo:
                  Rhasspy (auf Raspi P4) ist jetzt in die Essecke umgezogen, wo nur ab und zu das Radio läuft.
                  WakeWord- und Sprach-Erkennung mit Kaldi funktionieren dort ganz gut (ohne Fehlauslösungen).
                  Das lasse ich jetzt so laufen, bis Rhasspy V 2.5 verfügbar ist, wo dann ja wohl das kpl. Hermes-Protokoll via MQTT unterstützt werden soll.
                  Schaun mer mal ...

                  Frage:
                  Hast Du Dich schon mit der Sprachrückführung, d.h. akustische Rückmeldung (z.B. "Es ist jetzt 12:25 Uhr") auf dem Raspi beschäftigt?
                  Bei mit kommen Rückmeldungen z. Zt. mittels ioBroker-PAW-Adapter auf mein Android-Tablet, was für mich im Prinzip ausreichend ist.

                  Gruß
                  Jörg

                  tobetobeT 1 Antwort Letzte Antwort
                  0
                  • Tom10webT Offline
                    Tom10webT Offline
                    Tom10web
                    schrieb am zuletzt editiert von
                    #67

                    Hallo, in die Runde
                    Ich habe nun nach einigem lesen Rhasspy auf meinem alten Raspi3b installiert . Aufwachen funktioniert und Befehle werden erkannt, die LEDs nutze ich noch nicht, doch wie weiter ?
                    Kann einer einem Anfänger das weitere Vorgehen im Groben erklären.
                    z B. "Wie spät ist es" oder "Schalte die Lampe XY"
                    Ich nutze seit kurzem einen "Beelink BT3 - X Mini PC 4+64GB" (vorher den Raspi) auf dem IOBroker perfekt läuft, unter Objekte/MQTT/de/transition werden auch einige Datenpunkte angelegt, aber nichts mit "Lampe" oder "wie spät".
                    Wie erzeuge ich die benötigten Datenpunkte, auswerten könnte ich sie doch bestimmt mit Blockly-Scripten.
                    Habe bisher alles was ich wollte hinbekommen, hier fehlt mir aber das Grundverständnis. Ich steuere alles (Radio, TV, Rolladen, Garagentor, Alarmanlage,.... per Habpanel auf einem Tablet bzw. Handy, möchte aber einige Befehle per OFFLINE-Sprachsteuerung ausführen.
                    Ich danke euch

                    Raspi3
                    Beelink Bt3 X

                    joergeliJ tobetobeT 3 Antworten Letzte Antwort
                    0
                    • Tom10webT Tom10web

                      Hallo, in die Runde
                      Ich habe nun nach einigem lesen Rhasspy auf meinem alten Raspi3b installiert . Aufwachen funktioniert und Befehle werden erkannt, die LEDs nutze ich noch nicht, doch wie weiter ?
                      Kann einer einem Anfänger das weitere Vorgehen im Groben erklären.
                      z B. "Wie spät ist es" oder "Schalte die Lampe XY"
                      Ich nutze seit kurzem einen "Beelink BT3 - X Mini PC 4+64GB" (vorher den Raspi) auf dem IOBroker perfekt läuft, unter Objekte/MQTT/de/transition werden auch einige Datenpunkte angelegt, aber nichts mit "Lampe" oder "wie spät".
                      Wie erzeuge ich die benötigten Datenpunkte, auswerten könnte ich sie doch bestimmt mit Blockly-Scripten.
                      Habe bisher alles was ich wollte hinbekommen, hier fehlt mir aber das Grundverständnis. Ich steuere alles (Radio, TV, Rolladen, Garagentor, Alarmanlage,.... per Habpanel auf einem Tablet bzw. Handy, möchte aber einige Befehle per OFFLINE-Sprachsteuerung ausführen.
                      Ich danke euch

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

                      @Tom10web
                      Hallo,

                      ich habe hier ( siehe Abschnitt "Dann habe ich im Reiter "Sentences" unter [ChangeLightState] diese Wörter entspr. eingtragen . . . ) mal meine Vorgehensweise beschrieben.
                      Wenn man z.B. "schalte die wandspots ein" sagt, dann sollte der ioBroker-Datenpunkt mqtt.0.rhasspy.intent.ChangeLightState erzeugt werden.
                      Als Inhalt /Wert sollte dann ein JSON-String {"name": "wandspots", "state": "ein"} enthalten sein.

                      Diesen JSON-String werte ich dann mittels Javascript (siehe obiger Link) aus. (Blockly ist nicht so mein Ding)
                      Als Trigger dient mir dabei eine Änderung des Datenpunktes, d.h. wenn sich der Inhalt von mqtt.0.rhasspy.intent.ChangeLightState ändert, wird mittels if-Abfragen der entspr. State gesetzt/geschaltet.

                      if(name == "wandspots" && state == "ein") { 
                          setState ('broadlink2.0.RM:0x27a9_34:ea:34:55:3a:50.L.Licht_Wandspots_An', true);
                       }
                      else if(name == "wandspots" && state == "aus") { 
                          setState ('broadlink2.0.RM:0x27a9_34:ea:34:55:3a:50.L.Licht_Wandspots_Aus', true);
                      }
                      else if(name == "esstischlampe" && state == "ein") { setState ('shelly.0.SHSW-1#2C7AEF#1.Relay0.Switch', true); }
                      else if(name == "esstischlampe" && state == "aus") { setState ('shelly.0.SHSW-1#2C7AEF#1.Relay0.Switch', false); }
                      .
                      .
                      etc
                      
                      

                      Du kannst natürlich auch weitere Abschnitte wie z.B. [Rolladen], oder [Temperatur] in Rhasspy -> Sentences anlegen.
                      Beispiel: (Rhasspy-Sentence):

                      [Rolladen]
                      rolladen_name =  (rolladen ) {name}
                      rolladen_state = (hochfahren | runterfahren | stoppen ) {state}
                      <rolladen_name> <rolladen_state>
                      

                      Beim erstmaligen sprechen von z.B. " rolladen runterfahren" sollte dann ein neuer Datenpunkt mqtt.0.rhasspy.intent.Rolladen automatisch angelegt werden.
                      Der Inhalt/Wert wäre dann z.B. {"name": "rolladen", "state": "runterfahren"}
                      JS-Auswertung dann so:

                      // Rolladen
                      const rolladen   = 'mqtt.0.rhasspy.intent.Rolladen'     // Rolladen
                      on({id: rolladen, change: "any"},function(obj) {
                          let empf_code = getState(rolladen).val ;
                          let empf_json = JSON.parse(empf_code);
                           let name = empf_json.name;
                           let state = empf_json.state;
                           //log ("name: " + name + "  state: " + state);
                      if (name == "rolladen" && state == "hochfahren"){
                          setState ('hm-rpc.0.PEQ0505813.1.STATE', true);
                      }
                      else if(name == "rolladen" && state == "runterfahren"){
                          setState ('hm-rpc.0.PEQ0505813.3.STATE', true);
                      }
                      else if(name == "rolladen" && state == "stoppen"){
                          setState ('hm-rpc.0.PEQ0505813.2.STATE', true);
                      }
                      //log ( name + " " + state );
                      });
                      

                      Ich hoffe, das hilft Dir weiter.

                      Tom10webT 1 Antwort Letzte Antwort
                      0
                      • joergeliJ joergeli

                        @Tom10web
                        Hallo,

                        ich habe hier ( siehe Abschnitt "Dann habe ich im Reiter "Sentences" unter [ChangeLightState] diese Wörter entspr. eingtragen . . . ) mal meine Vorgehensweise beschrieben.
                        Wenn man z.B. "schalte die wandspots ein" sagt, dann sollte der ioBroker-Datenpunkt mqtt.0.rhasspy.intent.ChangeLightState erzeugt werden.
                        Als Inhalt /Wert sollte dann ein JSON-String {"name": "wandspots", "state": "ein"} enthalten sein.

                        Diesen JSON-String werte ich dann mittels Javascript (siehe obiger Link) aus. (Blockly ist nicht so mein Ding)
                        Als Trigger dient mir dabei eine Änderung des Datenpunktes, d.h. wenn sich der Inhalt von mqtt.0.rhasspy.intent.ChangeLightState ändert, wird mittels if-Abfragen der entspr. State gesetzt/geschaltet.

                        if(name == "wandspots" && state == "ein") { 
                            setState ('broadlink2.0.RM:0x27a9_34:ea:34:55:3a:50.L.Licht_Wandspots_An', true);
                         }
                        else if(name == "wandspots" && state == "aus") { 
                            setState ('broadlink2.0.RM:0x27a9_34:ea:34:55:3a:50.L.Licht_Wandspots_Aus', true);
                        }
                        else if(name == "esstischlampe" && state == "ein") { setState ('shelly.0.SHSW-1#2C7AEF#1.Relay0.Switch', true); }
                        else if(name == "esstischlampe" && state == "aus") { setState ('shelly.0.SHSW-1#2C7AEF#1.Relay0.Switch', false); }
                        .
                        .
                        etc
                        
                        

                        Du kannst natürlich auch weitere Abschnitte wie z.B. [Rolladen], oder [Temperatur] in Rhasspy -> Sentences anlegen.
                        Beispiel: (Rhasspy-Sentence):

                        [Rolladen]
                        rolladen_name =  (rolladen ) {name}
                        rolladen_state = (hochfahren | runterfahren | stoppen ) {state}
                        <rolladen_name> <rolladen_state>
                        

                        Beim erstmaligen sprechen von z.B. " rolladen runterfahren" sollte dann ein neuer Datenpunkt mqtt.0.rhasspy.intent.Rolladen automatisch angelegt werden.
                        Der Inhalt/Wert wäre dann z.B. {"name": "rolladen", "state": "runterfahren"}
                        JS-Auswertung dann so:

                        // Rolladen
                        const rolladen   = 'mqtt.0.rhasspy.intent.Rolladen'     // Rolladen
                        on({id: rolladen, change: "any"},function(obj) {
                            let empf_code = getState(rolladen).val ;
                            let empf_json = JSON.parse(empf_code);
                             let name = empf_json.name;
                             let state = empf_json.state;
                             //log ("name: " + name + "  state: " + state);
                        if (name == "rolladen" && state == "hochfahren"){
                            setState ('hm-rpc.0.PEQ0505813.1.STATE', true);
                        }
                        else if(name == "rolladen" && state == "runterfahren"){
                            setState ('hm-rpc.0.PEQ0505813.3.STATE', true);
                        }
                        else if(name == "rolladen" && state == "stoppen"){
                            setState ('hm-rpc.0.PEQ0505813.2.STATE', true);
                        }
                        //log ( name + " " + state );
                        });
                        

                        Ich hoffe, das hilft Dir weiter.

                        Tom10webT Offline
                        Tom10webT Offline
                        Tom10web
                        schrieb am zuletzt editiert von
                        #69

                        @joergeli
                        Danke dir, werde heute Abend mal testen.

                        Raspi3
                        Beelink Bt3 X

                        1 Antwort Letzte Antwort
                        0
                        • joergeliJ joergeli

                          @tobetobe
                          Hallo Thomas,

                          Schallschutzgehäuse:
                          Hat nicht viel gebracht; Fremdgeräusche werden auch aus anderen Richtungen, als aus der "Sprechrichtung" empfangen.
                          Ich habe das zusätzliche Gehäuse wieder entfernt.

                          WakeWord:
                          Du hattest ja mal erwähnt, daß man das WakeWord am Besten mit dem später auch verwendeten Mikrofon (bei mir ReSpeaker 4 Mic-Array) trainieren sollte.
                          Bei mir gab es aber das Problem, daß ich für Rhasspy Raspbian Buster light, also Headless verwende, ergo auch kein Browser (Chromium) verfügbar ist, mit dem das WakeWord auf https://snowboy.kitt.ai/ trainiert werden konnte.

                          Ich habe hier: Snowboy-CustomMaker zwei Python-Scripte gefunden, mit denen man das auch ohne Browser trainieren kann.

                          Es gab aber leider auch damit Probleme:
                          Das erste Python-Script snowboyRecord ist bei mir auf Fehler gelaufen, somit konnte ich keine wav-Dateien aufnehmen.
                          Ich habe die 3 wav-Dateien (0.wav, 1.wav, 2.wav) dann auf dem Raspi manuell mit arecord aufgenommen. Als WakeWord habe ich "Lieselotte" verwendet.
                          Anschließend habe ich die 3 wav-Dateien auf einem Windows-PC mit Audacity bereinigt, d.h. Pausen am Anfang und Ende des Wakewortes entfernt.
                          Anschließend die nun bereinigten wav-Dateien zurück auf den Raspi kopiert.

                          Das zweite Script snowboyTrain hat funktionirt und ich konnte erfolgreich mit den 3 wav-Dateien die Datei "Lieselotte.pmdl" erstellen.
                          Mit "Lieselotte" funktioniert die WakeWord-Erkennung jetzt recht gut.

                          MemoryLeak:
                          Ich habe mehrfach gelesen, daß evtl. ein MemoryLeak bei Rhasspy auftreten kann.
                          Deshalb habe ich zur Sicherheit mit sudo crontab -e einen Cronjob angelegt (0 5 * * * sudo reboot), der den Raspi jeden morgen um 05:00 Uhr rebootet.
                          __

                          Status Quo:
                          Rhasspy (auf Raspi P4) ist jetzt in die Essecke umgezogen, wo nur ab und zu das Radio läuft.
                          WakeWord- und Sprach-Erkennung mit Kaldi funktionieren dort ganz gut (ohne Fehlauslösungen).
                          Das lasse ich jetzt so laufen, bis Rhasspy V 2.5 verfügbar ist, wo dann ja wohl das kpl. Hermes-Protokoll via MQTT unterstützt werden soll.
                          Schaun mer mal ...

                          Frage:
                          Hast Du Dich schon mit der Sprachrückführung, d.h. akustische Rückmeldung (z.B. "Es ist jetzt 12:25 Uhr") auf dem Raspi beschäftigt?
                          Bei mit kommen Rückmeldungen z. Zt. mittels ioBroker-PAW-Adapter auf mein Android-Tablet, was für mich im Prinzip ausreichend ist.

                          Gruß
                          Jörg

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

                          @joergeli
                          Hallo Jörg,

                          Schallschutzgehäuse und Status Quo: Schade, aber nun ist das zumindest eine belastbare Erkenntnis. Ich glaube nun auch, dass andere Wege zielführender sind, nämlich ein zuverlässiges WakeWord, ggf. räumliche Maßnahmen (Verbesserung des Signal/Noise-Verhältnisses, dh Rhasspy näher zum "Sprecher" und weiter weg von den Störquellen) und zuletzt eine gute und zuverlässige Struktur bei den Sentences und den Slots. Das hat zumindest bei mir am meisten zu einer guten Funktionalität beigetragen. Übrigens, nach allem, was man so liest: Mit Fehlerkennungen kämpfen alle Plattformen, auch Snips und Alexa.

                          WakeWord: Gut, dass du einen Weg gefunden hast. Falls du nochmals ein neues WakeWord generieren möchtest, kannst du das auch ganz ohne Skript und Browser in der Kommandozeile erledigen:

                          arecord --duration 5 --rate 16000 --format S16_LE test.wav && aplay ./test.wav
                          

                          Wie du siehst, sind dies zwei Befehle - einer zum Aufnehmen und einer zum Abspielen, die du natürlich auch getrennt eingeben kannst. Statt test.wav gibst du einfach den von dir gewünschten Namen ein, also zB "Lieselotte". Du erstellst so drei Aufnahmen "Lieselotte1, 2, 3" und lädtst diese Dateien einfach über deinen PC mit Browser auf die Snips-Plattform. Du findest dort einen entsprechenden Button zum Hochladen von Dateien. Danach wird dir in bekannter Weise die Datei "Lieselotte.pmdl" generiert, die du dann wieder in Rhasspy hinterlegen kannst.

                          Memory Leak: Habe ich noch nicht festgestellt. Ich werde das mal im Auge behalten. Die Lösung hast du ja schon beschrieben ;-))

                          Akustische Rückmeldung: Bislang habe ich nur Slots und Sentences konfiguriert, die auch bei den MQTT-States richtig ankommen. Für mich kommt PAW leider nicht in Frage, da ich die Sprachausgabe wieder an den Rhasspy zurückschicken will. Ich habe begonne, mich in das Thema einzulesen, habe allerdings noch keine Lösung gefunden. Ggf. hängt das auch noch von der vollständigen Implementierung des Hermes-Protokolls ab.

                          Da ich nur Sprachausgaben an den Rhasspy zurückschicken will, reichen mir kleine Lautsprecher. Ich habe mir zwei Stück von diesen bestellt:

                          2 stücke Arduino Lautsprecher 3 Watt 8 Ohm Single Cavity Mini Lautsprecher Full-Range Hohlraum Mobile Portable Werbung Maschine Lautsprecher mit 11mm Line Länge JST-PH2.0mm-2 Pin Terminal
                          LS

                          Dazu dieses Kabel, um die Lautsprecher platzsparend an den Raspi anzuschließen:

                          Pro 3Ft 3.5mm M-M Klinkenstecker 4 polig 90 gewinkelt Flach Audio Aux Kabel

                          alt text

                          Dieses trenne ich in der Mitte und habe somit Stecker für zwei Rasspy-Satelliten.

                          3D-Drucker: Ich hatte mich noch nicht bedankt. Wirklich sehr hilfreiche Tipps und eine ausgezeichnete Beschreibung. Vielen Dank. Auf deinem Foto vom Gehäuse erkenne ich eine recht grobe Oberfläche: Ist dies Ergebnis eine Frage des Druckers oder des verwendeten Materials? Könntest du auch "glattere" Oberflächen drucken? Für mich wäre nun nämlich das Konstruieren und Drucken des Gehäuses der nächste Schritt, damit mein Rhasspy endlich im Wohnzimmer in den Live-Betrieb gehen kann.

                          Soweit für heute.

                          Beste Grüße
                          Thomas

                          Beste Grüße
                          tobetobe

                          joergeliJ 1 Antwort Letzte Antwort
                          0
                          • Tom10webT Tom10web

                            Hallo, in die Runde
                            Ich habe nun nach einigem lesen Rhasspy auf meinem alten Raspi3b installiert . Aufwachen funktioniert und Befehle werden erkannt, die LEDs nutze ich noch nicht, doch wie weiter ?
                            Kann einer einem Anfänger das weitere Vorgehen im Groben erklären.
                            z B. "Wie spät ist es" oder "Schalte die Lampe XY"
                            Ich nutze seit kurzem einen "Beelink BT3 - X Mini PC 4+64GB" (vorher den Raspi) auf dem IOBroker perfekt läuft, unter Objekte/MQTT/de/transition werden auch einige Datenpunkte angelegt, aber nichts mit "Lampe" oder "wie spät".
                            Wie erzeuge ich die benötigten Datenpunkte, auswerten könnte ich sie doch bestimmt mit Blockly-Scripten.
                            Habe bisher alles was ich wollte hinbekommen, hier fehlt mir aber das Grundverständnis. Ich steuere alles (Radio, TV, Rolladen, Garagentor, Alarmanlage,.... per Habpanel auf einem Tablet bzw. Handy, möchte aber einige Befehle per OFFLINE-Sprachsteuerung ausführen.
                            Ich danke euch

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

                            @Tom10web
                            Hallo und herzlich willkommen in unserer noch kleinen ioBroker/Rhasspy-Runde. Wir haben hier mittlerweile schon sehr viel Erfahrung zusammengetragen, auf die du zurückgreifen kannst. Jörg hat dir ja bereits einige Tipps zukommen lassen. Jeder geht so seinen Weg, der natürlich auch zu den betriebenen Endgeräten passen muss. Ich steuere Rollos zB nicht mit "rauf, runter, stop", sondern wie dimmbare Lampen mit %-Werten, die dem jeweiligen Verschlussgrad entsprechen. Dadurch kann ich das von @Tictactoo geschrieben Skript einheitlich für schaltbare Lampen, dimmbare Lampen und meine Rollos verwenden.

                            Wichtig ist dann neben einem zuverlässigen WakeWord noch eine ebenso zuverlässige Struktur bei den Sentences und den Slots. Bei mir sehen die Sentences so aus:


                            [ChangeDeviceState]
                            ($synonyms_change_command) [(die | das)] ($device_name_switch){device} ($device_state){value} (:){state:.STATE}

                            [ChangeDimmerLevel]
                            dimmer_level = (Null:0 | aus:0 | ein:15 | (1..100)) {value}
                            ($synonyms_change_command) [(die | das | den)] ($device_name_dimmer){device} [auf] <dimmer_level> (:) {state:.LEVEL} [Prozent]

                            [ChangeBlindLevel]
                            blind_level = (auf:100 | zu:0 | Null:0 | (1..100)) {value}
                            ($synonyms_change_command) [(die | das | den)] [Rollladen] [im] ($device_name_blind){device} [auf] <blind_level> (:) {state:.State} [Prozent]

                            [ChangeTemperature]
                            thermostat_level = (Boost:30 | (17..30)) {value}
                            ($synonyms_change_command) [(die | das | den)] ($device_name_thermostat){device} [auf] <thermostat_level> (:) {state:.SET_TEMPERATURE} [Grad]

                            [ChangeWindow]
                            window_duration = (5..30) {time}
                            time_unit = (minute | minuten) {unit}
                            ($synonyms_change_command) [(die | das)] ($device_name_switch){device} [Fenster] ($device_state){value} (:){state:.LEVEL} [für] <window_duration> <time_unit>

                            [GetTemperature]
                            (sag mir | wie | wieviel | was | welche) [(ist die | ist der | ist das | ist es | sind es)] ($synonyms_temperature){value} [(es ist | ist es | haben wir | sind es)][im] ($device_name_thermostat){device}(:) {state:.ACTUAL_TEMPERATURE}

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

                            [SetTimer]
                            timer_name = (eierkocher | backofen) {name}
                            timer_duration = (Null:0 | ein:1 | (1..200)) {time}
                            time_unit = (stunde | stunden | minute | minuten) {unit}
                            (schalte | setze) (die | das | den) <timer_name> [auf] <timer_duration> <time_unit>

                            Und so die Slots:


                            {
                            "device_name_blind": [
                            "(schlafzimmerrechts):javascript.0.Rollladen.SchlafzimmerRechts",
                            "(umkleidezimmer):javascript.0.Rollladen.Umkleidezimmer",
                            "(schlafzimmerlinks):javascript.0.Rollladen.SchlafzimmerLinks"
                            ],
                            "device_name_dimmer": [
                            "(sideboardlampe):hm-rpc.0.ABC.1",
                            "(stehlampe | wohnzimmerlampe):hm-rpc.0.BCE.1",
                            "(haengelampe):hm-rpc.0.CEF.1",
                            "(schreibtischlampe | bürolampe):hm-rpc.0.EFG.1"
                            ],
                            "device_name_switch": [
                            "(linkekuechenlampe):hm-rpc.0.FGH.1",
                            "(schlafzimmerlampe | tannenbaum | mobilesteckdose):hm-rpc.0.GHI.1",
                            "(esszimmerlampe):hm-rpc.0.HIJ.1",
                            "(mobilesteckdose):hm-rpc.0.IJK.1",
                            "(rechtekuechenlampe):hm-rpc.0.JKL.1",
                            "(allelampen):",
                            "(allekuechenlampen):",
                            "(medienschrank):rflink.0.channels.milightv1_1.all_01",
                            "(beidekuechenlampen):"
                            ],
                            "device_name_thermostat": [
                            "(bad | badezimmer):hm-rpc.0.KLM.2",
                            "(schlafzimmer):hm-rpc.0.LMN.4",
                            "(balkon | draussen):hm-rpc.0.MNO.1",
                            "(wohnzimmer | büro | esszimmer):hm-rpc.0.NOP.2",
                            "(gästezimmer | schrankzimmer| ankleidezimmer | umkleidezimmer):hm-rpc.0.OPQ.4"
                            ],
                            "device_name_window": [
                            "(bad | badezimmer):hm-rpc.0.PQR.1"
                            ],
                            "device_state": [
                            "an:true",
                            "ein:true",
                            "aus:false"
                            ],
                            "enum_function_name": [
                            "verschluss:enum.functions.Verschluss",
                            "licht:enum.functions.Licht",
                            "wetter:enum.functions.Wetter",
                            "sicherheit:enum.functions.Sicherheit",
                            "zentrale:enum.functions.Zentrale",
                            "rollladen:enum.functions.Rollladen",
                            "heizung:enum.functions.Heizung",
                            "power:enum.functions.Power"
                            ],
                            "enum_room_name": [
                            "(umkleidezimmer):enum.rooms.Umkleidezimmer",
                            "(schlafzimmer):enum.rooms.Schlafzimmer",
                            "(flur):enum.rooms.Flur",
                            "(büro):enum.rooms.Buero",
                            "(gästewehzeh):enum.rooms.GaesteWC",
                            "(küche):enum.rooms.Kueche",
                            "(diversemobil):enum.rooms.Diverse_Mobil",
                            "(balkon | draussen):enum.rooms.Balkon",
                            "(wohnzimmer | drinnen):enum.rooms.Wohnzimmer",
                            "(bad | badezimmer):enum.rooms.Badezimmer",
                            "(esszimmer):enum.rooms.Esszimmer",
                            "(garage):enum.rooms.Garage",
                            "(hauswirtschaftsraum | kammer):enum.rooms.Hauswirtschaftsraum"
                            ],
                            "scenes": [
                            "(fernsehen):",
                            "(raumfeld):",
                            "(zehdeh):",
                            "(schlafen):",
                            "(ausschalten):",
                            "(dehfaudeh):",
                            "(radio):"
                            ],
                            "synonyms_change_command": [
                            "schalt",
                            "mach",
                            "mach mal",
                            "setze",
                            "stell",
                            "stelle",
                            "setz",
                            "schalte"
                            ],
                            "synonyms_temperature": [
                            "(heizung)",
                            "(thermostat)",
                            "(temperatur)",
                            "(warm)",
                            "(Grad)",
                            "(kalt)",
                            "(heiss)"
                            ]
                            }

                            Wie du siehst, habe ich auch eine saubere Struktur bei den Begrifflichkeiten eingeführt, was ich sehr hilfreich finde.

                            Somit gutes Gelingen!

                            Beste Grüße
                            tobetobe

                            1 Antwort Letzte Antwort
                            0
                            • tobetobeT tobetobe

                              @joergeli
                              Hallo Jörg,

                              Schallschutzgehäuse und Status Quo: Schade, aber nun ist das zumindest eine belastbare Erkenntnis. Ich glaube nun auch, dass andere Wege zielführender sind, nämlich ein zuverlässiges WakeWord, ggf. räumliche Maßnahmen (Verbesserung des Signal/Noise-Verhältnisses, dh Rhasspy näher zum "Sprecher" und weiter weg von den Störquellen) und zuletzt eine gute und zuverlässige Struktur bei den Sentences und den Slots. Das hat zumindest bei mir am meisten zu einer guten Funktionalität beigetragen. Übrigens, nach allem, was man so liest: Mit Fehlerkennungen kämpfen alle Plattformen, auch Snips und Alexa.

                              WakeWord: Gut, dass du einen Weg gefunden hast. Falls du nochmals ein neues WakeWord generieren möchtest, kannst du das auch ganz ohne Skript und Browser in der Kommandozeile erledigen:

                              arecord --duration 5 --rate 16000 --format S16_LE test.wav && aplay ./test.wav
                              

                              Wie du siehst, sind dies zwei Befehle - einer zum Aufnehmen und einer zum Abspielen, die du natürlich auch getrennt eingeben kannst. Statt test.wav gibst du einfach den von dir gewünschten Namen ein, also zB "Lieselotte". Du erstellst so drei Aufnahmen "Lieselotte1, 2, 3" und lädtst diese Dateien einfach über deinen PC mit Browser auf die Snips-Plattform. Du findest dort einen entsprechenden Button zum Hochladen von Dateien. Danach wird dir in bekannter Weise die Datei "Lieselotte.pmdl" generiert, die du dann wieder in Rhasspy hinterlegen kannst.

                              Memory Leak: Habe ich noch nicht festgestellt. Ich werde das mal im Auge behalten. Die Lösung hast du ja schon beschrieben ;-))

                              Akustische Rückmeldung: Bislang habe ich nur Slots und Sentences konfiguriert, die auch bei den MQTT-States richtig ankommen. Für mich kommt PAW leider nicht in Frage, da ich die Sprachausgabe wieder an den Rhasspy zurückschicken will. Ich habe begonne, mich in das Thema einzulesen, habe allerdings noch keine Lösung gefunden. Ggf. hängt das auch noch von der vollständigen Implementierung des Hermes-Protokolls ab.

                              Da ich nur Sprachausgaben an den Rhasspy zurückschicken will, reichen mir kleine Lautsprecher. Ich habe mir zwei Stück von diesen bestellt:

                              2 stücke Arduino Lautsprecher 3 Watt 8 Ohm Single Cavity Mini Lautsprecher Full-Range Hohlraum Mobile Portable Werbung Maschine Lautsprecher mit 11mm Line Länge JST-PH2.0mm-2 Pin Terminal
                              LS

                              Dazu dieses Kabel, um die Lautsprecher platzsparend an den Raspi anzuschließen:

                              Pro 3Ft 3.5mm M-M Klinkenstecker 4 polig 90 gewinkelt Flach Audio Aux Kabel

                              alt text

                              Dieses trenne ich in der Mitte und habe somit Stecker für zwei Rasspy-Satelliten.

                              3D-Drucker: Ich hatte mich noch nicht bedankt. Wirklich sehr hilfreiche Tipps und eine ausgezeichnete Beschreibung. Vielen Dank. Auf deinem Foto vom Gehäuse erkenne ich eine recht grobe Oberfläche: Ist dies Ergebnis eine Frage des Druckers oder des verwendeten Materials? Könntest du auch "glattere" Oberflächen drucken? Für mich wäre nun nämlich das Konstruieren und Drucken des Gehäuses der nächste Schritt, damit mein Rhasspy endlich im Wohnzimmer in den Live-Betrieb gehen kann.

                              Soweit für heute.

                              Beste Grüße
                              Thomas

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

                              @tobetobe
                              Hallo Thomas,

                              WakeWord:
                              Hauptproblem nach Erstellen der WAV-Dateien war die Generierung des WakeWords auf https://snowboy.kitt.ai/.
                              Das Hochladen der 3 WAV-Dateien per Windows-Rechner und Firefox war kein Problem, jedoch soll anschließend dort noch mal getestet werden, was ich nicht durchführen konnte, weil das ReSpeaker Mic-Array ja am Raspi hängt.
                              Deshalb musste ich das mit dem Python-Script snowboyTrain vom Raspi aus machen, welches die PMDL-Datei ohne den Test erstellt.

                              Ich habe - evtl. unbegründete - Bedenken bei der Rückführung:
                              Wenn ein Text z.B. via MQTT von ioBroker zum Rhasspy gesendet wird, muß ja eine WAV-Datei daraus erstellt werden.
                              Auf Dauer wären das ja rel. viele Schreibvorgänge auf der SD-Karte, was ja deren Lebensdauer nicht gut tun soll?

                              Akustische Rückmeldung::
                              Ich hatte mal mit einem Headset die "Beeps" über die 3,5mm-Buchse des Raspi getestet, das funktioniert soweit.
                              Anschließend hatte ich probeweise einen kleinen 8 Ohm-Lautsprecher an die Buchse angeschlossen: da sind die Beeps kaum hörbar. Daraufhin habe ich mir auf Verdacht einen kleinen 5V NF-Verstärker bestellt, aber noch nicht getestet.
                              Wenn ich das richtig gelesen habe, ist auf Deinem Matrix Voice aber bereits ein 2Kanal 3W Audio-Verstärker enthalten, sollte bei Dir also funktionieren.

                              3D-Drucker:
                              Naja, so grob ist die Oberfläche m. E. nicht.
                              Das Gehäuse ist mit einer Schichtdicke von 0,3 mm gedruckt.
                              Ich könnte noch auf 0,2 mm runter gehen, was aber die Druckzeit sehr verlängern würde.
                              Anbei noch mal ein paar Fotos:
                              rhasspy_01.jpg rhasspy_02.jpg rhasspy_03.jpg rhasspy_04.jpg
                              Ich war mit der Tablet-Cam auch ziemlich nah am Objekt und die Schattenwürfe der Schreibtischlampe lassen das Ganze gröber aussehen, als es ist.

                              Gruß
                              Jörg

                              tobetobeT 1 Antwort Letzte Antwort
                              0
                              • Tom10webT Tom10web

                                Hallo, in die Runde
                                Ich habe nun nach einigem lesen Rhasspy auf meinem alten Raspi3b installiert . Aufwachen funktioniert und Befehle werden erkannt, die LEDs nutze ich noch nicht, doch wie weiter ?
                                Kann einer einem Anfänger das weitere Vorgehen im Groben erklären.
                                z B. "Wie spät ist es" oder "Schalte die Lampe XY"
                                Ich nutze seit kurzem einen "Beelink BT3 - X Mini PC 4+64GB" (vorher den Raspi) auf dem IOBroker perfekt läuft, unter Objekte/MQTT/de/transition werden auch einige Datenpunkte angelegt, aber nichts mit "Lampe" oder "wie spät".
                                Wie erzeuge ich die benötigten Datenpunkte, auswerten könnte ich sie doch bestimmt mit Blockly-Scripten.
                                Habe bisher alles was ich wollte hinbekommen, hier fehlt mir aber das Grundverständnis. Ich steuere alles (Radio, TV, Rolladen, Garagentor, Alarmanlage,.... per Habpanel auf einem Tablet bzw. Handy, möchte aber einige Befehle per OFFLINE-Sprachsteuerung ausführen.
                                Ich danke euch

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

                                @Tom10web
                                Hi, hier nochmals das Skript von @Tictactoo für die Sentences zur Lampen- und Rollo-Steuerung:


                                var intentResult = $('mqtt.0.rhasspy.intent.Change*');
                                var intentArray = [];

                                for(var i = 0; i < intentResult.length; i++)
                                {
                                log(intentResult[i]);
                                intentArray.push(intentResult[i]);
                                }

                                on({id: intentArray, change: "any"}, function (obj) {
                                log(obj.newState.val);

                                let intentObject = JSON.parse(obj.newState.val);
                                   if(intentObject.hasOwnProperty('device'))
                                {
                                    var deviceID = intentObject.device;
                                    var state = intentObject.state;
                                    var value = intentObject.value;
                                    log(deviceID + state + value);
                                    setState(deviceID + state, JSON.parse(value));        
                                }
                                

                                });

                                Falls du noch Interesse an meinem vis für die Rollos und dem zugehörigen Skript hast, bitte melden.

                                Beste Grüße
                                tobetobe

                                1 Antwort Letzte Antwort
                                0
                                • Tom10webT Offline
                                  Tom10webT Offline
                                  Tom10web
                                  schrieb am zuletzt editiert von
                                  #74

                                  Herzlichen Dank an euch,
                                  funktioniert auf Anhieb, habe es doch mit JS und nicht mit Blockly getan.
                                  Wenn man´s nur kopieren und anpassen muss ist es ja auch nicht schwer.
                                  Die einfachen Sachen Licht, Rolladen, Garagentor..... Top.
                                  Welchen Vorteil haben die Slots, geht doch auch ohne, oder sind die für die LED Ansteuerung, (welche ich als letztes in Angriff nehme).
                                  @Tictactoo - Danke für das Angebot mit VIS, aber ich bleibe beim Habpanel, ist zwar nicht so umfangreich aber opt. "kompakter" also weniger Arbeit um eine ansehliche Oberfläche zu erreichen.
                                  Noch eine Frage, wie bekomme ich Rhasspy dazu, mir z.B. die Aussentemperatur anzusagen.
                                  Schönen Abend noch

                                  Raspi3
                                  Beelink Bt3 X

                                  joergeliJ tobetobeT 2 Antworten Letzte Antwort
                                  0
                                  • Tom10webT Tom10web

                                    Herzlichen Dank an euch,
                                    funktioniert auf Anhieb, habe es doch mit JS und nicht mit Blockly getan.
                                    Wenn man´s nur kopieren und anpassen muss ist es ja auch nicht schwer.
                                    Die einfachen Sachen Licht, Rolladen, Garagentor..... Top.
                                    Welchen Vorteil haben die Slots, geht doch auch ohne, oder sind die für die LED Ansteuerung, (welche ich als letztes in Angriff nehme).
                                    @Tictactoo - Danke für das Angebot mit VIS, aber ich bleibe beim Habpanel, ist zwar nicht so umfangreich aber opt. "kompakter" also weniger Arbeit um eine ansehliche Oberfläche zu erreichen.
                                    Noch eine Frage, wie bekomme ich Rhasspy dazu, mir z.B. die Aussentemperatur anzusagen.
                                    Schönen Abend noch

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

                                    @Tom10web sagte in Rhasspy Offline Sprachsteuerung:

                                    Noch eine Frage, wie bekomme ich Rhasspy dazu, mir z.B. die Aussentemperatur anzusagen.

                                    Direkte Sprachausgabe auf dem Rhasspy-Raspi haben wir auch noch nicht hinbekommen.
                                    Evtl. wird das was, wenn die angekündigte Rhasspy Version 2.5 verfügbar ist. ( Vorschau auf das GUI: rhasspy-voltron ).

                                    Ich nutze momentan einen Workaround, in dem ich den entspr. Antworttext mit JavaScript generiere und diesen Text dann mit dem ioBroker PAW-Adapter an mein Tablet/Smartphone sende, wo dann die Sprachausgabe erfolgt.

                                    Der Wert der Aussentemperatur (bzw. weiterer Temperaturen) muss natürlich bereits in einem ioBroker-Datenpunkt vorhanden sein.

                                    Der Rhasspy-Sentence sieht bei mir so aus:

                                    [Temperatur]
                                    temperatur_name = (temperatur) {name}
                                    temperatur_state = (draussen| wohnzimmer | keller | schlafzimmer | badewasser) {state}
                                    wie (warm | kalt) ist [es | das] [(im)] <temperatur_state>
                                    

                                    Das entspr. Javascript:

                                    const temperatur = 'mqtt.0.rhasspy.intent.Temperatur'   // Temperatur
                                    
                                    //______________________________________________
                                    // Temperaturen
                                    on({id: temperatur, change: "any"},function(obj) {
                                        let empf_code = getState(temperatur).val ;
                                        let empf_json = JSON.parse(empf_code);
                                        let name = empf_json.name;
                                        let state = empf_json.state;
                                        //log ("name: " + name + "  state: " + state);
                                    
                                      if (state == "draussen") {
                                        let aussentemp_obj = "hm-rpc.2.CUX0100001.1.TEMPERATURE";
                                        let aussenfeuchte_obj = "hm-rpc.2.CUX0100001.1.HUMIDITY";
                                        let aussentemp_wert = getState(aussentemp_obj).val;
                                        let aussenfeuchte_wert = getState(aussenfeuchte_obj).val;
                                        let aussentemp_string =  String(aussentemp_wert);
                                        let aussenfeuchte_string =  String(aussenfeuchte_wert);
                                        let aussentemp = aussentemp_string.replace(".",",");
                                        let aussenfeuchte = aussenfeuchte_string.replace(".",",");
                                        //log ( " Aussen-Temperatur ist " + aussentemp + " Grad" );
                                        sendTo("paw.0",'Tablet_Jörg',{tts: "Es sind " + aussentemp + " Grad draussen bei " + aussenfeuchte + " Prozent Luftfeuchtigkeit" });      
                                         }
                                    else if(state == "innen" || state == "wohnzimmer") {
                                        let innentemp_obj = "sonoff.0.Kodi-Stecker.AM2301_Temperature";
                                        let innentemp_wert = getState(innentemp_obj).val;
                                        let innentemp_string =  String(innentemp_wert);
                                        let innentemp = innentemp_string.replace(".",",");
                                        //log ( " Innen-Temperatur ist " + innentemp + " Grad" );
                                        sendTo("paw.0",'Tablet_Jörg',{tts: "Es sind " + innentemp + " Grad im Wohnzimmer" });      
                                         }
                                    else if(state == "keller") {
                                        let kellertemp_obj = "hm-rpc.2.CUX0100008.1.TEMPERATURE";
                                        let kellertemp_wert = getState(kellertemp_obj).val;
                                        let kellertemp_string =  String(kellertemp_wert);
                                        let kellertemp = kellertemp_string.replace(".",",");
                                        //log ( " Keller-Temperatur ist " + kellertemp + " Grad" );
                                        sendTo("paw.0",'Tablet_Jörg',{tts: "Es sind " + kellertemp + " Grad im Keller" });      
                                         }
                                    else if(state == "schlafzimmer") {
                                        let schlafzimmer_obj = "javascript.0.DHT22.Schlafzimmer.Temp";
                                        let schlafzimmer_wert = getState(schlafzimmer_obj).val;
                                        let schlafzimmer_string =  String(schlafzimmer_wert);
                                        let schlafzimmer = schlafzimmer_string.replace(".",",");
                                        //log ( " Schlafzimmer-Temperatur ist " + schlafzimmer + " Grad" );
                                        sendTo("paw.0",'Tablet_Jörg',{tts: "Es sind " + schlafzimmer + " Grad im Schlafzimmer" });      
                                         }
                                    else if(state == "badewasser") {
                                        let badewasser_obj = "javascript.0.SolarParser.Daten5";
                                        let badewasser_wert = getState(badewasser_obj).val;
                                        let badewasser_string =  String(badewasser_wert);
                                        let badewassertemp = badewasser_string.replace(".",",");
                                        //log ( " Badewasser-Temperatur ist " + badewassertemp + " Grad" );
                                        sendTo("paw.0",'Tablet_Jörg',{tts: "Das Badewasser hat " + badewassertemp + " Grad" });      
                                         }
                                    });
                                    //______________________________________________
                                    

                                    Hinweis:
                                    Für die Sprachausgabe muß ich die Zahlenwerte in Strings konvertieren.

                                    Meine Temperaturwerte werden von verschiedenen Senoren geliefert:
                                    Aussentemp/-feuchte über CUX von meiner 433 MHz Wetterstation.
                                    (falls es interessiert, meine Wetterdaten gibt's auch online zu sehen: joergeli.de )
                                    Innentemp über einen Sonoff Basic mit zusätzlichem DHT22/AM2301-Senor
                                    Die restlichen Temperaturen über NodeMCUs, die mit Sketchen für DHT22 geflashed wurden.

                                    1 Antwort Letzte Antwort
                                    0
                                    • Tom10webT Tom10web

                                      Herzlichen Dank an euch,
                                      funktioniert auf Anhieb, habe es doch mit JS und nicht mit Blockly getan.
                                      Wenn man´s nur kopieren und anpassen muss ist es ja auch nicht schwer.
                                      Die einfachen Sachen Licht, Rolladen, Garagentor..... Top.
                                      Welchen Vorteil haben die Slots, geht doch auch ohne, oder sind die für die LED Ansteuerung, (welche ich als letztes in Angriff nehme).
                                      @Tictactoo - Danke für das Angebot mit VIS, aber ich bleibe beim Habpanel, ist zwar nicht so umfangreich aber opt. "kompakter" also weniger Arbeit um eine ansehliche Oberfläche zu erreichen.
                                      Noch eine Frage, wie bekomme ich Rhasspy dazu, mir z.B. die Aussentemperatur anzusagen.
                                      Schönen Abend noch

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

                                      @Tom10web said in Rhasspy Offline Sprachsteuerung:

                                      Welchen Vorteil haben die Slots, geht doch auch ohne, oder sind die für die LED Ansteuerung, (welche ich als letztes in Angriff nehme).

                                      Hallo, das beantworte ich gerne. Zunächst: Alles, was funktioniert, ist natürlich machbar. Alles, was immer zuverlässig funktioniert, ist besser. Du wirst selbst rasch feststellen, dass die Anzahl deiner Sentences und auch deren Komplexität rasch zunehmen.

                                      Bei mir kam es anfangs zu häufigen Fehlschaltungen, weil ich in den Sentences immer wieder Definitionen vorgenommen und Begriffe/Namen verwendet habe, die ich in einem anderen Sentence bereits definiert hatte. Das war nicht nur fehleranfällig, sondern wurde auch immer unübersichtlicher. Daher habe ich mich dazu entschlossen, alles, was ich in mehreren Sentences wiederverwenden kann, in den Slots zu hinterlegen.

                                      Die Slots sind also sozusagen der Baukasten, mit dem man die Sentences aufbauen kann.

                                      Neben der besseren Übersichtlichkeit ist auch die einfachere Pflege dieser Daten ein großer Vorteil. Beispiel: Stell dir vor, du möchtest ein weiteres Kommando für einen Schaltzustand hinzufügen, also zB zusätzlich zu "AUS" auch noch "WEG". Dann müsstest du in deinem Vorgehen jeden einzelnen Sentence ändern. Bei einer sauberen Trennung Sentences/Slots hingegen bräuchtest du nur ein einer Stelle in den Slots das neue Kommando mit aufzunehmen.

                                      Fazit: Zuverlässige Funktion, Übersichtlichkeit und leichtere Pflege sind für mich die entscheidenden Vorteile, eine saubre Struktur bei den Slots zu verwenden.

                                      @Tom10web said in Rhasspy Offline Sprachsteuerung:

                                      Danke für das Angebot mit VIS, aber ich bleibe beim Habpanel,

                                      Gerne und kein Problem. Aus welcher Oberfläche die Daten für mein Skript zur Steuerung der Rollos kommen, müsste eigentlich gleichgültig sein. Ich persönlich denke, dass es in einem Smart Home System mehr Sinn ergibt, die Rollos zeit- und eventgesteuert zu bedienen, als vor einer Bedienoberfläche zu sitzen, den Knopf "Runterfahren" zu drücken, um dann im richtigen Moment "Stop" auszulösen, wenn zB die gewünschte Beschattung erreicht wurde - zumal für ein Rollo in einem Zimmer, in das man keinen Einblick hat. Man kann natürlich auch mit dem Tablet in das Zimmer im zweiten Stock gehen, um das Rollo zu beobachten ;-))

                                      Beste Grüße
                                      Thomas

                                      Beste Grüße
                                      tobetobe

                                      Tom10webT 1 Antwort Letzte Antwort
                                      0
                                      • joergeliJ joergeli

                                        @tobetobe
                                        Hallo Thomas,

                                        WakeWord:
                                        Hauptproblem nach Erstellen der WAV-Dateien war die Generierung des WakeWords auf https://snowboy.kitt.ai/.
                                        Das Hochladen der 3 WAV-Dateien per Windows-Rechner und Firefox war kein Problem, jedoch soll anschließend dort noch mal getestet werden, was ich nicht durchführen konnte, weil das ReSpeaker Mic-Array ja am Raspi hängt.
                                        Deshalb musste ich das mit dem Python-Script snowboyTrain vom Raspi aus machen, welches die PMDL-Datei ohne den Test erstellt.

                                        Ich habe - evtl. unbegründete - Bedenken bei der Rückführung:
                                        Wenn ein Text z.B. via MQTT von ioBroker zum Rhasspy gesendet wird, muß ja eine WAV-Datei daraus erstellt werden.
                                        Auf Dauer wären das ja rel. viele Schreibvorgänge auf der SD-Karte, was ja deren Lebensdauer nicht gut tun soll?

                                        Akustische Rückmeldung::
                                        Ich hatte mal mit einem Headset die "Beeps" über die 3,5mm-Buchse des Raspi getestet, das funktioniert soweit.
                                        Anschließend hatte ich probeweise einen kleinen 8 Ohm-Lautsprecher an die Buchse angeschlossen: da sind die Beeps kaum hörbar. Daraufhin habe ich mir auf Verdacht einen kleinen 5V NF-Verstärker bestellt, aber noch nicht getestet.
                                        Wenn ich das richtig gelesen habe, ist auf Deinem Matrix Voice aber bereits ein 2Kanal 3W Audio-Verstärker enthalten, sollte bei Dir also funktionieren.

                                        3D-Drucker:
                                        Naja, so grob ist die Oberfläche m. E. nicht.
                                        Das Gehäuse ist mit einer Schichtdicke von 0,3 mm gedruckt.
                                        Ich könnte noch auf 0,2 mm runter gehen, was aber die Druckzeit sehr verlängern würde.
                                        Anbei noch mal ein paar Fotos:
                                        rhasspy_01.jpg rhasspy_02.jpg rhasspy_03.jpg rhasspy_04.jpg
                                        Ich war mit der Tablet-Cam auch ziemlich nah am Objekt und die Schattenwürfe der Schreibtischlampe lassen das Ganze gröber aussehen, als es ist.

                                        Gruß
                                        Jörg

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

                                        @joergeli

                                        Hallo Jörg,

                                        WakeWord: Danke für den Tipp zum Testen. Das schaue ich mir nochmals an, in der Hoffnung, dass man den Test dann auch mit dem Browsermikrofon durchführen kann. Ansonsten kann ich ja immer noch auf das von dir gefundene Skript zurückgreifen. Gute Arbeit!

                                        @joergeli said in Rhasspy Offline Sprachsteuerung:

                                        Wenn ein Text z.B. via MQTT von ioBroker zum Rhasspy gesendet wird, muß ja eine WAV-Datei daraus erstellt werden.

                                        Interessante Überlegung. Das führt mich zu der Frage, ob die wavs wirklich dynamisch erzeugt werden müssen, oder ob man dies gesamte, anzusagende Sequenz nicht aus verschiedenen wav-Dateien zusammenstückeln kann/muss, so dass das dynamische Generieren auf ein Minimum beschränkt werden kann, also zB "die Temperatur" (festes wav1) "im Wohnzimmer beträgt" (festes wav2) "neunundneunzig" (dynamisches wav3) "Grad" (festes wav4).

                                        Das ist für mich nur so eine Überlegung, die ich im Auge behalten werde. Ich denke mir, dass dies auch ein zeitlicher Aspekt sein könnte. Je mehr neu generiert werden muss, um so länger dauert auch bis zur Ansage. Wir werden sehen...

                                        Akustische Rückmeldung: Ich warte noch auf mein Kabel, welches erst Anfang März geliefert werden soll. Von daher hatte ich meine kleinen Lautsprecher noch nie in Betrieb. Momentan habe ich nur einen Ohrhörersatz vom iPhone angeschlossen. In deinem Fall einen kleinen Verstärker zu verwenden, ist sicher sinnvoll. Jetzt brauchst du natürlich wieder ein neues Gehäuse...

                                        3D-Drucker: Wie gesagt: Ich habe bei dem gesamten Thema noch gar keine Erfahrung. Ich habe lediglich einige BIlder von selbst erstellten Druckexemplaren (zB bei Thingiverse) gesehen, deren Oberflächen absolut glatt erscheinen. Kann natürlich auch sein, dass hier manipuliert wurde...

                                        Beste Grüße
                                        Thomas

                                        Beste Grüße
                                        tobetobe

                                        joergeliJ 1 Antwort Letzte Antwort
                                        0
                                        • tobetobeT tobetobe

                                          @joergeli

                                          Hallo Jörg,

                                          WakeWord: Danke für den Tipp zum Testen. Das schaue ich mir nochmals an, in der Hoffnung, dass man den Test dann auch mit dem Browsermikrofon durchführen kann. Ansonsten kann ich ja immer noch auf das von dir gefundene Skript zurückgreifen. Gute Arbeit!

                                          @joergeli said in Rhasspy Offline Sprachsteuerung:

                                          Wenn ein Text z.B. via MQTT von ioBroker zum Rhasspy gesendet wird, muß ja eine WAV-Datei daraus erstellt werden.

                                          Interessante Überlegung. Das führt mich zu der Frage, ob die wavs wirklich dynamisch erzeugt werden müssen, oder ob man dies gesamte, anzusagende Sequenz nicht aus verschiedenen wav-Dateien zusammenstückeln kann/muss, so dass das dynamische Generieren auf ein Minimum beschränkt werden kann, also zB "die Temperatur" (festes wav1) "im Wohnzimmer beträgt" (festes wav2) "neunundneunzig" (dynamisches wav3) "Grad" (festes wav4).

                                          Das ist für mich nur so eine Überlegung, die ich im Auge behalten werde. Ich denke mir, dass dies auch ein zeitlicher Aspekt sein könnte. Je mehr neu generiert werden muss, um so länger dauert auch bis zur Ansage. Wir werden sehen...

                                          Akustische Rückmeldung: Ich warte noch auf mein Kabel, welches erst Anfang März geliefert werden soll. Von daher hatte ich meine kleinen Lautsprecher noch nie in Betrieb. Momentan habe ich nur einen Ohrhörersatz vom iPhone angeschlossen. In deinem Fall einen kleinen Verstärker zu verwenden, ist sicher sinnvoll. Jetzt brauchst du natürlich wieder ein neues Gehäuse...

                                          3D-Drucker: Wie gesagt: Ich habe bei dem gesamten Thema noch gar keine Erfahrung. Ich habe lediglich einige BIlder von selbst erstellten Druckexemplaren (zB bei Thingiverse) gesehen, deren Oberflächen absolut glatt erscheinen. Kann natürlich auch sein, dass hier manipuliert wurde...

                                          Beste Grüße
                                          Thomas

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

                                          Hallo Thomas,
                                          @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                                          WakeWord: Danke für den Tipp zum Testen. Das schaue ich mir nochmals an, in der Hoffnung, dass man den Test dann auch mit dem Browsermikrofon durchführen kann. Ansonsten kann ich ja immer noch auf das von dir gefundene Skript zurückgreifen

                                          Mit dem Browsermikrofon hatte ich es ja vorher erfolgreich direkt online durchgeführt.
                                          In den Tipps der Rhasspy-Community liest man aber, daß es wohl besser wäre, das mit dem Mikrofon durchzuführen, welches final auch verwendet wird. Deshalb meine Klimmzüge mit dem Rhasspy-Mikrofon.
                                          Hat dann bis dato auch rel. gut am finalen Standort des Rhasspy funktioniert.

                                          aaaber: Langsam treibt mich das Wakeword in den Wahnsinn.
                                          Gestern kommt Frau nach Hause und sagt ein paar belanglose Sätze (ohne WakeWord), was zur Folge hat, daß wieder andauernd Fehlauslösungen kommen. :angry:
                                          Ich habe jetzt, wie hier erwähnt, zusätzlich mit dem Gain (Verstärkungsfaktor) des Mikros experimentiert. Mein Profil diesbzgl. sieht jetzt so aus:

                                              "wake": {
                                                  "command": {
                                                      "program": "$RHASSPY_BASE_DIR/bin/mock-commands/sleep.sh"
                                                  },
                                                  "precise": {
                                                      "model": "okay-rhasspy.pb"
                                                  },
                                                  "snowboy": {
                                                      "audio_gain": "1.3",
                                                      "model": "snowboy/liesel.pmdl",
                                                      "sensitivity": "0.44"
                                                  },
                                                  "system": "snowboy"
                                              }
                                          

                                          also sensitivity runter gesetzt und audio_gain erhöht.
                                          Das muß ich jetzt mal beobachten.

                                          Gruß
                                          Jörg

                                          tobetobeT 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

                                          902

                                          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