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

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

Vorheriges Thema - Nächstes Thema

mericon

Sorry das war mein Fehler der Befehl muss in der Linux Konsole ausgeführt werden und heißt snips-watch -vv

Gesendet von meinem VTR-L09 mit Tapatalk


lucca111

ZitatIch habe mich aber selber bei meiner Hardware vertan denn es ist RPI 1 2011.12!

Also habe es gerade nochmal von vorne versucht, aber diesmal wieder genau wie diese Anleitung und habe es mal mit Node 8 versucht,
aber bekomme leider keine Ausgabe im "sam watch" wenn ich was Hey_Snips sage?!

Hallo Steffen.

Mirkrophone  & Lautsprecher testen mit " sam test speaker " und " sam test microphone ".
Was bringt die Augabe von " sam setup audio "?

" sam test microphone " hat bei mir eine Testaufnahme gemacht aber bei Abspielen hörte ich nichts.

Habe dann mit " sam service stop snips-audio-server " den service gestoppt.
Mit " arecord -D plughw:1,0 -d 3 test.wav && aplay test.wav " mein Micro getestet (hurra erfolgreich)
Mit " sam service start snips-audio-server " den service wieder getstartet.
Gruß lucca




Steffen

Zitat von: lucca111 am 23 März 2019, 12:10:56
Hallo Steffen.

Mirkrophone  & Lautsprecher testen mit " sam test speaker " und " sam test microphone ".
Was bringt die Augabe von " sam setup audio "?

" sam test microphone " hat bei mir eine Testaufnahme gemacht aber bei Abspielen hörte ich nichts.

Habe dann mit " sam service stop snips-audio-server " den service gestoppt.
Mit " arecord -D plughw:1,0 -d 3 test.wav && aplay test.wav " mein Micro getestet (hurra erfolgreich)
Mit " sam service start snips-audio-server " den service wieder getstartet.
Gruß lucca

Hallo!

Die Test von Microphone und Audiausgabe funktionieren alle gut, ich bekomme von meinen Test eine gute Ausgabe wieder und ich benutze ein PS3EyeCam.

