SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai

Begonnen von Thyraz, 21 Juli 2018, 20:28:48

Vorheriges Thema - Nächstes Thema

bennebartsch

Zitat von: Wal am 25 August 2018, 07:31:50
Nein, die snips-asr kann deutsch. Wenn ich möchte das Amazon oder Google Daten von mir bekommen sollen, würde ich nicht mit Snips arbeiten.
Habe mich auch schon gewundert. Dann ist die SNIPS Dokumentation aber nicht gerade aktuell.

Thyraz

Zitat von: shilbert am 25 August 2018, 09:12:18
Mit dem alten Modul liefen auch die Jalousien. Die tun es aktuell nicht mehr. Scheint irgendwie an den Räumen zu liegen.
Injection müsste geklappt haben ...
Allerdings scheint bei den Slots Standardraum und Standarddevice übermittelt zu werden.

Das mit Standardraum / Standardgerät ist normal.
ASR versteht die neuen Wörter nach dem Inject wohl, NLU aber nicht.
Daher trickse ich hier, indem ich NLU nochmal mit Dummy-Wörtern füttere die es kennt.

Bei deiner Logausgabe sieht man ja, dass NLU bei dem Satz "jalousie küche runter" nur einen Slot (Change) mit "runter" erkennt.

Beim zweiten NLU-Aufruf in deiner Logausgabe der von FHEM kommt: "standardgerät standardraum runter" erkennt er dann alle 3 Slots: Room, Device und Change.
Raum und Device ersetze ich in den empfangen Daten dann wieder mit den ursprünglichen Werten bevor ich weitermache.


Warum es bei dir momentan fehlschlägt:
Im Logeintrag siehst du, dass er den Intent SetNumeric erkennt. Du hast aber nur SetOnOff konfiguriert.
Bin mir jetzt nicht sicher ob ich da eher was ändern sollte dran...

Wenn du "öffne" oder "schließe" statt "runter" oder "rauf" sagst, sollte es jetzt schon gehen.
Da die öffne/schließe Wörter aus dem Value Slot von SetOnOff sind.

Rauf und Runter habe ich aktuell dem "Change" Slot bei SetNumeric zugewiesen, da ich andere Beispielsätze im Kopf hatte:
"Fahre den Rollladen 20 Prozent runter"
Aber ob man das wirklich so sagt?
Evtl. wäre rauf/runter doch eher ein Kandidat für SetOnOff, da es ja an sich das selbe wie Öffnen/Schließen ist.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Thyraz

Ok, hab das kurz geändert.

Öffne/Rauf und Schließe/Runter sollten nun als SetOnOff Befehl erkannt werden.
Dazu den Assistenten neu installieren, damit ihr die neuste Version der FHEM App habt,
und die neue 10_Snips.pm von Github einspielen.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Thyraz

Zitat von: jowe am 25 August 2018, 11:21:16
@Thyraz: Danke für den Hinweis, ich dachte ich bräuchte noch ein zusätzliches Snips-device um die MQTT Befehle zu publishen. Hotword Erkennung ein- und ausschalten funktioniert einwandfrei mit
set SnipsMQTT publish hermes/hotword/default/toggleOff und
set SnipsMQTT publish hermes/hotword/default/toggleOn

Perfekt!
Kleiner Nachtrag: oben Beschriebenes Vorgehen funktioniert wohl leider doch nicht, Snips reagiert doch weiterhin auf das Hotword

Du übergibst hier nur den Intent auf dem published werden soll, aber keine eigentliche Nachricht.
Laut Doku muss als Payload die siteId geschickt werden die stummgeschaltet werden soll.

Schätze mal das müsste so aussehen:
set SnipsMQTT publish hermes/hotword/default/toggleOff {"siteId": "default"}
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

bennebartsch

Brauche ich für SNIPS einen eigenen MQTT Broker? Habe auf meinem PI bereits Mosquitto MQTT und in FHEM einen Broker angelegt. Einfach beim define von SNIPS meinen bestehenden MQTT Broker angeben und fertig?

kud

Habe ich da was zerschossen?
sam watch
bash: snips-watch: Kommando nicht gefunden.

Jedoch sam status etc funtionieren...

bennebartsch

Zitat von: kud am 25 August 2018, 15:58:47
Habe ich da was zerschossen?
sam watch
bash: snips-watch: Kommando nicht gefunden.

Jedoch sam status etc funtionieren...

versuch mal "sudo apt-get install --reinstall snips-watch"

Thyraz

Zitat von: bennebartsch am 25 August 2018, 15:40:31
Brauche ich für SNIPS einen eigenen MQTT Broker? Habe auf meinem PI bereits Mosquitto MQTT und in FHEM einen Broker angelegt. Einfach beim define von SNIPS meinen bestehenden MQTT Broker angeben und fertig?

