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

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

Community Forum

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

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.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 sagte in Rhasspy Offline Sprachsteuerung:

    Dieser Überlegung zu einem Vorgehen würde ich mich zu 10% anschließen

    ... und bei den restlichen 90% hast Du Bedenken? :grin: :grin: :grin:

    @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

    ich schätze deine Meinung, möchte dich jedoch keinesfalls zu irgendetwas drängen. Auch habe ich überhaupt keine "Forderungen". Insofern fühl dich bitte vollkommen frei, so zu verfahren, wie du möchtest.

    Habe ich auch nicht so aufgefasst, mich juckt es ja selbst in den Fingern das zu testen

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

    @joergeli said in Rhasspy Offline Sprachsteuerung:

    ... und bei den restlichen 90% hast Du Bedenken?

    Erwischt!!! Ein Tipfehler...

    Ich habe mich heute auch noch einmal intensiv mit dem Thema beschäftigt. Zunächst gibt es einen ganz einfachen Weg, Sprachausgaben auf dem Rhasspy mit dem jeweils aktivierten TTS-Modul (bei mir PicoTTS) zu testen. Hierzu in der Rhasspy-Oberfläche einfach auf das Feld mit der Versionsnummer klicken. Man erhält dann direkten Zugang zur API. Weiter unten gibt es dann die Möglichkeit, einen eigenen Text an den Rhasspy zu schicken, der dann über die Lautsprecherbuchse ausgegeben wird. Alternativ kann man die Seite auch durch Aufruf im Browser finden:

    http://<IP>:12101/api/#/default/post_api_text_to_speech
    

    Die Beschreibung zur API hier:

    https://rhasspy.readthedocs.io/en/latest/reference/#http-api
    

    Nun habe ich versucht, mithilfe vorhandener Skripts, Befehle an diese API-Schnittstelle zu senden. Zum Einen mit dem Befehl "send", zum Anderen mit "request" bzw. XMLHttpRequest. Für Letzteres mus "xmlhttprequest" als zusätzliches Modul im JS-Adapter eingetragen sein.

    Hier meine beiden Skripte:

    1. Mit send:
    // Skript zur Abfrage von Temperaturen
    var intentResult = $('mqtt.0.rhasspy.intent.*Temperature');
    var intentArray = [];
    var url = "http://<IP>:12101/api/text-to-speech?repeat=false&play=true";
    var method = "POST";
    var shouldBeAsync = true;
    
    
     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 = getState(deviceID + state);
            var postData = value.val;
            log(value.val); 
            sendTo('http://<IP>:12101/api/text-to-speech?repeat=false&play=true', 'send', 'value.val + "Grad Celsius"');
        }
    });
    

    Dieses gibt im Log die Temperatur richtig aus, sendet die Daten jedoch nicht an Rhasspy.

    Bei dem Skript mit "request" bekomme ich schon Fehlermeldungen zu Zeile 8. Offensichtlich wird xmlhttprequest trotz im JS-Adapter installiertem Zusatzmodul nicht erkannt.

    //Skript zur Abfrage von Temperaturen
    var intentResult = $('mqtt.0.rhasspy.intent.*Temperature');
    var intentArray = [];
    var url = "http://192.168.13.157:12101/api/text-to-speech";
    var method = "POST";
    var shouldBeAsync = true;
    
    var request = new XMLHttpRequest();
    
    
     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 = getState(deviceID + state);
            var postData = value.val;
    
            request.open(method, url, shouldBeAsync);
            request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
            request.push(postData);
    // ggf. letzten Befehl alternativ mit .send statt mit .push        
            log(postData);            
        }
    });
    
    

    Die dritte Möglichkeit wäre über jQuery, mit der ich mich jedoch noch nicht befasst habe. Hier mal ein Code-Fetzen:

    /*
                jQuery.ajax({
                method: "POST",
                url: "save.php",
                data: { image: canvasToDataURLString }
                });
    */
    

    Dies soweit nur zu deiner Info. Ich wende mich mal an andere Forenmitglieder, die sich schon mit ähnlichen Aufgabenstellungen befasst haben.

    Gruß
    Thomas

    Beste Grüße
    tobetobe

    joergeliJ 1 Antwort Letzte Antwort
    0
    • tobetobeT tobetobe

      @joergeli said in Rhasspy Offline Sprachsteuerung:

      ... und bei den restlichen 90% hast Du Bedenken?

      Erwischt!!! Ein Tipfehler...

      Ich habe mich heute auch noch einmal intensiv mit dem Thema beschäftigt. Zunächst gibt es einen ganz einfachen Weg, Sprachausgaben auf dem Rhasspy mit dem jeweils aktivierten TTS-Modul (bei mir PicoTTS) zu testen. Hierzu in der Rhasspy-Oberfläche einfach auf das Feld mit der Versionsnummer klicken. Man erhält dann direkten Zugang zur API. Weiter unten gibt es dann die Möglichkeit, einen eigenen Text an den Rhasspy zu schicken, der dann über die Lautsprecherbuchse ausgegeben wird. Alternativ kann man die Seite auch durch Aufruf im Browser finden:

      http://<IP>:12101/api/#/default/post_api_text_to_speech
      

      Die Beschreibung zur API hier:

      https://rhasspy.readthedocs.io/en/latest/reference/#http-api
      

      Nun habe ich versucht, mithilfe vorhandener Skripts, Befehle an diese API-Schnittstelle zu senden. Zum Einen mit dem Befehl "send", zum Anderen mit "request" bzw. XMLHttpRequest. Für Letzteres mus "xmlhttprequest" als zusätzliches Modul im JS-Adapter eingetragen sein.

      Hier meine beiden Skripte:

      1. Mit send:
      // Skript zur Abfrage von Temperaturen
      var intentResult = $('mqtt.0.rhasspy.intent.*Temperature');
      var intentArray = [];
      var url = "http://<IP>:12101/api/text-to-speech?repeat=false&play=true";
      var method = "POST";
      var shouldBeAsync = true;
      
      
       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 = getState(deviceID + state);
              var postData = value.val;
              log(value.val); 
              sendTo('http://<IP>:12101/api/text-to-speech?repeat=false&play=true', 'send', 'value.val + "Grad Celsius"');
          }
      });
      

      Dieses gibt im Log die Temperatur richtig aus, sendet die Daten jedoch nicht an Rhasspy.

      Bei dem Skript mit "request" bekomme ich schon Fehlermeldungen zu Zeile 8. Offensichtlich wird xmlhttprequest trotz im JS-Adapter installiertem Zusatzmodul nicht erkannt.

      //Skript zur Abfrage von Temperaturen
      var intentResult = $('mqtt.0.rhasspy.intent.*Temperature');
      var intentArray = [];
      var url = "http://192.168.13.157:12101/api/text-to-speech";
      var method = "POST";
      var shouldBeAsync = true;
      
      var request = new XMLHttpRequest();
      
      
       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 = getState(deviceID + state);
              var postData = value.val;
      
              request.open(method, url, shouldBeAsync);
              request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
              request.push(postData);
      // ggf. letzten Befehl alternativ mit .send statt mit .push        
              log(postData);            
          }
      });
      
      

      Die dritte Möglichkeit wäre über jQuery, mit der ich mich jedoch noch nicht befasst habe. Hier mal ein Code-Fetzen:

      /*
                  jQuery.ajax({
                  method: "POST",
                  url: "save.php",
                  data: { image: canvasToDataURLString }
                  });
      */
      

      Dies soweit nur zu deiner Info. Ich wende mich mal an andere Forenmitglieder, die sich schon mit ähnlichen Aufgabenstellungen befasst haben.

      Gruß
      Thomas

      joergeliJ Offline
      joergeliJ Offline
      joergeli
      schrieb am zuletzt editiert von joergeli
      #95

      @tobetobe
      Hallo Thomas,
      so, wieder Zeit zum Spielen gehabt:
      Rhasspy-Sprachausgabe läuft via pico-tts bei mir mit folgender JavaScript-Funktion:

      
      //#########################################
      // Rhasspy - Text to Speech
      //#########################################
      
      let http = require('http');
      const temp  = 'hm-rpc.2.CUX0100001.1.TEMPERATURE'      // Datenpunkt Aussen-Temperatur
      
      // Für Rhasspy-TTS:
      let options = {
          host: '192.168.192.24', //Rhasspy IP-Adresse
          port: 12101,            //Rhasspy Port
          path: "/api/text-to-speech",
          method: 'POST',
          headers: {
              'User-Agent' : 'ioBroker',
              'Content-Type': 'text/plain',
             // 'Content-Length': data.length
          }
      };
      
      //______________________________________________________________________________
      
      function httpPost(data) {
          let req = http.request(options, function(res) {
          console.log("http Status: " + res.statusCode);
          // Header (Rückmeldung vom Webserver)
          console.log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 200 ? "warn" : "info"));
          });
      
          // Fehler abfangen
          req.on('error', function(e) { 
              console.log('ERROR: ' + e.message,"warn");
          });
      
          // write data to request body
          console.log("Data to request body: " + data);
          (data ? req.write(data) : console.log("Daten: keine Daten vorhanden"));
          req.end();
      }
      
      //______________________________________________________________________________
      
      // Beispiel-Sprachausgabe auf Rhasspy bei Temperaturänderung
      on({id: temp, change: "any"},function(obj) {
          let aussentemp_wert = getState(temp).val;
          let data = 'Es sind momentan ' + aussentemp_wert + ' Grad Celsius draussen';
          //console.log("data: " + data);
          httpPost(data);
      });
      //______________________________________________________________________________
      
      

      Das funktioniert bei mir einwandfrei, zwar immer noch über Kopfhörer, da ich noch nicht dazu gekommen bin, den Mini-NF-Verstärker am Rhasspy anzuschließen.

      Mir ist dabei im Rhasspy-Log aufgefallen, daß anscheinend bei jeder Sprachausgabe eine xxxxxxxx.wav-Datei in den /tmp-Ordner geschrieben wird:

      [INFO:10688731] quart.serving: 192.168.192.29:38380 POST /api/text-to-speech 1.1 200 43 4624186
      [DEBUG:10688718] InboxActor:  -> stopped
      [DEBUG:10688713] SnowboyWakeListener: paused -> listening
      [DEBUG:10688711] PicoTTSSentenceSpeaker: speaking -> ready
      [DEBUG:10684307] APlayAudioPlayer: ['aplay', '-q']
      [DEBUG:10684305] SnowboyWakeListener: listening -> paused
      [DEBUG:10684305] PicoTTSSentenceSpeaker: ready -> speaking
      [DEBUG:10684112] PicoTTSSentenceSpeaker: ['pico2wave', '-w', '/tmp/tmpxk8vw7cj.wav', '-l', 'de-DE', 'Es sind momentan 23.5 Grad Celsius draussen']
      [INFO:10674234] quart.serving: 192.168.192.29:38296 POST /api/text-to-speech 1.1 200 40 3331912
      [DEBUG:10674218] InboxActor:  -> stopped
      [DEBUG:10674213] SnowboyWakeListener: paused -> listening
      [DEBUG:10674211] PicoTTSSentenceSpeaker: speaking -> ready
      [DEBUG:10671065] APlayAudioPlayer: ['aplay', '-q']
      [DEBUG:10671064] SnowboyWakeListener: listening -> paused
      [DEBUG:10671063] PicoTTSSentenceSpeaker: ready -> speaking
      [DEBUG:10670907] PicoTTSSentenceSpeaker: ['pico2wave', '-w', '/tmp/tmpzlb4_9pn.wav', '-l', 'de-DE', 'Es sind momentan 8 Grad Celsius draussen']
      

      Ich bin mir nicht sicher, ob die dann gleich nach der Sprachausgabe wieder gelöscht wird, jedenfalls sind via SSH keine wav-Dateien im /tmp-Ordner zu finden.

      Übrigens:
      @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

      Bei dem Skript mit "request" bekomme ich schon Fehlermeldungen zu Zeile 8. Offensichtlich wird xmlhttprequest trotz im JS-Adapter installiertem Zusatzmodul nicht erkannt.

      Falls Du damit die rote Wellenlinie unter request im JS-Editor meinst:
      Einfach ignorieren, ist ein Problem des JS-Editors, Script sollte trotzdem funktionieren.

      Gruß
      Jörg

      tobetobeT 2 Antworten Letzte Antwort
      0
      • joergeliJ joergeli

        @tobetobe
        Hallo Thomas,
        so, wieder Zeit zum Spielen gehabt:
        Rhasspy-Sprachausgabe läuft via pico-tts bei mir mit folgender JavaScript-Funktion:

        
        //#########################################
        // Rhasspy - Text to Speech
        //#########################################
        
        let http = require('http');
        const temp  = 'hm-rpc.2.CUX0100001.1.TEMPERATURE'      // Datenpunkt Aussen-Temperatur
        
        // Für Rhasspy-TTS:
        let options = {
            host: '192.168.192.24', //Rhasspy IP-Adresse
            port: 12101,            //Rhasspy Port
            path: "/api/text-to-speech",
            method: 'POST',
            headers: {
                'User-Agent' : 'ioBroker',
                'Content-Type': 'text/plain',
               // 'Content-Length': data.length
            }
        };
        
        //______________________________________________________________________________
        
        function httpPost(data) {
            let req = http.request(options, function(res) {
            console.log("http Status: " + res.statusCode);
            // Header (Rückmeldung vom Webserver)
            console.log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 200 ? "warn" : "info"));
            });
        
            // Fehler abfangen
            req.on('error', function(e) { 
                console.log('ERROR: ' + e.message,"warn");
            });
        
            // write data to request body
            console.log("Data to request body: " + data);
            (data ? req.write(data) : console.log("Daten: keine Daten vorhanden"));
            req.end();
        }
        
        //______________________________________________________________________________
        
        // Beispiel-Sprachausgabe auf Rhasspy bei Temperaturänderung
        on({id: temp, change: "any"},function(obj) {
            let aussentemp_wert = getState(temp).val;
            let data = 'Es sind momentan ' + aussentemp_wert + ' Grad Celsius draussen';
            //console.log("data: " + data);
            httpPost(data);
        });
        //______________________________________________________________________________
        
        

        Das funktioniert bei mir einwandfrei, zwar immer noch über Kopfhörer, da ich noch nicht dazu gekommen bin, den Mini-NF-Verstärker am Rhasspy anzuschließen.

        Mir ist dabei im Rhasspy-Log aufgefallen, daß anscheinend bei jeder Sprachausgabe eine xxxxxxxx.wav-Datei in den /tmp-Ordner geschrieben wird:

        [INFO:10688731] quart.serving: 192.168.192.29:38380 POST /api/text-to-speech 1.1 200 43 4624186
        [DEBUG:10688718] InboxActor:  -> stopped
        [DEBUG:10688713] SnowboyWakeListener: paused -> listening
        [DEBUG:10688711] PicoTTSSentenceSpeaker: speaking -> ready
        [DEBUG:10684307] APlayAudioPlayer: ['aplay', '-q']
        [DEBUG:10684305] SnowboyWakeListener: listening -> paused
        [DEBUG:10684305] PicoTTSSentenceSpeaker: ready -> speaking
        [DEBUG:10684112] PicoTTSSentenceSpeaker: ['pico2wave', '-w', '/tmp/tmpxk8vw7cj.wav', '-l', 'de-DE', 'Es sind momentan 23.5 Grad Celsius draussen']
        [INFO:10674234] quart.serving: 192.168.192.29:38296 POST /api/text-to-speech 1.1 200 40 3331912
        [DEBUG:10674218] InboxActor:  -> stopped
        [DEBUG:10674213] SnowboyWakeListener: paused -> listening
        [DEBUG:10674211] PicoTTSSentenceSpeaker: speaking -> ready
        [DEBUG:10671065] APlayAudioPlayer: ['aplay', '-q']
        [DEBUG:10671064] SnowboyWakeListener: listening -> paused
        [DEBUG:10671063] PicoTTSSentenceSpeaker: ready -> speaking
        [DEBUG:10670907] PicoTTSSentenceSpeaker: ['pico2wave', '-w', '/tmp/tmpzlb4_9pn.wav', '-l', 'de-DE', 'Es sind momentan 8 Grad Celsius draussen']
        

        Ich bin mir nicht sicher, ob die dann gleich nach der Sprachausgabe wieder gelöscht wird, jedenfalls sind via SSH keine wav-Dateien im /tmp-Ordner zu finden.

        Übrigens:
        @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

        Bei dem Skript mit "request" bekomme ich schon Fehlermeldungen zu Zeile 8. Offensichtlich wird xmlhttprequest trotz im JS-Adapter installiertem Zusatzmodul nicht erkannt.

        Falls Du damit die rote Wellenlinie unter request im JS-Editor meinst:
        Einfach ignorieren, ist ein Problem des JS-Editors, Script sollte trotzdem funktionieren.

        Gruß
        Jörg

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

        @joergeli

        Hallo Jörg,

        wirklich super! Damit ist die Aufgabenstellung, Sprachausgaben an den Rhasspy zu schicken, ja prinzipiell gelöst. Nun muss ich dein Skript mal in meines hineinbasteln, damit ich über Rhasspy die Temperatur in allen Räumen und auch draußen abfragen kann. Und dann muss der abgefragte Raum noch wieder zum Bestandteil der Antwort werden. Heute wird das wohl nichts mehr. Ich halte dich natürlich auf dem Laufenden...

        Ein anderes Thema: Hast du dir mal ODAS angeschaut? Damit kann man sich die Performance von Mikrofon Arrays anzeigen lassen und diese auch optimieren. Es gibt Config Files für Matrix und ReSpeaker.

        Schau mal hier:

        ODAS Frontend für Desktop und hier:
        ODAS Core für Rhasspy-Raspi

        Bin selbst noch dabei, es zum Laufen zu bringen.

        Gruß, Thomas

        Beste Grüße
        tobetobe

        1 Antwort Letzte Antwort
        0
        • joergeliJ joergeli

          @tobetobe
          Hallo Thomas,
          so, wieder Zeit zum Spielen gehabt:
          Rhasspy-Sprachausgabe läuft via pico-tts bei mir mit folgender JavaScript-Funktion:

          
          //#########################################
          // Rhasspy - Text to Speech
          //#########################################
          
          let http = require('http');
          const temp  = 'hm-rpc.2.CUX0100001.1.TEMPERATURE'      // Datenpunkt Aussen-Temperatur
          
          // Für Rhasspy-TTS:
          let options = {
              host: '192.168.192.24', //Rhasspy IP-Adresse
              port: 12101,            //Rhasspy Port
              path: "/api/text-to-speech",
              method: 'POST',
              headers: {
                  'User-Agent' : 'ioBroker',
                  'Content-Type': 'text/plain',
                 // 'Content-Length': data.length
              }
          };
          
          //______________________________________________________________________________
          
          function httpPost(data) {
              let req = http.request(options, function(res) {
              console.log("http Status: " + res.statusCode);
              // Header (Rückmeldung vom Webserver)
              console.log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 200 ? "warn" : "info"));
              });
          
              // Fehler abfangen
              req.on('error', function(e) { 
                  console.log('ERROR: ' + e.message,"warn");
              });
          
              // write data to request body
              console.log("Data to request body: " + data);
              (data ? req.write(data) : console.log("Daten: keine Daten vorhanden"));
              req.end();
          }
          
          //______________________________________________________________________________
          
          // Beispiel-Sprachausgabe auf Rhasspy bei Temperaturänderung
          on({id: temp, change: "any"},function(obj) {
              let aussentemp_wert = getState(temp).val;
              let data = 'Es sind momentan ' + aussentemp_wert + ' Grad Celsius draussen';
              //console.log("data: " + data);
              httpPost(data);
          });
          //______________________________________________________________________________
          
          

          Das funktioniert bei mir einwandfrei, zwar immer noch über Kopfhörer, da ich noch nicht dazu gekommen bin, den Mini-NF-Verstärker am Rhasspy anzuschließen.

          Mir ist dabei im Rhasspy-Log aufgefallen, daß anscheinend bei jeder Sprachausgabe eine xxxxxxxx.wav-Datei in den /tmp-Ordner geschrieben wird:

          [INFO:10688731] quart.serving: 192.168.192.29:38380 POST /api/text-to-speech 1.1 200 43 4624186
          [DEBUG:10688718] InboxActor:  -> stopped
          [DEBUG:10688713] SnowboyWakeListener: paused -> listening
          [DEBUG:10688711] PicoTTSSentenceSpeaker: speaking -> ready
          [DEBUG:10684307] APlayAudioPlayer: ['aplay', '-q']
          [DEBUG:10684305] SnowboyWakeListener: listening -> paused
          [DEBUG:10684305] PicoTTSSentenceSpeaker: ready -> speaking
          [DEBUG:10684112] PicoTTSSentenceSpeaker: ['pico2wave', '-w', '/tmp/tmpxk8vw7cj.wav', '-l', 'de-DE', 'Es sind momentan 23.5 Grad Celsius draussen']
          [INFO:10674234] quart.serving: 192.168.192.29:38296 POST /api/text-to-speech 1.1 200 40 3331912
          [DEBUG:10674218] InboxActor:  -> stopped
          [DEBUG:10674213] SnowboyWakeListener: paused -> listening
          [DEBUG:10674211] PicoTTSSentenceSpeaker: speaking -> ready
          [DEBUG:10671065] APlayAudioPlayer: ['aplay', '-q']
          [DEBUG:10671064] SnowboyWakeListener: listening -> paused
          [DEBUG:10671063] PicoTTSSentenceSpeaker: ready -> speaking
          [DEBUG:10670907] PicoTTSSentenceSpeaker: ['pico2wave', '-w', '/tmp/tmpzlb4_9pn.wav', '-l', 'de-DE', 'Es sind momentan 8 Grad Celsius draussen']
          

          Ich bin mir nicht sicher, ob die dann gleich nach der Sprachausgabe wieder gelöscht wird, jedenfalls sind via SSH keine wav-Dateien im /tmp-Ordner zu finden.

          Übrigens:
          @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

          Bei dem Skript mit "request" bekomme ich schon Fehlermeldungen zu Zeile 8. Offensichtlich wird xmlhttprequest trotz im JS-Adapter installiertem Zusatzmodul nicht erkannt.

          Falls Du damit die rote Wellenlinie unter request im JS-Editor meinst:
          Einfach ignorieren, ist ein Problem des JS-Editors, Script sollte trotzdem funktionieren.

          Gruß
          Jörg

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

          @joergeli said in Rhasspy Offline Sprachsteuerung:

          Rhasspy-Sprachausgabe läuft via pico-tts

          Hallo Jörg,

          Kompliment: Das war eine super Arbeit von dir. Ich habe dein Skript angepasst und in meines eingebaut. Dies sieht nun so aus:

          //Skript zur Abfrage von Temperaturen
          
          // Variablen für MQTT
          var intentResult = $('mqtt.0.rhasspy.intent.*Temperature');
          var intentArray = [];
          
          // Für Rhasspy-TTS:
          let http = require('http');
          let options = {
              host: '192.168.13.157', //Rhasspy IP-Adresse
              port: 12101,            //Rhasspy Port
              path: "/api/text-to-speech",
              method: 'POST',
              headers: {
                  'User-Agent' : 'ioBroker',
                  'Content-Type': 'text/plain',
                 // 'Content-Length': data.length
              }
          };
          
          //______________________________________________________________________________
          function httpPost(data) {
              let req = http.request(options, function(res) {
              console.log("http Status: " + res.statusCode);
              // Header (Rückmeldung vom Webserver)
              console.log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 200 ? "warn" : "info"));
              });
          
               // Fehler abfangen
                  req.on('error', function(e) { 
                  console.log('ERROR: ' + e.message,"warn");
              });
          
               // write data to request body
              console.log("Data to request body: " + data);
              (data ? req.write(data) : console.log("Daten: keine Daten vorhanden"));
              req.end();
          }
          
          
          // Abfrage des MQTT-Inhaltes bei Status-Änderung
          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 = getState(deviceID + state);
          
                  let data = 'Es sind momentan ' + value.val + ' Grad Celsius';
                  console.log("data: " + data);
                  log(value.val);
                  httpPost(data);
              }
          });
          

          Zusammen mit diesem Sentence:

          [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}
          

          und diesem Slot:

          "device_name_thermostat": [
                  "(schlafzimmer):hm-rpc.0.LEQ9876543.4",
                  "(bad | badezimmer):hm-rpc.0.OEQ0111111.2",
                  "(balkon | draussen):hm-rpc.0.OEQ2666666.1",
                  "(wohnzimmer | büro | esszimmer):hm-rpc.0.LEQ1777777.2",
                  "(gästezimmer | schrankzimmer| ankleidezimmer | umkleidezimmer):hm-rpc.0.LEQ1234567.4"
              ],
          

          kann ich mir nun die Temperatur von jedem Raum und von draußen ansagen lassen. Anfangs hatte ich den merkwürdigen Effekt, dass mir eine falsche IP mit Fehler zurückgemeldet wurde. Nach mehrfachem Ändern und Speichern war dieser dann jedoch unerklärlicherweise verschwunden.

          Also: Super - wieder ein Stück weiter. Vielen herzlichen Dank für deine Hilfe.

          Ich wünsche noch einen schönen Sonntag
          Thomas

          Beste Grüße
          tobetobe

          joergeliJ 1 Antwort Letzte Antwort
          0
          • tobetobeT tobetobe

            @joergeli said in Rhasspy Offline Sprachsteuerung:

            Rhasspy-Sprachausgabe läuft via pico-tts

            Hallo Jörg,

            Kompliment: Das war eine super Arbeit von dir. Ich habe dein Skript angepasst und in meines eingebaut. Dies sieht nun so aus:

            //Skript zur Abfrage von Temperaturen
            
            // Variablen für MQTT
            var intentResult = $('mqtt.0.rhasspy.intent.*Temperature');
            var intentArray = [];
            
            // Für Rhasspy-TTS:
            let http = require('http');
            let options = {
                host: '192.168.13.157', //Rhasspy IP-Adresse
                port: 12101,            //Rhasspy Port
                path: "/api/text-to-speech",
                method: 'POST',
                headers: {
                    'User-Agent' : 'ioBroker',
                    'Content-Type': 'text/plain',
                   // 'Content-Length': data.length
                }
            };
            
            //______________________________________________________________________________
            function httpPost(data) {
                let req = http.request(options, function(res) {
                console.log("http Status: " + res.statusCode);
                // Header (Rückmeldung vom Webserver)
                console.log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 200 ? "warn" : "info"));
                });
            
                 // Fehler abfangen
                    req.on('error', function(e) { 
                    console.log('ERROR: ' + e.message,"warn");
                });
            
                 // write data to request body
                console.log("Data to request body: " + data);
                (data ? req.write(data) : console.log("Daten: keine Daten vorhanden"));
                req.end();
            }
            
            
            // Abfrage des MQTT-Inhaltes bei Status-Änderung
            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 = getState(deviceID + state);
            
                    let data = 'Es sind momentan ' + value.val + ' Grad Celsius';
                    console.log("data: " + data);
                    log(value.val);
                    httpPost(data);
                }
            });
            

            Zusammen mit diesem Sentence:

            [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}
            

            und diesem Slot:

            "device_name_thermostat": [
                    "(schlafzimmer):hm-rpc.0.LEQ9876543.4",
                    "(bad | badezimmer):hm-rpc.0.OEQ0111111.2",
                    "(balkon | draussen):hm-rpc.0.OEQ2666666.1",
                    "(wohnzimmer | büro | esszimmer):hm-rpc.0.LEQ1777777.2",
                    "(gästezimmer | schrankzimmer| ankleidezimmer | umkleidezimmer):hm-rpc.0.LEQ1234567.4"
                ],
            

            kann ich mir nun die Temperatur von jedem Raum und von draußen ansagen lassen. Anfangs hatte ich den merkwürdigen Effekt, dass mir eine falsche IP mit Fehler zurückgemeldet wurde. Nach mehrfachem Ändern und Speichern war dieser dann jedoch unerklärlicherweise verschwunden.

            Also: Super - wieder ein Stück weiter. Vielen herzlichen Dank für deine Hilfe.

            Ich wünsche noch einen schönen Sonntag
            Thomas

            joergeliJ Offline
            joergeliJ Offline
            joergeli
            schrieb am zuletzt editiert von
            #98

            Hallo Thomas,

            @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

            Kompliment: Das war eine super Arbeit von dir

            Zu viel des Lobes, ist nicht allein auf meinem Mist gewachsen, ich habe mir nur die Code-Schnipsel hier aus dem Forum zusammengesucht. :kissing_closed_eyes:

            @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

            Ein anderes Thema: Hast du dir mal ODAS angeschaut? Damit kann man sich die Performance von Mikrofon Arrays anzeigen lassen und diese auch optimieren.

            Ich habe zwar ODAS hier ReSpeaker_4_Mic_Array_for_Raspberry_Pi im Abschnitt "Realtime Sound Source Localization and Tracking" (ziemlich weit unten auf der Seite) gesehen, mich damit aber nicht weiter beschäftigt.
            Dort ist auch eine Installationsanleitung aufgeführt. Evtl. kannst Du die gebrauchen, wobei ich nicht weiß, ob sie speziell für das Respeaker Mic-Array gilt.

            Gruß
            Jörg

            tobetobeT 1 Antwort Letzte Antwort
            0
            • joergeliJ joergeli

              Hallo Thomas,

              @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

              Kompliment: Das war eine super Arbeit von dir

              Zu viel des Lobes, ist nicht allein auf meinem Mist gewachsen, ich habe mir nur die Code-Schnipsel hier aus dem Forum zusammengesucht. :kissing_closed_eyes:

              @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

              Ein anderes Thema: Hast du dir mal ODAS angeschaut? Damit kann man sich die Performance von Mikrofon Arrays anzeigen lassen und diese auch optimieren.

              Ich habe zwar ODAS hier ReSpeaker_4_Mic_Array_for_Raspberry_Pi im Abschnitt "Realtime Sound Source Localization and Tracking" (ziemlich weit unten auf der Seite) gesehen, mich damit aber nicht weiter beschäftigt.
              Dort ist auch eine Installationsanleitung aufgeführt. Evtl. kannst Du die gebrauchen, wobei ich nicht weiß, ob sie speziell für das Respeaker Mic-Array gilt.

              Gruß
              Jörg

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

              @joergeli
              Hallo Jörg,
              nun habe ich auch dein Wakeword-Skript zum Laufen gebracht. PAW hat mir ja nicht genutzt, weil ich ja die Ansage am Rhasspy haben wollte. Mit deinem Skript zu Ansage über httPost geht dies nun. Statt deine Zeilen für PAW ist lediglich:

              function wakeword(){
                  httpPost(ansage);
                  }
              
              bzw.
              
              function befehl_empf(){ 
                  httpPost(empf_ok);
              }
              

              Beste Grüße
              tobetobe

              tobetobeT joergeliJ 2 Antworten Letzte Antwort
              0
              • tobetobeT tobetobe

                @joergeli
                Hallo Jörg,
                nun habe ich auch dein Wakeword-Skript zum Laufen gebracht. PAW hat mir ja nicht genutzt, weil ich ja die Ansage am Rhasspy haben wollte. Mit deinem Skript zu Ansage über httPost geht dies nun. Statt deine Zeilen für PAW ist lediglich:

                function wakeword(){
                    httpPost(ansage);
                    }
                
                bzw.
                
                function befehl_empf(){ 
                    httpPost(empf_ok);
                }
                
                tobetobeT Offline
                tobetobeT Offline
                tobetobe
                schrieb am zuletzt editiert von
                #100

                @joergeli
                erforderlich, wollte ich noch sagen.

                Ich bleibe dabei: Wirklich super. Übrigens: schreibe mal statt

                const ansage =  'Ja'
                const ansage =  'Ja?'
                

                Gestern Abend habe ich noch einen anderen Beitrag gepostet, der dich evtl auch interessieren könnte:
                Bring!-Adapter mit Rhasspy steuern

                Gruß, Thomas

                Beste Grüße
                tobetobe

                joergeliJ 1 Antwort Letzte Antwort
                0
                • tobetobeT tobetobe

                  @joergeli
                  Hallo Jörg,
                  nun habe ich auch dein Wakeword-Skript zum Laufen gebracht. PAW hat mir ja nicht genutzt, weil ich ja die Ansage am Rhasspy haben wollte. Mit deinem Skript zu Ansage über httPost geht dies nun. Statt deine Zeilen für PAW ist lediglich:

                  function wakeword(){
                      httpPost(ansage);
                      }
                  
                  bzw.
                  
                  function befehl_empf(){ 
                      httpPost(empf_ok);
                  }
                  
                  joergeliJ Offline
                  joergeliJ Offline
                  joergeli
                  schrieb am zuletzt editiert von
                  #101

                  @tobetobe
                  Hallo Thomas,
                  freut mich, daß jetzt alles funzt.
                  Ich hatte zwischenzeitlich die Sprachausgabe über meinen Mini-NF-Verstärker direkt am Rhasspy getestet: funktioniert ebenfalls.

                  Momentan kämpfe ich auf einem anderen Raspi mit dem Rhasspy Pre-Release 2.5 (Voltron), siehe:
                  Documentation Preview for 2.5

                  Installation hat soweit geklappt, allerdings gab es bis gestern noch ein Problem mit der Aktivierung eines externen MQTT-brokers. Ich habe darufhin im o.a. Link mein Problem geschildert, was dann auch prompt von synesthesiam gefixed wurde.

                  Ich habe gerade eben das neue Image mit docker pull rhasspy/rhasspy:2.5.0-pre geholt und mit

                  docker run -d -p 12101:12101 --restart unless-stopped -v "$HOME/.config/rhasspy/profiles:/profiles" --device /dev/snd:/dev/snd rhasspy/rhasspy:2.5.0-pre --user-profiles /profiles --profile de
                  

                  gestartet.
                  Verbindung zum MQTT-broker funkioniert jetzt, allerdings tut sich sonst nichts mehr (Wakeword, Text to Speech, etc.) was gestern noch funktioniert hat.
                  Naja, ist ja noch Pre-Release - ich werde heute noch ein wenig damit experimentieren.

                  Noch was:
                  Gestern hat das Pre-Release auch auf snowboy.umdl (dem universellen Wakeword) reagiert, was mir mit Rhasspy V2.4.18 nie gelungen ist.
                  Ich hoffe, mit der V2.5 damit auch endlich meine Probleme mit den false/positive Wakeword-Erkennungen lösen zu können.

                  Gruß
                  Jörg

                  tobetobeT 1 Antwort Letzte Antwort
                  0
                  • tobetobeT tobetobe

                    @joergeli
                    erforderlich, wollte ich noch sagen.

                    Ich bleibe dabei: Wirklich super. Übrigens: schreibe mal statt

                    const ansage =  'Ja'
                    const ansage =  'Ja?'
                    

                    Gestern Abend habe ich noch einen anderen Beitrag gepostet, der dich evtl auch interessieren könnte:
                    Bring!-Adapter mit Rhasspy steuern

                    Gruß, Thomas

                    joergeliJ Offline
                    joergeliJ Offline
                    joergeli
                    schrieb am zuletzt editiert von joergeli
                    #102

                    @tobetobe
                    Ja/Ja? --> Betonung ist anders.
                    Wobei ich dazu sagen muß, daß das wohl abhängig von der verwendeten Sprach-Engine ist.
                    Je nach dem, ob ich Texte via PAW auf meinem Tablet mit Google-Sprach-Engine, oder via PAW auf Samsung Smartphone mit Samsung-Sprach-Engine, oder aber über picoTTS direkt am Rhasspy ausgebe, die Aussprache erfolgt jeweils unterschiedlich.

                    @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                    Gestern Abend habe ich noch einen anderen Beitrag gepostet, der dich evtl auch interessieren könnte:
                    Bring!-Adapter mit Rhasspy steuern

                    Habe ich gesehen, BRING! lasse ich aber lieber, nicht daß Frau noch auf die Idee kommt, "bring" wörtlich zu nehmen und mich zum Einkaufen verdonnert :laughing:
                    Nee im Ernst, im Prinzip kann man jetzt mit Rhasspy und JS sehr viel realisieren.

                    Gruß
                    Jörg

                    1 Antwort Letzte Antwort
                    0
                    • joergeliJ joergeli

                      @tobetobe
                      Hallo Thomas,
                      freut mich, daß jetzt alles funzt.
                      Ich hatte zwischenzeitlich die Sprachausgabe über meinen Mini-NF-Verstärker direkt am Rhasspy getestet: funktioniert ebenfalls.

                      Momentan kämpfe ich auf einem anderen Raspi mit dem Rhasspy Pre-Release 2.5 (Voltron), siehe:
                      Documentation Preview for 2.5

                      Installation hat soweit geklappt, allerdings gab es bis gestern noch ein Problem mit der Aktivierung eines externen MQTT-brokers. Ich habe darufhin im o.a. Link mein Problem geschildert, was dann auch prompt von synesthesiam gefixed wurde.

                      Ich habe gerade eben das neue Image mit docker pull rhasspy/rhasspy:2.5.0-pre geholt und mit

                      docker run -d -p 12101:12101 --restart unless-stopped -v "$HOME/.config/rhasspy/profiles:/profiles" --device /dev/snd:/dev/snd rhasspy/rhasspy:2.5.0-pre --user-profiles /profiles --profile de
                      

                      gestartet.
                      Verbindung zum MQTT-broker funkioniert jetzt, allerdings tut sich sonst nichts mehr (Wakeword, Text to Speech, etc.) was gestern noch funktioniert hat.
                      Naja, ist ja noch Pre-Release - ich werde heute noch ein wenig damit experimentieren.

                      Noch was:
                      Gestern hat das Pre-Release auch auf snowboy.umdl (dem universellen Wakeword) reagiert, was mir mit Rhasspy V2.4.18 nie gelungen ist.
                      Ich hoffe, mit der V2.5 damit auch endlich meine Probleme mit den false/positive Wakeword-Erkennungen lösen zu können.

                      Gruß
                      Jörg

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

                      @joergeli
                      Hallo Jörg,
                      schön, dass es bei dir auch weitergeht. Deinen Beitrag zur 2.5 hatte ich bereits gestern mit Interesse verfolgt und mir auch gedacht, dass du dahinter steckst (Vorname und Kompass). Die 2.5 zu testen, reizt mich nun auch. Es müsste ja möglich sein, einen zweiten Docker parallel zur 2.4.19 (!!!) zu installieren und dann jeweils die gewünschte Instanz zu starten. Das schaue ich mir an.

                      Dass bei dir auf 2.4.18 das Standard Wakeword nicht lief, kann ich gar nicht nachvollziehen, da ich dieses ja ebenfalls verwende. Jedenfalls bin ich mit dem Ergebnissen von Snowboy sehr zufrieden und habe den Wunsch nach einem eigenen WW zu Gunsten der guten Funktionalität nach hinten gestellt.

                      Alles andere kommt mit der Zeit...

                      Gruß, Thomas

                      Beste Grüße
                      tobetobe

                      joergeliJ 1 Antwort Letzte Antwort
                      0
                      • tobetobeT tobetobe

                        @joergeli
                        Hallo Jörg,
                        schön, dass es bei dir auch weitergeht. Deinen Beitrag zur 2.5 hatte ich bereits gestern mit Interesse verfolgt und mir auch gedacht, dass du dahinter steckst (Vorname und Kompass). Die 2.5 zu testen, reizt mich nun auch. Es müsste ja möglich sein, einen zweiten Docker parallel zur 2.4.19 (!!!) zu installieren und dann jeweils die gewünschte Instanz zu starten. Das schaue ich mir an.

                        Dass bei dir auf 2.4.18 das Standard Wakeword nicht lief, kann ich gar nicht nachvollziehen, da ich dieses ja ebenfalls verwende. Jedenfalls bin ich mit dem Ergebnissen von Snowboy sehr zufrieden und habe den Wunsch nach einem eigenen WW zu Gunsten der guten Funktionalität nach hinten gestellt.

                        Alles andere kommt mit der Zeit...

                        Gruß, Thomas

                        joergeliJ Offline
                        joergeliJ Offline
                        joergeli
                        schrieb am zuletzt editiert von
                        #104

                        Hallo Thomas,
                        @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                        Die 2.5 zu testen, reizt mich nun auch

                        Meine Empfehlung: Warte besser damit, bis die finale V 2.5 released ist.

                        Grund:
                        Ich habe heute den "Voltron"-Raspi kpl. neu aufgesetzt.
                        Anschließend das gestern gefixte 2.5 Pre-Release installiert.
                        Verbindung zum externen (ioBroker-) MQTT-broker funktioniert nun, aber dann scheint Rhasspy "tot" zu sein.
                        Stelle ich Rhasspy wieder auf "internal MQTT-broker" zurück, funktionieren sowohl Wake-Up-Button, als auch Wakeword "snowboy" wieder. Siehe dazu auch meinen Kommentar im Rhasspy-Forum.

                        Gruß
                        Jörg

                        tobetobeT 1 Antwort Letzte Antwort
                        0
                        • joergeliJ joergeli

                          Hallo Thomas,
                          @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                          Die 2.5 zu testen, reizt mich nun auch

                          Meine Empfehlung: Warte besser damit, bis die finale V 2.5 released ist.

                          Grund:
                          Ich habe heute den "Voltron"-Raspi kpl. neu aufgesetzt.
                          Anschließend das gestern gefixte 2.5 Pre-Release installiert.
                          Verbindung zum externen (ioBroker-) MQTT-broker funktioniert nun, aber dann scheint Rhasspy "tot" zu sein.
                          Stelle ich Rhasspy wieder auf "internal MQTT-broker" zurück, funktionieren sowohl Wake-Up-Button, als auch Wakeword "snowboy" wieder. Siehe dazu auch meinen Kommentar im Rhasspy-Forum.

                          Gruß
                          Jörg

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

                          @joergeli said in Rhasspy Offline Sprachsteuerung:

                          Meine Empfehlung: Warte besser damit, bis die finale V 2.5 released ist.

                          Hallo Jörg,
                          danke für den Tipp, den ich beachten werde. Ich habe den kompletten Nachmittag damit verbracht, Rhasspy überhaupt wieder zum Laufen zu bringen, nachdem ein Problem auftrat im Zusammenhang mit meiner Steuerung des BRING!-Adapters. Manchmal treten bei Rhasspy nicht erklärbare Effekte auf. Du hattest davon ja auch schon berichtet. Heute ging bei mir garnichts mehr! Zum Glück hatte ich ein mehrere Wochen altes Backup vom Verzeichnis bzw. vom Ordner

                          ~/.config/rhasspy/profiles/de/
                          

                          und offline Kopien von Slots und Sentences. Dadurch war ich - nachdem das Problem endlich eingekreist war - in relativ kurzer Zeit wieder eine lauffähige Version herstellen.

                          Ich habe mir angewöhnt, Backups immer dann anzulegen, wenn ich entweder die Konfiguration änder, oder wenn ich die Sentences und die Slots ergänze. Falls dann das Trainieren fehlschlägt, kann ich leicht wieder zum vorherigen Stand zurückkehren. Das Backup von .../de/ kann direkt daneben abgelegt werden.

                          Kurzum: Nach der Aktion habe ich keinen Bedarf mehr, meine Installation mit nicht unbedingt notwendigen Spielereien zu riskieren.

                          Also nochmals: Danke für den Tipp. Und von mir der Tipp: Leg dir besser auch ein backup an, wenn du es nicht eh schon machst. In dem Punkte ist man ja vom ioBroker richtig verwöhnt...

                          Wünsche noch einen schönen Abend
                          Thomas

                          Beste Grüße
                          tobetobe

                          joergeliJ 1 Antwort Letzte Antwort
                          0
                          • tobetobeT tobetobe

                            @joergeli said in Rhasspy Offline Sprachsteuerung:

                            Meine Empfehlung: Warte besser damit, bis die finale V 2.5 released ist.

                            Hallo Jörg,
                            danke für den Tipp, den ich beachten werde. Ich habe den kompletten Nachmittag damit verbracht, Rhasspy überhaupt wieder zum Laufen zu bringen, nachdem ein Problem auftrat im Zusammenhang mit meiner Steuerung des BRING!-Adapters. Manchmal treten bei Rhasspy nicht erklärbare Effekte auf. Du hattest davon ja auch schon berichtet. Heute ging bei mir garnichts mehr! Zum Glück hatte ich ein mehrere Wochen altes Backup vom Verzeichnis bzw. vom Ordner

                            ~/.config/rhasspy/profiles/de/
                            

                            und offline Kopien von Slots und Sentences. Dadurch war ich - nachdem das Problem endlich eingekreist war - in relativ kurzer Zeit wieder eine lauffähige Version herstellen.

                            Ich habe mir angewöhnt, Backups immer dann anzulegen, wenn ich entweder die Konfiguration änder, oder wenn ich die Sentences und die Slots ergänze. Falls dann das Trainieren fehlschlägt, kann ich leicht wieder zum vorherigen Stand zurückkehren. Das Backup von .../de/ kann direkt daneben abgelegt werden.

                            Kurzum: Nach der Aktion habe ich keinen Bedarf mehr, meine Installation mit nicht unbedingt notwendigen Spielereien zu riskieren.

                            Also nochmals: Danke für den Tipp. Und von mir der Tipp: Leg dir besser auch ein backup an, wenn du es nicht eh schon machst. In dem Punkte ist man ja vom ioBroker richtig verwöhnt...

                            Wünsche noch einen schönen Abend
                            Thomas

                            joergeliJ Offline
                            joergeliJ Offline
                            joergeli
                            schrieb am zuletzt editiert von joergeli
                            #106

                            Hallo Thomas,

                            was glaubst Du wohl, warum ich das Pre-Release auf einem zweiten Raspi teste :innocent:

                            @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                            Ich habe mir angewöhnt, Backups immer dann anzulegen, wenn ich entweder die Konfiguration änder

                            Wohl wahr, denn wie heißt es so schön: "Kein Backup -> kein Mitleid" :smiling_imp:

                            Ich habe dazu auf einem WIn7-PC ein Verzeichnis freigegeben, welches ich dann automatisch auf dem Raspi einhänge (mounte).
                            Dazu auf dem Raspi folgende Zeile in der Datei /etc/fstab anhängen:

                            //192.168.192.102/BURNI /home/pi/BURNI cifs username=xxxxxx,password=,uid=pi,gid=pi,x-systemd.automount 0 0
                            

                            //192.168.192.102/BURNI ist bei mir der freigegebene Ordner auf dem WIN7-Rechner.
                            /home/pi/BURNI ist der Ordner auf dem Raspi, in den der WIN7-Ordner gemounted wird.
                            Username und ggf. Passwort der Freigabe auf WIN7 müssen entspr. eingetragen werden. Ich habe bei mir kein Passwort auf der Freigabe.

                            Wenn das Laufwerk gemounted ist, braucht es nur 2 manuelle Befehle, um z.B. den kpl. Inhalt von .config/rhasspy/profiles/de
                            auf das Laufwerk zu kopieren:

                            cd ~/.config/rhasspy/profiles/de
                            sudo cp -r * ~/burni/Rhasspy-Backup/rhasspy/profiles/de
                            

                            OK, könnte man auch in ein Shell-Script packen, dann wäre es nur 1 Befehl.

                            Noch ein Beispiel für den Ordner /home/pi/4mics_hat

                            cd ~/4mic*
                            sudo cp -r * ~/burni/Rhasspy-Backup/home/pi/4mics_hat
                            

                            Gruß
                            Jörg

                            1 Antwort Letzte Antwort
                            0
                            • M Offline
                              M Offline
                              manu96
                              schrieb am zuletzt editiert von
                              #107

                              Hallo zusammen,

                              ich klinke mich hier mal ein. Habe ebenfalls bereits ein Rhasspy Setup am laufen. Bei mir ist es allerdings so das ich ein "Server" habe der die Anfragen bearbeitet und es mehrere "Clients" geben soll. Aktuell erst einmal testweise nur mit einem Client. Wollte mir jetzt das ReSpeaker 4-Mic Array bestellen und bin am überlegen wie ich die Sprachausgabe am Client direkt umsetze.

                              Geplant ist die Clients über Raspberry Pi Zero W laufen zu lassen um Platz zu sparen. Wollte mir eine ähnliches Layout wie die Echo Dots aufbauen. Daher nun meine Frage habt Ihr bereits ein Lautsprecher den ich ggf. mit dem ReSpeaker Modul kuppeln könnte gekauft oder in Aussicht?

                              Des weiteren muss ich mich noch mit der Sprachausgabe beschäftigen. @joergeli vielen Dank erstmal für dein Skript mit der Sprachausgabe. Da ich ja nun mehrere Clients haben könnte stellt sich mir noch die Frage wie ich erkenne welcher Client die Anfrage gestellt hat mit MQTT. Habt Ihr da eine Idee?

                              Trotzdem danke erstmal an alle die hier mitwirken für die vielen Scripte und Infos rundum Sprachsteuerung. Bin schon auf das Ergebnis des fertigen Projektes gespannt.

                              Gruß,
                              Manuel

                              joergeliJ tobetobeT 2 Antworten Letzte Antwort
                              0
                              • M manu96

                                Hallo zusammen,

                                ich klinke mich hier mal ein. Habe ebenfalls bereits ein Rhasspy Setup am laufen. Bei mir ist es allerdings so das ich ein "Server" habe der die Anfragen bearbeitet und es mehrere "Clients" geben soll. Aktuell erst einmal testweise nur mit einem Client. Wollte mir jetzt das ReSpeaker 4-Mic Array bestellen und bin am überlegen wie ich die Sprachausgabe am Client direkt umsetze.

                                Geplant ist die Clients über Raspberry Pi Zero W laufen zu lassen um Platz zu sparen. Wollte mir eine ähnliches Layout wie die Echo Dots aufbauen. Daher nun meine Frage habt Ihr bereits ein Lautsprecher den ich ggf. mit dem ReSpeaker Modul kuppeln könnte gekauft oder in Aussicht?

                                Des weiteren muss ich mich noch mit der Sprachausgabe beschäftigen. @joergeli vielen Dank erstmal für dein Skript mit der Sprachausgabe. Da ich ja nun mehrere Clients haben könnte stellt sich mir noch die Frage wie ich erkenne welcher Client die Anfrage gestellt hat mit MQTT. Habt Ihr da eine Idee?

                                Trotzdem danke erstmal an alle die hier mitwirken für die vielen Scripte und Infos rundum Sprachsteuerung. Bin schon auf das Ergebnis des fertigen Projektes gespannt.

                                Gruß,
                                Manuel

                                joergeliJ Offline
                                joergeliJ Offline
                                joergeli
                                schrieb am zuletzt editiert von joergeli
                                #108

                                @manu96 sagte in Rhasspy Offline Sprachsteuerung:

                                Da ich ja nun mehrere Clients haben könnte stellt sich mir noch die Frage wie ich erkenne welcher Client die Anfrage gestellt hat mit MQTT. Habt Ihr da eine Idee?

                                Hmmm, ich habe zwar keine Clients, aber ich würde da auf die "siteId": "xxxxx" tippen, die man ja individuell im GUI setzen kann unter Settings -> MQTT.
                                Ansonsten such mal in Rhasspy Community Forum

                                @manu96 sagte in Rhasspy Offline Sprachsteuerung:

                                Daher nun meine Frage habt Ihr bereits ein Lautsprecher den ich ggf. mit dem ReSpeaker Modul kuppeln könnte gekauft oder in Aussicht?

                                Ich habe mal probeweise einen Mini NF-Verstärker an den Kopfhörerausgang des Raspi angeschlossen und daran einen kleinen 8 Ω-Lautsprecher. Ist zwar recht leise, aber es geht leidlich . Der Verstärker braucht aber 5V als Spannungsversorgung, welche ich mit einem externen Netzteil zugeführt habe. Sollte aber auch über den 5V-Pin am Raspi funktionieren.
                                @tobetobe hat weiter oben in diesem Thread auch seine Lautsprecher vorgestellt.

                                Gruß
                                Jörg

                                1 Antwort Letzte Antwort
                                0
                                • M manu96

                                  Hallo zusammen,

                                  ich klinke mich hier mal ein. Habe ebenfalls bereits ein Rhasspy Setup am laufen. Bei mir ist es allerdings so das ich ein "Server" habe der die Anfragen bearbeitet und es mehrere "Clients" geben soll. Aktuell erst einmal testweise nur mit einem Client. Wollte mir jetzt das ReSpeaker 4-Mic Array bestellen und bin am überlegen wie ich die Sprachausgabe am Client direkt umsetze.

                                  Geplant ist die Clients über Raspberry Pi Zero W laufen zu lassen um Platz zu sparen. Wollte mir eine ähnliches Layout wie die Echo Dots aufbauen. Daher nun meine Frage habt Ihr bereits ein Lautsprecher den ich ggf. mit dem ReSpeaker Modul kuppeln könnte gekauft oder in Aussicht?

                                  Des weiteren muss ich mich noch mit der Sprachausgabe beschäftigen. @joergeli vielen Dank erstmal für dein Skript mit der Sprachausgabe. Da ich ja nun mehrere Clients haben könnte stellt sich mir noch die Frage wie ich erkenne welcher Client die Anfrage gestellt hat mit MQTT. Habt Ihr da eine Idee?

                                  Trotzdem danke erstmal an alle die hier mitwirken für die vielen Scripte und Infos rundum Sprachsteuerung. Bin schon auf das Ergebnis des fertigen Projektes gespannt.

                                  Gruß,
                                  Manuel

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

                                  @manu96
                                  Guten Morgen und willkommen in unserer kleinen, aber feinen Rhasspy-Runde,

                                  @manu96 said in Rhasspy Offline Sprachsteuerung:

                                  Bei mir ist es allerdings so das ich ein "Server" habe der die Anfragen bearbeitet und es mehrere "Clients" geben soll.

                                  Auch ich habe einen Rhasspy Server und als Satelliten einen Raspberry Pi4 am Laufen und bin mit dieser Lösung sehr zufrieden. Mit der Frage, was nun genau zu tun ist, um mehrere Clients/Satelliten auseinanderzuhalten, habe ich mich noch nicht beschäftigt. Es gibt genügend andere Baustellen. Dem Thema werde ich mich zuwenden, wenn ich die gewünschten Funtionen prinzipiell und zuverlässig implementiert habe.

                                  @manu96 said in Rhasspy Offline Sprachsteuerung:

                                  Wollte mir eine ähnliches Layout wie die Echo Dots aufbauen.

                                  Wenn du auf diese geringe Größe herunterkommen möchtest, wäre es eine Überlegung, nicht ReSpeaker 4-Mic Array mit Raspi Zero, sondern ReSpeker Core in Erwägung zu ziehen, der bereits einen Linux Kern enthält.

                                  @manu96 said in Rhasspy Offline Sprachsteuerung:

                                  habt Ihr bereits ein Lautsprecher

                                  Also auf die von mir verwendeten Lautsprecher hatte Jörg @joergeli ja bereits verwiesen. In anderen Foren (weiß nicht mehr, ob Matrix oder Rhasspy) bin ich noch auf diese gestoßen:

                                  Kleine Lautsprecher findest du hier

                                  Sie wurden von den Usern als sehr geeignet bewertet und würden auch zu deiner Größenvorstellung passen.

                                  Auch das Thema Lautsprecher führt somit wieder zu einer sehr zentralen Überlegung bei der Auswahl des richtigen Mikrofon Arrays: Wenn du es aus Platzgründen vermeiden möchtest, noch einen kleinen NF-Verstärker im Gehäuse mit aufnehmen zu müssen, solltest du dir ein Mikrofon Array aussuchen, welches bereits einen NF-Verstärker beinhaltet. Wie dies bei ReSpeaker aussieht, müsstest du dir selbst anschauen. Da kenne ich mich nicht so aus, weil ich Matrix Voice einsetze, welches einen integrierten Verstärker besitzt.

                                  Wie ich schon sagte: Bevor der zweite Client kommt, gibt es erst einmal genug zu tun...

                                  Viel Spaß und Erfolg dabei

                                  Grüße
                                  Thomas

                                  Beste Grüße
                                  tobetobe

                                  joergeliJ 1 Antwort Letzte Antwort
                                  0
                                  • tobetobeT tobetobe

                                    @manu96
                                    Guten Morgen und willkommen in unserer kleinen, aber feinen Rhasspy-Runde,

                                    @manu96 said in Rhasspy Offline Sprachsteuerung:

                                    Bei mir ist es allerdings so das ich ein "Server" habe der die Anfragen bearbeitet und es mehrere "Clients" geben soll.

                                    Auch ich habe einen Rhasspy Server und als Satelliten einen Raspberry Pi4 am Laufen und bin mit dieser Lösung sehr zufrieden. Mit der Frage, was nun genau zu tun ist, um mehrere Clients/Satelliten auseinanderzuhalten, habe ich mich noch nicht beschäftigt. Es gibt genügend andere Baustellen. Dem Thema werde ich mich zuwenden, wenn ich die gewünschten Funtionen prinzipiell und zuverlässig implementiert habe.

                                    @manu96 said in Rhasspy Offline Sprachsteuerung:

                                    Wollte mir eine ähnliches Layout wie die Echo Dots aufbauen.

                                    Wenn du auf diese geringe Größe herunterkommen möchtest, wäre es eine Überlegung, nicht ReSpeaker 4-Mic Array mit Raspi Zero, sondern ReSpeker Core in Erwägung zu ziehen, der bereits einen Linux Kern enthält.

                                    @manu96 said in Rhasspy Offline Sprachsteuerung:

                                    habt Ihr bereits ein Lautsprecher

                                    Also auf die von mir verwendeten Lautsprecher hatte Jörg @joergeli ja bereits verwiesen. In anderen Foren (weiß nicht mehr, ob Matrix oder Rhasspy) bin ich noch auf diese gestoßen:

                                    Kleine Lautsprecher findest du hier

                                    Sie wurden von den Usern als sehr geeignet bewertet und würden auch zu deiner Größenvorstellung passen.

                                    Auch das Thema Lautsprecher führt somit wieder zu einer sehr zentralen Überlegung bei der Auswahl des richtigen Mikrofon Arrays: Wenn du es aus Platzgründen vermeiden möchtest, noch einen kleinen NF-Verstärker im Gehäuse mit aufnehmen zu müssen, solltest du dir ein Mikrofon Array aussuchen, welches bereits einen NF-Verstärker beinhaltet. Wie dies bei ReSpeaker aussieht, müsstest du dir selbst anschauen. Da kenne ich mich nicht so aus, weil ich Matrix Voice einsetze, welches einen integrierten Verstärker besitzt.

                                    Wie ich schon sagte: Bevor der zweite Client kommt, gibt es erst einmal genug zu tun...

                                    Viel Spaß und Erfolg dabei

                                    Grüße
                                    Thomas

                                    joergeliJ Offline
                                    joergeliJ Offline
                                    joergeli
                                    schrieb am zuletzt editiert von
                                    #110

                                    Hallo Thomas,

                                    @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                                    Also auf die von mir verwendeten Lautsprecher hatte Jörg @joergeli ja bereits verwiesen.

                                    Wie verhält es sich mit der Lautstärke von Deinen Lautsprechern in Verbindung mit dem Matrix Voice?
                                    Laut genug ?

                                    Stand der Dinge bei mir:
                                    Ich habe snowboy.umdl jetzt doch unter Rhasspy V 2.4.19 zum Laufen gebracht, es lag einfach an der Sensitivity-Einstellung. Ich bin bisher immer von einem Wert von 0,5 bzw. weniger ausgegangen.
                                    Bei mir braucht es aber mindestens einen Wert von 0.85, um auf snowboy zu reagieren.
                                    Eine Veränderung des Micro-Verstärkungsfaktors (gain) bringt so gut wie nichts.
                                    False/Positive Erkennung bin ich noch am Testen.
                                    Gefühlt funktioniert das aber schon besser als mit meinem "Lieselotte"-Wakeword.
                                    Im Rhasspy-Forum kommen übrigens jetzt auch die Probleme mit den Fehlerkennungen des Wakewords ( nicht nur mit Snowboy) hoch.

                                    Rhasspy Pre-Release 2.5.0:
                                    Mein Problem damit, siehe hier: Documentation Preview for 2.5

                                    Ich, bzw. Rhasspy habe/hat immer noch Probleme mit dem ioBroker MQTT-port 1891.
                                    Nach dem fix von @synesthesiam wird jetzt zwar eine Verbindung aufgebaut und es werden auch einige Hermes-Topics angelegt, aber im ioBroker-Log sehe ich während des Verbindungsaufbaus div. Connects/Disconnects zum Broker.
                                    Das passiert nicht beim Verbindungsaufbau von Rhasspy V 2.4.19.

                                    In der GUI von Rhasspy 2.5.0 tut sich anschließend nichts mehr.
                                    Auf Wakeword wird nicht mehr reagiert und Wake-Button läuft nach einiger Zeit (lt. Rhasspy-Log) in timeout.

                                    Es hängt IMHO definitiv mit dem Port 1891 zusammen, denn auf meinem ioBroker-Raspi läuft parallel noch ein Mosquitto MQTT-Broker auf dem Standard-Port 1883 und wenn ich den Mosquitto als externen Broker in Rhasspy 2.5.0 eintrage, funktioniert Rhasspy.
                                    Nutzt mir aber nichts, da ich den Mosquitto für andere Topics brauche, die von div. Wemos D1 Mini und Nodemcu's angesprochen werden und ich keinen Bock habe, die neu zu flashen (sind teilweise in Schalterdosen oder in der Wandverkleidung verbaut und OTA = Over the Air flashen, gab es seinerzeit noch nicht.

                                    @synesthesiam meint zwar, das Problem würde sich bei den nächsten Releases auf magische Weise von selbst erledigen, das glaube ich aber nicht so recht.
                                    Ich habe jetzt im Forum nochmals darauf hingewiesen, daß es mit Rhasspy V2.4.19 und MQTT Port 1891 funktioniert.
                                    Mal sehen, ob sich da noch was tut.

                                    Somit kann ich leider momentan die Hermes-Topics unter ioBroker noch nicht testen (u.a. HLC / Hermes LED Control).

                                    Bis demnächst
                                    Jörg

                                    tobetobeT 1 Antwort Letzte Antwort
                                    0
                                    • joergeliJ joergeli

                                      Hallo Thomas,

                                      @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                                      Also auf die von mir verwendeten Lautsprecher hatte Jörg @joergeli ja bereits verwiesen.

                                      Wie verhält es sich mit der Lautstärke von Deinen Lautsprechern in Verbindung mit dem Matrix Voice?
                                      Laut genug ?

                                      Stand der Dinge bei mir:
                                      Ich habe snowboy.umdl jetzt doch unter Rhasspy V 2.4.19 zum Laufen gebracht, es lag einfach an der Sensitivity-Einstellung. Ich bin bisher immer von einem Wert von 0,5 bzw. weniger ausgegangen.
                                      Bei mir braucht es aber mindestens einen Wert von 0.85, um auf snowboy zu reagieren.
                                      Eine Veränderung des Micro-Verstärkungsfaktors (gain) bringt so gut wie nichts.
                                      False/Positive Erkennung bin ich noch am Testen.
                                      Gefühlt funktioniert das aber schon besser als mit meinem "Lieselotte"-Wakeword.
                                      Im Rhasspy-Forum kommen übrigens jetzt auch die Probleme mit den Fehlerkennungen des Wakewords ( nicht nur mit Snowboy) hoch.

                                      Rhasspy Pre-Release 2.5.0:
                                      Mein Problem damit, siehe hier: Documentation Preview for 2.5

                                      Ich, bzw. Rhasspy habe/hat immer noch Probleme mit dem ioBroker MQTT-port 1891.
                                      Nach dem fix von @synesthesiam wird jetzt zwar eine Verbindung aufgebaut und es werden auch einige Hermes-Topics angelegt, aber im ioBroker-Log sehe ich während des Verbindungsaufbaus div. Connects/Disconnects zum Broker.
                                      Das passiert nicht beim Verbindungsaufbau von Rhasspy V 2.4.19.

                                      In der GUI von Rhasspy 2.5.0 tut sich anschließend nichts mehr.
                                      Auf Wakeword wird nicht mehr reagiert und Wake-Button läuft nach einiger Zeit (lt. Rhasspy-Log) in timeout.

                                      Es hängt IMHO definitiv mit dem Port 1891 zusammen, denn auf meinem ioBroker-Raspi läuft parallel noch ein Mosquitto MQTT-Broker auf dem Standard-Port 1883 und wenn ich den Mosquitto als externen Broker in Rhasspy 2.5.0 eintrage, funktioniert Rhasspy.
                                      Nutzt mir aber nichts, da ich den Mosquitto für andere Topics brauche, die von div. Wemos D1 Mini und Nodemcu's angesprochen werden und ich keinen Bock habe, die neu zu flashen (sind teilweise in Schalterdosen oder in der Wandverkleidung verbaut und OTA = Over the Air flashen, gab es seinerzeit noch nicht.

                                      @synesthesiam meint zwar, das Problem würde sich bei den nächsten Releases auf magische Weise von selbst erledigen, das glaube ich aber nicht so recht.
                                      Ich habe jetzt im Forum nochmals darauf hingewiesen, daß es mit Rhasspy V2.4.19 und MQTT Port 1891 funktioniert.
                                      Mal sehen, ob sich da noch was tut.

                                      Somit kann ich leider momentan die Hermes-Topics unter ioBroker noch nicht testen (u.a. HLC / Hermes LED Control).

                                      Bis demnächst
                                      Jörg

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

                                      Hallo Jörg,

                                      @joergeli said in Rhasspy Offline Sprachsteuerung:

                                      Wie verhält es sich mit der Lautstärke von Deinen Lautsprechern in Verbindung mit dem Matrix Voice?
                                      Laut genug ?

                                      Du fragst zum richtigen Zeitpunkt. Ich hatte mehrfach über das Rhasspy-Setup den Matrix-Lautsprecherausgang aktiviert - immer jedoch ohne Erfolg. Dann ads übliche: In Foren suchen, testen und probieren. Zu guter Letzt bin ich auf eine Quelle gestoßen, in der angeregt wurde, Profile.JSON direkt zu editieren. Damit ging es auf einmal.

                                      Somit kann ich dir sagen: Ja, die Lautstärke ist groß genug. Nicht für Wiedergabe von Musik in HiFi-Qualität, aber für die Wiedergabe der Signaltöne, die man wirklich deutlich hören kann.

                                      Wie es sich mit Sprachausgaben verhält, kann ich dir wiederum noch nicht sagen. Dein Skript funktioniert wunderbar im Zusammenspiel mit dem Raspi Jack. Wenn ich dann jedoch auf Matrix umschalte, kommen nur die im Profil hinterlegten Signaltöne. Offenbar ist das Routing der akustischen Signale unterschiedlich - je nach Lautsprecherausgang. Ob dieses ein Matrix- oder ein Rhasspy-Problem ist, kann ich noch nicht sagen. Ich habe das Problem mal im Matrix-Forum gepostet. Dies auch im Rhasspy-Forum zu tun, überlege ich mir noch, nachdem ich eine Antwort vom Matrix-Team erhalten habe.

                                      Ansonsten ist mein Stand der Dinge, dass ich die wesentlichen Funktionen implementiert habe. Aus meiner Sicht sind noch offen: Abfrage/Ansage von Zeit, Datum, Wochentag (einfache Geschichte) sowie Das Abspielen von Radioprogrammen oder mp3s von meiner Festplatte auf meiner Soundanlage (das ist noch eine größere Baustelle).

                                      Woran ich auch noch arbeite, ist neben dem akustischen Quittungen (Ja?, OK und Ansage des Ergebnisses) noch ein optisches Feedback durch Ansteuern der LEDs zu ermöglichen. Hier stehe ich momentan auch noch ganz am Anfang. Immerhin springen die LEDs schon mal beim Erkennen des Wakewords an

                                      Das alles ohne Hermes, sondern nur durch Auswerten der MQTT-Intents.

                                      Und dann brauche ich natürlich irgendwann noch ein passendes Gehäuse. Auch dies wird eine größere Baustelle...

                                      Da bei mir momentan alles so schön stabil läuft, warte ich noch auf die erste offizielle 2.5.

                                      Ich hoffe, dass man deine Port-Problematik bald in den Griff bekommt. Ich glaube aber, dass Synthesiam und sein Team das schon schaffen werden. Bislang haben die doch in sehr kurzer Zeit einen wirklich tollen Job gemacht. Insofern bin ich von der weiteren positiven Entwicklung vollkommen überzeugt.

                                      Ich wünsche noch einen schönen Sonntag Abend
                                      Thomas

                                      Beste Grüße
                                      tobetobe

                                      joergeliJ 1 Antwort Letzte Antwort
                                      0
                                      • tobetobeT tobetobe

                                        Hallo Jörg,

                                        @joergeli said in Rhasspy Offline Sprachsteuerung:

                                        Wie verhält es sich mit der Lautstärke von Deinen Lautsprechern in Verbindung mit dem Matrix Voice?
                                        Laut genug ?

                                        Du fragst zum richtigen Zeitpunkt. Ich hatte mehrfach über das Rhasspy-Setup den Matrix-Lautsprecherausgang aktiviert - immer jedoch ohne Erfolg. Dann ads übliche: In Foren suchen, testen und probieren. Zu guter Letzt bin ich auf eine Quelle gestoßen, in der angeregt wurde, Profile.JSON direkt zu editieren. Damit ging es auf einmal.

                                        Somit kann ich dir sagen: Ja, die Lautstärke ist groß genug. Nicht für Wiedergabe von Musik in HiFi-Qualität, aber für die Wiedergabe der Signaltöne, die man wirklich deutlich hören kann.

                                        Wie es sich mit Sprachausgaben verhält, kann ich dir wiederum noch nicht sagen. Dein Skript funktioniert wunderbar im Zusammenspiel mit dem Raspi Jack. Wenn ich dann jedoch auf Matrix umschalte, kommen nur die im Profil hinterlegten Signaltöne. Offenbar ist das Routing der akustischen Signale unterschiedlich - je nach Lautsprecherausgang. Ob dieses ein Matrix- oder ein Rhasspy-Problem ist, kann ich noch nicht sagen. Ich habe das Problem mal im Matrix-Forum gepostet. Dies auch im Rhasspy-Forum zu tun, überlege ich mir noch, nachdem ich eine Antwort vom Matrix-Team erhalten habe.

                                        Ansonsten ist mein Stand der Dinge, dass ich die wesentlichen Funktionen implementiert habe. Aus meiner Sicht sind noch offen: Abfrage/Ansage von Zeit, Datum, Wochentag (einfache Geschichte) sowie Das Abspielen von Radioprogrammen oder mp3s von meiner Festplatte auf meiner Soundanlage (das ist noch eine größere Baustelle).

                                        Woran ich auch noch arbeite, ist neben dem akustischen Quittungen (Ja?, OK und Ansage des Ergebnisses) noch ein optisches Feedback durch Ansteuern der LEDs zu ermöglichen. Hier stehe ich momentan auch noch ganz am Anfang. Immerhin springen die LEDs schon mal beim Erkennen des Wakewords an

                                        Das alles ohne Hermes, sondern nur durch Auswerten der MQTT-Intents.

                                        Und dann brauche ich natürlich irgendwann noch ein passendes Gehäuse. Auch dies wird eine größere Baustelle...

                                        Da bei mir momentan alles so schön stabil läuft, warte ich noch auf die erste offizielle 2.5.

                                        Ich hoffe, dass man deine Port-Problematik bald in den Griff bekommt. Ich glaube aber, dass Synthesiam und sein Team das schon schaffen werden. Bislang haben die doch in sehr kurzer Zeit einen wirklich tollen Job gemacht. Insofern bin ich von der weiteren positiven Entwicklung vollkommen überzeugt.

                                        Ich wünsche noch einen schönen Sonntag Abend
                                        Thomas

                                        joergeliJ Offline
                                        joergeliJ Offline
                                        joergeli
                                        schrieb am zuletzt editiert von joergeli
                                        #112

                                        Hallo Thomas,

                                        ich bin mir nicht sicher, ob Du mit sudo raspi-config evtl. Deine Audio-Ausgabe auf das Matrix-Voice umstellen kannst, also nicht nur über Rhasspy?

                                        Die Signaltöne sind bei mir auch laut genug, aber die Ansagen über den Mini-NF-Verstärker könnten etwas lauter sein.

                                        @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                                        Abfrage/Ansage von Zeit, Datum, Wochentag (einfache Geschichte)

                                        Anbei meine Scripte für Zeit, Datum/Wochentag:

                                        //__________________________________________________
                                        function formatTwoDigits(n) {
                                        return n < 10 ? '0' + n : n;
                                        }
                                        //__________________________________________________
                                        function GetCurrentTimeStamp() {
                                            var now = new Date();
                                            //var hours = now.getHours();
                                            //var minutes = now.getMinutes();
                                            //var seconds = now.getSeconds();
                                        
                                            var hours = formatTwoDigits(now.getHours());
                                            var minutes = formatTwoDigits(now.getMinutes());
                                            var seconds = formatTwoDigits(now.getSeconds());
                                        
                                            var TimeString = hours + ":" + minutes + ":" + seconds;
                                            let data = 'Es ist ' + TimeString;
                                            httpPost(data); 
                                        }
                                        //__________________________________________________
                                        function GetCurrentDate() {
                                            var datum = new Date();
                                            var tag = datum.getDay();
                                            var wotag = wochentag(tag);
                                            //log(wotag);
                                            var now = new Date();
                                            var dd = now.getDate();
                                        
                                            var dd_string =  String(dd);
                                            var tagi =""
                                            if  (dd_string == "1")  { tagi = "ers";}   
                                            else if (dd_string == "3")  { tagi = "drit";}
                                            else { tagi = dd_string ;}
                                        
                                            var mm = now.getMonth()+1;
                                            var monat ="";
                                            if  (mm == 1)  { monat = "Januar";}   
                                        else if (mm == 2)  { monat = "Februar";} 
                                        else if (mm == 3)  { monat = "März";} 
                                        else if (mm == 4)  { monat = "April";} 
                                        else if (mm == 5)  { monat = "Mai";} 
                                        else if (mm == 6)  { monat = "Juni";} 
                                        else if (mm == 7)  { monat = "Juli";} 
                                        else if (mm == 8)  { monat = "August";} 
                                        else if (mm == 9)  { monat = "September";} 
                                        else if (mm == 10) { monat = "Oktober";} 
                                        else if (mm == 11) { monat = "November";} 
                                        else if (mm == 12) { monat = "Dezember";} 
                                            var yyyy = now.getFullYear();
                                        
                                            //var DateString = " Heute ist" + wotag + " der  " + dd + "."+ mm +"."+yyyy; 
                                            var DateString = 'Heute ist ' + wotag + ' der ' + tagi + '. '  + monat + ' ' + yyyy; 
                                            let data = DateString;
                                            httpPost(data); 
                                        }
                                        
                                        //__________________________________________________
                                        function wochentag(i){
                                            var tage = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag'];
                                            var tag = (typeof(i) == 'object') ? i.getDay() : i ;
                                            return tage[tag];
                                        }
                                        //__________________________________________________
                                        

                                        Hinweis: Das hier

                                            if  (dd_string == "1")  { tagi = "ers";}   
                                            else if (dd_string == "3")  { tagi = "drit";}
                                        

                                        habe ich gemacht, weil bei mir sonst der "eins"te, bzw "drei"te angesagt wird,
                                        wie z.B. Heute ist Sonntag der "eins"te März 2020.
                                        Ist aber wahrscheinlich von der verwendeten Speech-Engine abhängig.

                                        Rhasspy Pre-Release 2.5:
                                        Nach neuestem Update werden jetzt bei mir die Intents über Kaldi nicht mehr erkannt - was im letzten Release noch wunderbar funktioniert hat. Es bleibt spannend .....

                                        Gruß
                                        Jörg

                                        tobetobeT 2 Antworten Letzte Antwort
                                        0
                                        • joergeliJ joergeli

                                          Hallo Thomas,

                                          ich bin mir nicht sicher, ob Du mit sudo raspi-config evtl. Deine Audio-Ausgabe auf das Matrix-Voice umstellen kannst, also nicht nur über Rhasspy?

                                          Die Signaltöne sind bei mir auch laut genug, aber die Ansagen über den Mini-NF-Verstärker könnten etwas lauter sein.

                                          @tobetobe sagte in Rhasspy Offline Sprachsteuerung:

                                          Abfrage/Ansage von Zeit, Datum, Wochentag (einfache Geschichte)

                                          Anbei meine Scripte für Zeit, Datum/Wochentag:

                                          //__________________________________________________
                                          function formatTwoDigits(n) {
                                          return n < 10 ? '0' + n : n;
                                          }
                                          //__________________________________________________
                                          function GetCurrentTimeStamp() {
                                              var now = new Date();
                                              //var hours = now.getHours();
                                              //var minutes = now.getMinutes();
                                              //var seconds = now.getSeconds();
                                          
                                              var hours = formatTwoDigits(now.getHours());
                                              var minutes = formatTwoDigits(now.getMinutes());
                                              var seconds = formatTwoDigits(now.getSeconds());
                                          
                                              var TimeString = hours + ":" + minutes + ":" + seconds;
                                              let data = 'Es ist ' + TimeString;
                                              httpPost(data); 
                                          }
                                          //__________________________________________________
                                          function GetCurrentDate() {
                                              var datum = new Date();
                                              var tag = datum.getDay();
                                              var wotag = wochentag(tag);
                                              //log(wotag);
                                              var now = new Date();
                                              var dd = now.getDate();
                                          
                                              var dd_string =  String(dd);
                                              var tagi =""
                                              if  (dd_string == "1")  { tagi = "ers";}   
                                              else if (dd_string == "3")  { tagi = "drit";}
                                              else { tagi = dd_string ;}
                                          
                                              var mm = now.getMonth()+1;
                                              var monat ="";
                                              if  (mm == 1)  { monat = "Januar";}   
                                          else if (mm == 2)  { monat = "Februar";} 
                                          else if (mm == 3)  { monat = "März";} 
                                          else if (mm == 4)  { monat = "April";} 
                                          else if (mm == 5)  { monat = "Mai";} 
                                          else if (mm == 6)  { monat = "Juni";} 
                                          else if (mm == 7)  { monat = "Juli";} 
                                          else if (mm == 8)  { monat = "August";} 
                                          else if (mm == 9)  { monat = "September";} 
                                          else if (mm == 10) { monat = "Oktober";} 
                                          else if (mm == 11) { monat = "November";} 
                                          else if (mm == 12) { monat = "Dezember";} 
                                              var yyyy = now.getFullYear();
                                          
                                              //var DateString = " Heute ist" + wotag + " der  " + dd + "."+ mm +"."+yyyy; 
                                              var DateString = 'Heute ist ' + wotag + ' der ' + tagi + '. '  + monat + ' ' + yyyy; 
                                              let data = DateString;
                                              httpPost(data); 
                                          }
                                          
                                          //__________________________________________________
                                          function wochentag(i){
                                              var tage = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag'];
                                              var tag = (typeof(i) == 'object') ? i.getDay() : i ;
                                              return tage[tag];
                                          }
                                          //__________________________________________________
                                          

                                          Hinweis: Das hier

                                              if  (dd_string == "1")  { tagi = "ers";}   
                                              else if (dd_string == "3")  { tagi = "drit";}
                                          

                                          habe ich gemacht, weil bei mir sonst der "eins"te, bzw "drei"te angesagt wird,
                                          wie z.B. Heute ist Sonntag der "eins"te März 2020.
                                          Ist aber wahrscheinlich von der verwendeten Speech-Engine abhängig.

                                          Rhasspy Pre-Release 2.5:
                                          Nach neuestem Update werden jetzt bei mir die Intents über Kaldi nicht mehr erkannt - was im letzten Release noch wunderbar funktioniert hat. Es bleibt spannend .....

                                          Gruß
                                          Jörg

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

                                          Hallo Jörg,

                                          @joergeli said in Rhasspy Offline Sprachsteuerung:

                                          ich bin mir nicht sicher, ob Du mit sudo raspi-config evtl. Deine Audio-Ausgabe auf das Matrix-Voice umstellen kannst,

                                          vielen Dank für den Tipp. Dem bin ich natürlich auch schon nachgegangen. Die Raspie-Config erlaubt nur die Auswahl zwischen dem 3.5 mm Adapter und HDMI. Ist auch logisch, weil Audio an Matrix entweder über einen Pin von GPIO oder über S2I weiter gegeben wird. Ich konnte noch nicht herausfinden, wie das funktioniert.

                                          @joergeli said in Rhasspy Offline Sprachsteuerung:

                                          Anbei meine Scripte für Zeit, Datum/Wochentag:

                                          Das ist natürlich mal wieder ein super Service von dir. Es war nicht meine Absicht, ein Skript zu schnorren. Deins sieht aber schon wirklich gut aus.Herzlichen Dank dafür!!!

                                          @joergeli said in Rhasspy Offline Sprachsteuerung:

                                          Nach neuestem Update werden jetzt bei mir die Intents über Kaldi nicht mehr erkannt -

                                          Das gehört wohl zu den merkwürdigen Effekten, die wir alle schon beobachtet haben. Obwohl ich ja V.2.5 noch nicht betreibe, würde ich mal vermuten, dass ein Recovery des Profile Ordners helfen könnte. Zumindest habe ich den Effekt, dass mit einem Mal gar nichts mehr geht, insbesondere keine Wort-Erkennunge mehr, auch bei 2.4.18 und -19 festgestellt. In meinen Fällen hat es immer geholfen, ein Backup von ..../profiles/de wieder auf ...profiles /de zu kopieren.

                                          Ich hoffe, dies hilft auch bei dir.

                                          Gruß, Thomas

                                          Beste Grüße
                                          tobetobe

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          620

                                          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