pi@raspberrypi:~ $ cat /etc/asound.conf
pcm.!default {
    type asym
    playback.pcm {
        type plug
        slave.pcm "hw:0,0"
    }
    capture.pcm {
        type plug
        slave.pcm "hw:1,0"
    }


Mfg Steffen

lucca111

@Stephen: snips-asr muss getartet sein.

snips-analytics .............. 0.62.3 (not running)
snips-asr .................... 0.62.3 (running)
snips-audio-server ........... 0.62.3 (running)
snips-dialogue ............... 0.62.3 (running)
snips-hotword ................ 0.62.3 (running)
snips-nlu .................... 0.62.3 (running)
snips-skill-server ........... 0.62.3 (not running)
snips-tts .................... 0.62.3 (running)

Prof. Dr. Peter Henning


Steffen

Guten Morgen,

hatte es jetzt nochmal mit alle möglichen Node-Versionen(4-11) versucht aber es scheint einfach nicht zu laufen auf dem RPI1 2011_12.

Vielleicht liegt es ja auch an Stretch und RPI, denn das Gatttool hat ja auch Probleme mit Stretch?!

Mfg Steffen

der_da

#741
Ich habe noch ein Problem mit der Abfrage von Werten. Ich habe z.B. ein Thermometer/Hygrometer mit Namen "Terrasse". Wenn ich Snips frage, wie die Temperatur auf der Terrasse ist, dann bekomme ich immer als Antwort, dass es derzeit 0° auf der Terrasse sind. Der tatsächliche Wert wird also nicht übernommen.
Auf die Frage nach dem Status der Terrasse bekomme ich übrigens ein "Da ist etwas schief gegangen!" Woran kann das liegen?
Hier mein Listing von "Terrasse":
Internals:
   CHANGED   
   DEF        34
   FUUID      5c7fb818-f33f-2dea-f23c-12ebc2f3a2357e19
   IODev      JLLaCrosse
   JLLaCrosse_MSGCNT 37354
   JLLaCrosse_RAWMSG OK 9 52 1 4 152 46
   JLLaCrosse_TIME 2019-03-24 12:32:29
   LASTInputDev JLLaCrosse
   LaCrosse_lastRcv 2019-03-24 12:32:29
   MSGCNT     37286
   NAME       Terrasse
   NR         291
   STATE      T: 17.6 H: 46
   TYPE       LaCrosse
   addr       34
   battery_new 0
   bufferedH 
   bufferedT 
   corr1      0
   corr2      0
   previousH  46
   previousT  17.6
   sensorType 0=T(H)
   READINGS:
     2016-04-21 10:46:59   Batteriewechsel 1
     2019-03-24 12:32:29   battery         ok
     2019-03-24 12:25:44   dewpoint        5.0
     2019-03-24 12:32:29   humidity        46
     2019-03-24 12:26:59   statHumidityDay Min: 46 Avg: 63 Max: 73
     2019-03-23 23:59:55   statHumidityDayLast Min: 39 Avg: 63 Max: 83
     2019-03-24 12:26:59   statHumidityMonth Min: 36 Avg: 68 Max: 86
     2019-02-28 23:59:55   statHumidityMonthLast Min: 32 Avg: 69 Max: 88
     2019-03-24 12:26:59   statHumidityYear Min: 32 Avg: 73 Max: 90
     2018-12-31 23:59:55   statHumidityYearLast Min: 23 Avg: 69 Max: 90
     2019-03-24 12:26:59   statTemperatureDay Min: 6.3 Avg: 10.8 Max: 17.6
     2019-03-23 23:59:55   statTemperatureDayLast Min: 2.7 Avg: 13.2 Max: 25.1
     2019-03-24 12:26:59   statTemperatureMonth Min: -1.6 Avg: 7.9 Max: 25.1
     2019-02-28 23:59:55   statTemperatureMonthLast Min: -5.0 Avg: 4.9 Max: 20.2
     2019-03-24 12:26:59   statTemperatureYear Min: -7.5 Avg: 4.4 Max: 25.1
     2018-12-31 23:59:55   statTemperatureYearLast Min: -8.7 Avg: 9.0 Max: 39.9
     2019-03-24 12:31:59   state           T: 17.6 H: 46
     2019-03-24 12:32:29   temperature     17.6
   helper:
     _98_statistics StatistikTerrasse
Attributes:
   IODev      JLLaCrosse
   event-min-interval state:600,battery:3600,temperature:600,humidity:600
   group      Temperaturen
   icon       scene_terrace
   room       Information,Snips,Temperaturen
   snipsMapping GetNumeric=temperature,type=Temperatur
                GetNumeric=humidity,type=Luftfeuchtigkeit
                Status:response=Die Temperatur auf der Terrasse beträgt [Terrasse:temperature] Grad bei [Terrasse:humidity] Prozent Luftfeuchtigkeit.
   snipsName  Thermometer
   snipsRoom  Terrasse



Edit: Habe den Fehler gefunden. Entgegen dem hier von Thyraz erwähnten Eintrag des snipsMapping mit
GetNumeric=temperature,type=Temperatur
GetNumeric=humidity,type=Luftfeuchtigkeit

habe ich es nun wie im allerersten Beitrag erwähnt auf
GetNumeric:currentVal=temperature,type=Temperatur
GetNumeric:currentVal=humidity,type=Luftfeuchtigkeit

geändert. Nun antwortet FHEM/Snips auf direkte Fragen nach Temperatur oder Luftfeuchtigkeit mit den korrekten Werten.
Nur auf die Frage: "Status Terrasse" bzw. auch "Wie ist der Status der Terrasse?" bekomme ich immer noch "Da ist etwas schief gegangen!" zurück.
Dabei sollte doch das snipsMapping
Status:response=Die Temperatur auf der Terrasse beträgt [Terrasse:temperature] Grad bei [Terrasse:humidity] Prozent Luftfeuchtigkeit.
dafür sorgen, dass dann die entsprechende Antwort erfolgt!? Hat dafür noch jemand einen Tipp?

Steffen

Hallo!

Ok jetzt habe ich eine Pi3 und es klappte sofort, vielen dank nochmal für eure Hilfe und Geduld...

Jetzt habe ich aber eine andere Frage, denn mein vorhaben war eigentlich das ich Alexa umgehe und mit Snips arbeite.

Ich habe ein Talk2Fhem angelegt und viele Sachen schon eingegeben, habe über das EchoDevice-Modul mit "vioce" aus Alexa ausgelesen und an Talk2Fhem übergeben,
zB.: "wir gehen ins Bett".

Das Problem das bei Alexa oft die Übertragung zu den Modulen zu lange gedauert hat, darum wollte ich mit Snips Alexa umgehen.

Jetzt muss ich aber Feststellen das in "sam watch" aber kaum was von den gesagten Sätzen ankommt und ich eigentlich nur das auslesen möchte was in Snips ankommt um es dann an Talk2fhem zu übergeben und jetzt meine Frage ist das überhaupt möglich???

Mfg Steffen

obi

Hallo Steffen,

ja dies ist möglich. Siehe hier: https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841
Ich habe dies bei mir genauso im Einsatz. Bitte alles so wie beschrieben im 1. Post umsetzen, dann sollte es funktionieren.

Wichtig ist, dass Snips alle Wörter welche erkannt werden sollen auch kennt siehe mein letzter Post https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841

Steffen

Zitat von: obi am 25 März 2019, 15:26:36
Hallo Steffen,

ja dies ist möglich. Siehe hier: https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841
Ich habe dies bei mir genauso im Einsatz. Bitte alles so wie beschrieben im 1. Post umsetzen, dann sollte es funktionieren.

Wichtig ist, dass Snips alle Wörter welche erkannt werden sollen auch kennt siehe mein letzter Post https://forum.fhem.de/index.php/topic,91216.msg920841.html#msg920841

Hallo!

Vielen Vielen dank, das war es glaube ich denn die ersten Sätze werden erkannt.

Könnte ich noch kurz Fragen wie man dann weitere Satteliten anlernt, geht das über die toml. datei?

Kann man das Wakeword ohne weiteres ändern?

Mfg Steffen


kud

Mal eine grundsätzliche Frage.
Wird Das Snips-"Modul" von Thyraz eigentlich noch gewartet/gepflegt/weiterentwickelt?
Habe gelesen, dass er selbst keine laufende SNIPS-Installation hat.

P.S. Bei mir läuft SNIPS schon seit zig Monaten und sagt mir brav die Werte aus FHEM auf. Jedoch update ich nicht mehr!

der_da

Zitat von: Steffen am 25 März 2019, 16:34:09
Könnte ich noch kurz Fragen wie man dann weitere Satteliten anlernt, geht das über die toml. datei?
Informationen dazu findest du hier.
Zitat
Kann man das Wakeword ohne weiteres ändern?
Das ist in diesem Artikel beschrieben.

Steffen

Ok danke nun habe ich es geschafft das Hotword zu ändern,
dann habe ich mit Shortcuts geschafft die Sätze abzubilden aber wie kann ich sie nun in Fhem auslesen???

in den Readigs tauchen sie leider nicht auf:

[Asr] captured text "die kinder gehen ins bett" in 3.0s
[09:20:04] [Nlu] detected intent Thyraz:Shortcuts with confidence score 1.000 for input "die kinder gehen ins bett"
              Slots ->
                 Shortcut -> die kinder gehen ins bett (confidence: 1.000)
[09:20:04] [Dialogue] New intent detected Thyraz:Shortcuts with confidence 1.000
              Slots ->
                 Shortcut -> die kinder gehen ins bett (confidence: 1.000)


Mfg Steffen

obi

Mit folgendem sollte der erkannte Text ein Reading erzeugen welches dann weiter verarbeitet werden kann:
define ej_SNIPS expandJSON Snips:lastIntentPayload:.\{.*input.*} input
define n_Snips_input notify
Snips:input:.* {
  $EVENT =~ s/\srein/\sein/g;
  fhem("attr talk Snips Snips");
  fhem("set talk " . ( split / /, $EVENT, 2 )[1]);
}


Ob das auch bei den Shortcuts funktioniert kann ich nicht sagen. Ich verwende diese nicht. Ich habe einfach alle einzelnen Wörter welche von Snips erkannt werden sollen als Attribut snipsChannels verwendet.attr d_snips_dummy snipsChannels die=die
Kinder=Kinder
gehen=gehen
ins=ins
bett=bett

Da ich ja eh nicht die Verarbeitung von dem Snips-Modul verwende ist es egal ob es Media-kanäle oder sonstige Wörter sind.

Ich bin übrigens gerade dabei ein eigenes Modul für die Snips-Anbindung zu programmieren welches als reines Text-Gateway agiert, da ich keine Logik im Modul benötige sondern lieber Talk2Fhem, Babble usw. verwende.

Steffen

Zitat von: obi am 26 März 2019, 10:21:20
Mit folgendem sollte der erkannte Text ein Reading erzeugen welches dann weiter verarbeitet werden kann:
define ej_SNIPS expandJSON Snips:lastIntentPayload:.\{.*input.*} input
define n_Snips_input notify
Snips:input:.* {
  $EVENT =~ s/\srein/\sein/g;
  fhem("attr talk Snips Snips");
  fhem("set talk " . ( split / /, $EVENT, 2 )[1]);
}


Ob das auch bei den Shortcuts funktioniert kann ich nicht sagen. Ich verwende diese nicht. Ich habe einfach alle einzelnen Wörter welche von Snips erkannt werden sollen als Attribut snipsChannels verwendet.attr d_snips_dummy snipsChannels die=die
Kinder=Kinder
gehen=gehen
ins=ins
bett=bett

Da ich ja eh nicht die Verarbeitung von dem Snips-Modul verwende ist es egal ob es Media-kanäle oder sonstige Wörter sind.

Ich bin übrigens gerade dabei ein eigenes Modul für die Snips-Anbindung zu programmieren welches als reines Text-Gateway agiert, da ich keine Logik im Modul benötige sondern lieber Talk2Fhem, Babble usw. verwende.

Danke für deine Idee, leider gestaltet es sich so sehr schwierig denn "die Kinder gehen ins Bett" klappt aber habe danach:

die=die
Kinder=Kinder
gehen=gehen
ins=ins
bett=bett
schlafen=schlafen
wir=wir
ich=ich
aufgestanden=aufgestanden
möchten=möchten
hinzugefügt aber dann erkennt er zB. "ich bin aufgestanden" aber "wir sind aufgestanden" nicht.

Doch über die Shortcuts erkennt er die Sätze bis jetzt, fast immer zu 90%, ich müsste nur das "text" in "hermes/asr/textCaptured" auslesen können und als reading darstellen lassen das würde glaube ich mir erstmal zu Anfang reichen.

Ich hatte es damit versucht, aber das klappt leider nicht:

define ej3 expandJSON Snips.*:{.*} (text) input


Da du dich damit anscheinend gut auskennst, hättest du da vielleicht eine Idee wie das gehen würde?



Mfg Steffen