An sich kannst du auch einen existierenden verwenden.
Soll Snips auf dem selben Rechner laufen?

Snips schickt auch alle Audiodaten konstant über den MQTT Broker.
Würde (falls es ein anderer Rechner ist) eher einen extra Broker installieren, da du sonst dauernd diesen Netzwerktraffic für die Audiodaten hast.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Thyraz

Zitat von: kud am 25 August 2018, 15:58:47
Habe ich da was zerschossen?
sam watch
bash: snips-watch: Kommando nicht gefunden.

Jedoch sam status etc funtionieren...

snips-watch wird glaub nicht standardgemäß mitinstalliert.
Hast du es schon drauf gehabt?

edit: Falls ja, hat bennebartsch ja eine mögliche Lösung gebracht...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

bennebartsch

Zitat von: Thyraz am 25 August 2018, 16:12:46
An sich kannst du auch einen existierenden verwenden.
Soll Snips auf dem selben Rechner laufen?

Snips schickt auch alle Audiodaten konstant über den MQTT Broker.
Würde (falls es ein anderer Rechner ist) eher einen extra Broker installieren, da du sonst dauernd diesen Netzwerktraffic für die Audiodaten hast.

Ja, SNIPS läuft auf dem Pi, auf dem auch der Broker läuft.
Noch eine Frage: SNIPS soll auf einem PI laufen, an dem ein PS3 Eye angeschlossen ist. Leider ist der PI ziemlich weit von meinen Lautsprechern entfernt. Kann ich die Audioausgabe auch über einen der Sattelliten (RPI Zero) realisieren?

kud

Habe genau dieses Problem und schlage mich schon seit 2 Tagen mit Pulseaudio rum. Eine ...Software. Wäre schön wenn alsa das von Haus aus mitbrächte.
Nun. Was ich bereits realisiert habe ist, dass der Pulseaudioserver auf  dem Pi mir dem Lautsprecher läuft.
Wenn ich den Snips-pulseaudio sage -- server PimitLautsprecher geht das komplette Audio auf den Server inklusive Mikrofon ;-(( Blöd.

bennebartsch

Zitat von: kud am 25 August 2018, 17:15:25
Habe genau dieses Problem und schlage mich schon seit 2 Tagen mit Pulseaudio rum. Eine ...Software. Wäre schön wenn alsa das von Haus aus mitbrächte.
Nun. Was ich bereits realisiert habe ist, dass der Pulseaudioserver auf  dem Pi mir dem Lautsprecher läuft.
Wenn ich den Snips-pulseaudio sage -- server PimitLautsprecher geht das komplette Audio auf den Server inklusive Mikrofon ;-(( Blöd.

Werde mich da auch gleich mal dransetzen, wenn ich SNIPS erstmal dazu bekomme irgendetwas zu schalten...

Ist das normal?:
2018.08.25 16:52:36 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 201.
2018.08.25 16:52:36 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/10_SNIPS.pm line 224.

mark79

@Thyraz das Problem scheint wohl wirklich armv8 bzgl snips-asr-injection zu sein.

Ich habe den Orange Pi Zero (armv7) mal hier hin mitgenommen und mit dem Fhem verbunden, dort stieg die CPU Last von snips-asr-injection nicht. Heißt also, das Fhem und dein Modul nicht das Problem sind. :)

Im Discord Channel hat marc noch etwas geschrieben, das er glaubt das es evtl. an LXC liegt:   
marc
@Mark79 this is going to be a little hard for me to reproduce 😅 .. i would rather blame some underlying lib used by the container than the armv8 architecture

Ich habe Snips dann mal im Hostsystem installiert und dort tritt das Problem auch auf.
Ich habe es reportet und mal schaun was dabei raus kommt...
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

kud

Da wäre auch interessant ob die Lautstärke pro Ausgabe (evtl. Tageszeitabhängig) angepasst werden kann. Bis jetzt mach ich das mit dem Alsamixer.
Das nervt mich auch an Alexa welche zu nachtsschlafender Zeit auf den Befehl "Schalte das Licht aus" das ganze Haus mit "OK" wieder wachmacht. ;-((

mark79

Zitat von: kud am 25 August 2018, 17:28:23
Da wäre auch interessant ob die Lautstärke pro Ausgabe (evtl. Tageszeitabhängig) angepasst werden kann. Bis jetzt mach ich das mit dem Alsamixer.
Das nervt mich auch an Alexa welche zu nachtsschlafender Zeit auf den Befehl "Schalte das Licht aus" das ganze Haus mit "OK" wieder wachmacht. ;-((
Du könntest das Zeitgesteuert per Crontab machen: amixer -c1 sset 'PCM' 80%
Oder per System Befehl mit Fhem.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten