NEWS
[Aufruf] Adapter: Snips - Offline Speak2Text
-
Nach dem Update gestern, finde ich auch, dass das Hotword besser erkannt wird. Außerdem war es in dieser kurzen Beobachtungszeit weniger anfällig für Falschauslösungen. Keine einzige Erkennung während des ganzen Fernsehabends. Und trotz Hintergrundgeräuschen, aber natürlich mit lauterer Stimme durchaus passable Erkennung, wenn gewollt.
@Wal
Weiterentwicklung geht relativ gut voran. Der Adapter kommuniziert jetzt über den Dialog Manager mit Snips und startet/setzt fort/beendet Sessions. Somit deutlich schnellere Wiederverfügbarkeit nach einem Befehl. Außerdem hab ich einen Weg gefunden, die SessionID an t2c zu übergeben und wieder zurück. Bis zur fertigen Version dauert es aber noch etwas. -
@rascal
Hast du einen Vorschlag, wie man das mit deiner "Kommunikation mit dem Haus" realisieren könnte? Also wer z.B. den Dialog starteten soll. Eine eigene JS Regel, text2command, der User oder Snips? -
Guten Morgen unltdnetworx,
zu meiner Konfiguration:
im Moment habe ich 2 Raspberries mit 2 Snips Master + 2 snips-Iobroker Adapter.
In Javascripten trigger ich auf die Iobroker Instanz um zb. "Licht ein", "Radio an" ohne Raumbezeichnung schalten zu können.
Den Text werte ich mit
string.indexOf('Licht')>=0 && (string.indexOf('ein') || string.indexOf('an'))
aus, da es bisher mit dem Text2Comman Adapter mit einem Master/Slave snips nicht funktioniert hat.Zum Antworten an snips:
Ob in JS oder Text2Command ist mir mittlerweile egal, wobei ich glaube, dass t2c einfacher wäre. (wenn es auf eine snips-instanz triggern könnte und das "Antwort-Gerät" im t2c nicht immer verschwindet)
Wer den Dialog auslöst ist eine gute Frage, da ich das Meiste über JS steuere, vielleicht wäre es über einen Snips-"Zeit"-Datenpunkt möglich, dass snips diese Zeitspanne auf eine Antwort wartet. Wenn der Datenpunkt aktualisiert wird, wartet Snips die in dem Datenpunkt hinterlegte Zeit auf eine Spracheingabe.
snips: "Es steht jemand vor der Türe, soll ich öffnen?"
snips-Datenpunkt: 2 (Sek)
user: "ja" || "sei so lieb"snips: "Es wird im Wohnzimmer sehr warm, soll ich die Klimaanlage aktivieren?"
snips-Datenpunkt: 4 (Sek)
user: "nein danke" || "Kühle auf 22°"Keine Ahnung ob das Machbar ist, vielleicht geht's auch anders.
-
Das geht mittels der SessionID, super sogar. Kann man in der zukünftigen Version wunderbar beobachten.
Etwa so:
NLU was asked to start Session with ID...
NLU was asked to end Session ID by saying blablablaDie technische Seite hatte ich aber gar nicht gemeint. Mir geht's rein um die praktische Idee. Wie startet denn das Gespräch? Snips kann ja schlecht einfach loslegen.
-
Starten über JS oder blocky, ich denke, da ist man am flexibelsten, egal worauf man reagiert.
-
@Wal
Habe gerade einen Pull-Request im testing-Branch gestellt.Neuerungen:
- Ordnerstruktur hat sich geändert:
- Neuer Überordner: "devices"
- Unterordner "all"
- Unterordner für jeden Satelliten
- Jeder Satellit kann jetzt über den Datenpunkt snips.X.devices.XXX.send.text direkt angesprochen werden und Informationen ausgeben (Ordnerstruktur wird bei erster Verwendung des Satelliten automatisch erzeugt)
- text2command Ausgabe-Datenpunkt muss zwingend auf snips.X.devices.all.send.text gesetzt werden (X muss natürlich die laufende Nummer der Instanz sein, meist also 0)
- Adapter interagiert mit den Satelliten
Durch die Neuerungen können alle Satelliten jetzt Infos ausgeben und beenden danach sofort wieder den Dialog mit Snips. Heißt, dass sowohl bei nicht durch den text2command-Adapter erkannten Befehlen, als auch bei sonstigen Ausgaben Snips danach sofort wieder zur Verfügung steht. Die langen Wartezeiten bis zur nächsten Spracheingabe entfallen somit.
Außerdem können die Satelliten durch die *.send.text jetzt explizit angesprochen werden. Text2command muss hingegen den oben genannten .all.send.text ansprechen. Der Adapter verteilt die Ausgabe dann selbstständig anhand der SessionID an den richtigen Satelliten.
Wenn .all.send.text direkt, also nicht von text2command angesprochen wird und somit keine SessionID enthält, dann erfolgt die Ausgabe an alle eingebundenen Satelliten.
Bitte an Alle:
Testet doch bitte mal den aktualisierten Adapter aus dem Testing-Bereich (Version 1.1.0) sobald Walter den Vorschlag angenommen hat. Sollte auch ohne Satellitenbetrieb bzw. mit einem Server und einem Satelliten funktinionieren.Danke
- Ordnerstruktur hat sich geändert:
-
@unltdnetworx
erledigt -
Hallo,
ich habe nun auf 1.1.0 aktualisiert.
Leider wird die Instanz nicht gestartet.
Im Log sehe ich
instance system.adapter.snips.0 terminated with code 10 (Cannot find start file of adapter)Ich sehe die neue Struktur auch nicht unter Objekten.
-
Okay, kann ich leider bestätigen. Hab es gerade deinstalliert und es scheint irgendetwas beim installieren fehlzuschlagen. Scheint wohl an den Schreibrechten zu liegen. Seit der letzten Umstellung von ioBroker wurde wohl was geändert.
-
Okay, "Lösung" gefunden. Den Adapter erst normal installieren und dann den Testing-Link mittels Github-Katze drüberinstallieren. Direkte Installation mittels Github scheint aufgrund fehlender Berechtigungen nicht zu funktionieren.
-
Hallo,
nun ist die Struktur aufgebaut und die Instanz läuft.. Jedoch höre ich noch nicht mal den Feedbackton.
Ich sehe die Session-ID vom Satelliten.
-
@mmaric
Hast du das neueste Update der Snips Platform drauf? Am Feedback Ton hat sich nichts geändert. Erkennt dich das Gerät?Update der Plattform
Sam update
Überwachung der Erkennung
Sam watch
-
Hallo,
ja alles ist aktuell.
Im sam watch wird der Satellit erkannt, aber es wird nichts zurück gegeben.
Gebe mal später ein paar mehr Infos.
Grüße
Mladen
-
@unltdnetworx ,
das hatte bei mir funktioniert, Adapter deinstalliert und Test-Adapter installiert.
Drüber installieren geht bei mir nicht.
Ich habe aber ioBroker letzte Woche mit dem neuen Installationsskript aufgesetzt.
Das mit den Rechten ist nicht so schön, bekomme bei der Installation von Adaptern seit der Umstellung jede menge Warnungen und Fehlermeldungen, aber die Adapter funzen trotzdem. -
@Wal
Genau das ist das Problem. Ich habe noch die alte Installation. Hoffe die kriegen das in den Griff.Aber bei dir läuft der Adapter? Bei mir geht es einwandfrei.
-
@unltdnetworx ,
ja geht, allerdings habe ich i.M. kein Satellit angeschlossen. -
Das Gerät wird nun auch als Satellit behandelt. Also, wenn es läuft, wunderbar. Funktioniert somit mit alter und neuer Variante.
@mmaric
Hast du mehrere Satelliten? -
hallo,
momentan habe ich einen Master (PC) und einen Satellit.
Auf dem Satellit ist nur snips-audio-server, nach der Beschreibung von snips.ai.
Nur zwei Werte eingetragen.
snips-common
mqtt = "masterip:1883"snips-audio-server
bind= "satelitt:1883"sam habe ich nicht auf dem satelliten,
brauche ich eventuell mehr ? -
@Wal sagte in [Aufruf] Adapter: Snips - Offline Speak2Text:
Hier mal meine Config:
Snips-Server:Connected to device localhost OS version ................... Debian GNU/Linux 9 (stretch) Installed assistant .......... ioBroker Language ..................... de Hotword ...................... hey_snips ASR engine ................... snips Status ....................... Live Service status: snips-analytics .............. (not running) snips-asr .................... 0.60.8 (running) snips-audio-server ........... 0.60.8 (running) snips-dialogue ............... 0.60.8 (running) snips-hotword ................ 0.60.8 (running) snips-nlu .................... 0.60.8 (running) snips-skill-server ........... 0.60.8 (not running) snips-tts .................... 0.60.8 (running)
[snips-common] bus = "mqtt" mqtt = "localhost:1500" # audio = ["+@mqtt"] # assistant = "/usr/share/snips/assistant" # user_dir = "/var/lib/snips" [snips-audio-server] # frame = 256 bind = "livingroom@mqtt" # mike = "Built-in Microphone" # disable_playback = false [snips-hotword] # model = "/usr/share/snips/hotword" # hotword_id = "default" # sensitivity = "0.5" audio = ["livingroom@mqtt", "kitchen@mqtt"]
Satellit:
Connected to device localhost OS version ................... Raspbian GNU/Linux 9 (stretch) Installed assistant .......... Not installed Status ....................... Live (no assistant) Service status: snips-analytics .............. (not running) snips-asr .................... (not running) snips-audio-server ........... 0.60.12 (running) snips-dialogue ............... (not running) snips-hotword ................ (not running) snips-nlu .................... (not running) snips-skill-server ........... (not running) snips-tts .................... (not running)
[snips-common] # bus = "mqtt" mqtt = "192.168.111.5:1500" # audio = ["+@mqtt"] # assistant = "/usr/share/snips/assistant" # user_dir = "/var/lib/snips" [snips-audio-server] # frame = 256 bind = "kitchen@mqtt" # mike = "Built-in Microphone" # disable_playback = false # disable_capture = false
@Wal
Hat es schön dargestellt. So sollte es klappen. Die Arbeit macht der Server. Du kannst je nach Laune noch den Hotword Server aktivieren, wenn du ein eigenes Hotword für den Satelliten willst. -
Sieht wie meine König aus. Frage ist welche text2command version