NEWS
[Aufruf] Adapter: Snips - Offline Speak2Text
-
Da die Version jetzt stabil läuft und der Grund, warum es beim Satelliten nicht läuft wohl eher in der Installation zu suchen ist, würde doch eine Versionshebung in npm und Github auf 1.0.0 gerechtfertigt erscheinen. Was meinst du?
Dann könnten wir die Version ins Stable repository stellen und die Funktion für die Erkennung von Satelliten im Test-branch testen.
-
Ok, können wir machen.
-
Antrag auf Aufnahme im Repo wäre soweit. Sobald du die Version gehoben hast, schicke ich ab.
-
Am Besten wäre, wen du mal die Debug Ausgabe postest. (mit Code-Tags). Möchte nur sehen, ob dort ASR und NLU ankommt und wenn ja, in welcher Form. `
so?
sam watch:
[22:09:57] Watching on 192.168.90.44:1880 (MQTT)
[22:10:05] [Hotword] detected on site living, for model default
[22:10:05] [Asr] was asked to stop listening on site living
[22:10:05] [Asr] was asked to stop listening on site living
[22:10:05] [Hotword] was asked to toggle itself 'off' on site living
[22:10:05] [Dialogue] session with id 'b95aecaa-131c-4651-844d-28293823a97a' was started on site living
[22:10:05] [AudioServer] was asked to play a wav of 41.1 kB with id '599a6845-afda-4268-8d13-47660eda5632' on site living
[22:10:05] [Hotword] was asked to toggle itself 'off' on site living
[22:10:05] [Dialogue] session with id 'e74f4918-52fb-4eed-9ffc-40355cc301b3' was started on site living
[22:10:05] [AudioServer] was asked to play a wav of 41.1 kB with id 'f71f6e53-ea16-4d20-a889-40c9a0929c0c' on site living
[22:10:05] [AudioServer] finished playing wav with id '599a6845-afda-4268-8d13-47660eda5632'
[22:10:05] [Asr] was asked to listen on site living
[22:10:06] [AudioServer] finished playing wav with id 'f71f6e53-ea16-4d20-a889-40c9a0929c0c'
[22:10:06] [Asr] was asked to listen on site living
[22:10:10] [Asr] captured text "" in 4.0s
[22:10:10] [Asr] was asked to stop listening on site living
[22:10:10] [Asr] captured text "" in 4.0s
[22:10:10] [AudioServer] was asked to play a wav of 93.1 kB with id 'f08b0071-cfac-4b4e-976b-63f41e02cd71' on site living
[22:10:10] [AudioServer] was asked to play a wav of 61.1 kB with id '34524288-4ff7-404c-b309-3fb9570aecc3' on site living
[22:10:11] [AudioServer] finished playing wav with id 'f08b0071-cfac-4b4e-976b-63f41e02cd71'
[22:10:12] [AudioServer] finished playing wav with id '34524288-4ff7-404c-b309-3fb9570aecc3'
[22:10:12] [Dialogue] session with id 'b95aecaa-131c-4651-844d-28293823a97a' was ended on site living. The session was ended because an error happened: Event not supported: Response { waiting: AudioFinishedPayload }, with response: AsrCapture(AsrPayload { text: "", tokens: Some([]), likelihood: 0.0, seconds: 4.0 })
[22:10:12] [Asr] was asked to stop listening on site living
[22:10:12] [Hotword] was asked to toggle itself 'on' on site living
adapter debug:
snips.0 2019-02-08 22:07:45.624 debug stateChange snips.0.hotword.wait: {"val":true,"ack":true,"ts":1549660065621,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1549660055938}
snips.0 2019-02-08 22:07:35.941 debug stateChange snips.0.hotword.detected: {"val":false,"ack":true,"ts":1549660055940,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1549660055940}
snips.0 2019-02-08 22:07:35.940 debug stateChange snips.0.hotword.wait: {"val":true,"ack":true,"ts":1549660055938,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1549660055938}
snips.0 2019-02-08 22:07:28.852 debug stateChange snips.0.hotword.detected: {"val":true,"ack":true,"ts":1549660048850,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1549660048849}
snips.0 2019-02-08 22:07:28.851 debug stateChange snips.0.hotword.wait: {"val":false,"ack":true,"ts":1549660048850,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1549660048845}
snips.0 2019-02-08 22:07:28.850 debug stateChange snips.0.hotword.detected: {"val":true,"ack":true,"ts":1549660048849,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1549660048849}
snips.0 2019-02-08 22:07:28.849 debug stateChange snips.0.hotword.wait: {"val":false,"ack":true,"ts":1549660048845,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1549660048845}
snips.0 2019-02-08 22:07:28.801 debug stateChange snips.0.hotword.detected: {"val":false,"ack":true,"ts":1549660048800,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1549641709759}
snips.0 2019-02-08 22:05:03.994 debug stateChange snips.0.info.connection: {"val":true,"ack":true,"ts":1549659903989,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1549619662167}
snips.0 2019-02-08 22:05:03.973 info Connected to 192.168.90.44
snips.0 2019-02-08 22:05:03.908 info Try to connect to mqtt://192.168.90.44:1880?clientId=0
snips.0 2019-02-08 22:05:03.826 info starting. Version 0.3.1 in C:/ioBroker/node_modules/iobroker.snips, node: v8.12.0
snips.0 2019-02-08 22:05:03.817 debug statesDB connected
snips.0 2019-02-08 22:05:03.800 debug objectDB connected
Edit: die unterschiedlichen Zeiten kommen daher, weil ich den Snips-Server nicht in der Domain habe. Die Snips-Zeit kommt nicht vom NTP, die des ioBrokers schon.
-
Vermutung bestätigt. NLU wird bei dir wohl auf dem Satelliten ausgeführt und nicht auf dem Server. Falls das der Server ist. Wenn es der Satellit war sieht es gut aus. Dann bitte nochmal vom Server.
Kannst du bitte im Forum um den Code noch Code Tags setzen? [ code] Ist einfacher zu lesen
-
Die Auswertung der Sites wäre natürlich auch noch interessant. Dann könnte man evtl. den Snips Geräten Räume zuweisen und diese dann als Standardraum hinterlegen, falls kein Raum gesagt wurde.
Beispiel:
Snips im Wohnzimmer: "Schalte den Fernseher ein"
Snips im Schlafzimmer: "Schalte den Fernseher im Wohnzimmer ein"
Die Frage wäre nur, was passiert, wenn auf zwei Geräten gleichzeitig eingesprochen wird.
Bei dir klappt es mit Satelliten und einer Instanz des Adapters? Könntest du evtl. eine Sam Ausgabe posten, wenn auf zwei Geräten in etwa gleichzeitig eingesprochen wird? `
moin,
ja, ich hab nur 1 Instanz vom Adapter am laufen …. hab leider noch keinen zweiten Satelliten zum Testen.
die Identifizierung der Satelliten dürfte nicht schwer sein, bekommst ja bei MQTT/Hermes des Servers die SiteId des Clients und auch eine SessionId mit
{"siteId":"snipswz.local.net","sessionId":"0c485175-f7a8-416f-99fb-6edef375a338"}
und wenn ich mir eure client.js ansehe
function send2Server(id, state, cn) { if (!client) return; switch (cn) { case 'say': client.publish(id, JSON.stringify({"siteId":"default","text":state,"lang":"de"}), ....
so stellt der kleine Andi sich das vor
edit:
@ unltdnetworx
ich denke die Verarbeitung bei Variante B läuft nur am Server, da ich am Satelliten keinen Assi instaliert habe … wobei da raunzt snips-dialogue dann irgenwas rum
offTop: hab einen Nuc bei einer Büroauflösung vor 2 Jahren bekommen und der macht Proxmox, da läuft schon ewig ein VPN-Server, ein TV-Headend inkl Oscam und nun auch IoBroker drauf. Snips-Server ist am VPN-Server drauf da der extrem gelangweilt ist. Wichtig ist glaub ich eine schnelle Platte (SSD) und RAM. Prozessorlast ist schwindend gering.
-
Die Verarbeitung läuft auf dem Server und genau da greifen wir die Daten von NLU ab. Bei Frank scheint das nicht so zu sein.
-
Die Verarbeitung läuft auf dem Server und genau da greifen wir die Daten von NLU ab. Bei Frank scheint das nicht so zu sein. `
Hatte Frank nicht auch Variante B ??Kenn die Installation von Frank net so genau, aber meine VM hat eine "virtuelle" Soundkarte und würd vermutlich auch als "Satellit" bzw. "Client" laufen.
Hab leider nicht die Hardware da um das zu testen. Ich hab den Snips ohne "Soundkarte" gar nicht installiert bekommen ..
-
Stimmt. Aber ich hab die Vermutung, das da irgendwas noch nicht ganz passt.
Wie is bei dir die Ausgabe von Sam auf dem Server? Kommt da NLU an? Laut Beschreibung sollte es keinen Unterschied machen, ob Variante A oder B. Der Unterschied nur der Hotword-Server.
-
@unltdnetworx sagte in [Aufruf] Adapter: Snips - Offline Speak2Text:
Wie is bei dir die Ausgabe von Sam auf dem Server? Kommt da NLU an?
moin ...
wenn du am Sat "sam watch" verwendest, verbindet er sich mit dem MQTT des Servers
[09:22:59] Watching on proxy.local.net:1883 (MQTT) [09:25:36] [Hotword] detected on site snipswz.local.net, for model default [09:25:36] [Asr] was asked to stop listening on site snipswz.local.net [09:25:36] [Hotword] was asked to toggle itself 'off' on site snipswz.local.net [09:25:36] [Dialogue] session with id '0b243859-6c7c-4b1a-9693-f562d0051927' was started on site snipswz.local.net [09:25:36] [AudioServer] was asked to play a wav of 41.1 kB with id 'dccda3bb-fae7-4ee7-8c5f-5fbfa3037491' on site snipswz.local.net [09:25:37] [AudioServer] finished playing wav with id 'dccda3bb-fae7-4ee7-8c5f-5fbfa3037491' [09:25:37] [Asr] was asked to listen on site snipswz.local.net [09:25:40] [Asr] captured text "schalte im wohnzimmer das licht ab" in 2.0s [09:25:40] [Asr] was asked to stop listening on site snipswz.local.net [09:25:40] [AudioServer] was asked to play a wav of 93.1 kB with id 'e04be862-735b-4a2e-88cf-181cc1982275' on site snipswz.local.net [09:25:41] [AudioServer] finished playing wav with id 'e04be862-735b-4a2e-88cf-181cc1982275' [09:25:41] [Nlu] was asked to parse input "schalte im wohnzimmer das licht ab" [09:25:41] [Nlu] detected intent unltdnetworx:setDevice with probability 0.964 for input "schalte im wohnzimmer das licht ab" Slots -> room -> Wohnzimmer (confidence: 1.000) device -> Licht (confidence: 1.000) command -> false (confidence: 0.632) [09:25:41] [Dialogue] New intent detected unltdnetworx:setDevice with probability 0.964 Slots -> room -> Wohnzimmer (confidence: 1.000) device -> Licht (confidence: 1.000) command -> false (confidence: 0.632) [09:25:41] [Tts] was asked to say "Schalte das Licht im Wohnzimmer aus" [09:25:41] [AudioServer] was asked to play a wav of 68.4 kB with id '6121ce53-be90-4cd5-9710-852d362d9cc0' on site default [09:25:41] [AudioServer] was asked to play a wav of 68.4 kB with id '4b1b1ff5-677d-4013-a09f-2d993bf8a627' on site default [09:25:46] [Dialogue] session with id '0b243859-6c7c-4b1a-9693-f562d0051927' was ended on site snipswz.local.net. The session was ended because one of the component didn't respond in a timely manner [09:25:46] [Asr] was asked to stop listening on site snipswz.local.net [09:25:46] [Hotword] was asked to toggle itself 'on' on site snipswz.local.net
am Sat lauft nur
Connected to device snipswz.local.net OS version ................... Raspbian GNU/Linux 9 (stretch) Installed assistant .......... Not installed Status ....................... Live (no assistant) Service status: snips-analytics .............. 0.60.12 (not running) snips-asr .................... 0.60.12 (not running) snips-audio-server ........... 0.60.12 (running) snips-dialogue ............... 0.60.12 (not running) snips-hotword ................ 0.60.12 (running) snips-nlu .................... 0.60.12 (not running) snips-skill-server ........... 0.60.12 (running) snips-tts .................... 0.60.12 (running)
Skill-Server für die LEDs und ohne TTS funktioniert es auch ...
aber irgendwas murmelt er oben mit "Dialogue" rum, der scheint ihm am Sat ein wenig zu fehlen -> den bekomm ich aber nur gestartet wenn ein Assi am Sat installiert ist. -
@AndiM
Das sieht doch gut aus. Wenn es mit Skills für LED und der Auswertung klappt, ist es denk ich kein Problem, dass Dialog nicht antwortet. Das wird momentan im Adapter ohnehin nicht verwendet.Man sollte Sam aber auch auf den Sateliten hören lassen können. Mit "sam connect", aber der Server interessiert uns ja hier.
@frank70
Bei dir sieht es anders aus, oder?Habe übrigens bei text2command einen Pull-Request eingereicht. Dann wird bei Rollläden nicht mehr "Setze Rollladen ... auf NaN Prozent" zurückgemeldet und man muss beim Schalten von Lichtern in Prozent nicht mehr "an" dazu sagen. Ich hoffe @Bluefox kann sich das mal ansehen. Klasse übrigens die neue Funktion mit dem Erwähnen von Usern
-
@unltdnetworx sagte in [Aufruf] Adapter: Snips - Offline Speak2Text:
@AndiM
Das sieht doch gut aus. Wenn es mit Skills für LED und der Auswertung klappt, ist es denk ich kein Problem, dass Dialog nicht antwortet. Das wird momentan im Adapter ohnehin nicht verwendet.Man sollte Sam aber auch auf den Sateliten hören lassen können. Mit "sam connect", aber der Server interessiert uns ja hier.
war mal frech und hab in der /opt/iobroker/node_modules/iobroker.snips/lib/client.js in der send2server-function bei say das default auf den Sat-Namen geändert -> so wie es sich der kleine Andi vorstellt -> lauft :))
-
@AndiM
Jo, danke für die Meldung. @Wal ist gerade dran Sat-Unterstützung zu implementieren. Die Idee ist momentan, dass Datenpunkte für die Satelliten erzeugt werden und man diesen dann Räume aus den Aufzählungen zuweisen kann. Dann würde man sich, wie weiter oben schon erwähnt, die Raumbezeichnung bei Befehlen im gleichen Raum wie der Satellit sparen können.Also "Schalte das Licht im Wohnzimmer an.", wenn der Satellit im Wohnzimmer steht und zugeordnet ist, dann eben nur "Schalte das Licht an".
-
Auf Github im "testing" Branch eingefügt.
-
@unltdnetworx said in [Aufruf] Adapter: Snips - Offline Speak2Text:
@AndiM
Das sieht doch gut aus. Wenn es mit Skills für LED und der Auswertung klappt, ist es denk ich kein Problem, dass Dialog nicht antwortet. Das wird momentan im Adapter ohnehin nicht verwendet.Man sollte Sam aber auch auf den Sateliten hören lassen können. Mit "sam connect", aber der Server interessiert uns ja hier.
@frank70
Bei dir sieht es anders aus, oder?Habe übrigens bei text2command einen Pull-Request eingereicht. Dann wird bei Rollläden nicht mehr "Setze Rollladen ... auf NaN Prozent" zurückgemeldet und man muss beim Schalten von Lichtern in Prozent nicht mehr "an" dazu sagen. Ich hoffe @Bluefox kann sich das mal ansehen. Klasse übrigens die neue Funktion mit dem Erwähnen von Usern
Ich habe es wohl mit den Services noch immer nicht verstanden.
Der Sattelit ist mit dem Server (.90.44:1880) per MQTT verbunden. Audio ist auf dem Satteliten konfiguriert (living@mqtt)
sinps.toml auf dem Satteliten:[snips-common] bus = "mqtt" mqtt = "192.168.90.44:1880" audio = ["living@mqtt"]
Service status:
snips-analytics .............. 0.60.10 (not running) snips-asr .................... 0.60.10 (running) snips-audio-server ........... 0.60.10 (running) snips-dialogue ............... 0.60.10 (running) snips-hotword ................ 0.60.10 (running) snips-nlu .................... 0.60.10 (running) snips-skill-server ........... 0.60.10 (running) snips-tts .................... 0.60.10 (running)
Mein Snips-Server hat keine virtuelle Soundkarte zugewiesen und folgendes Setup
Service status: snips-analytics .............. 0.60.12 (not running) snips-asr .................... 0.60.12 (running) snips-audio-server ........... 0.60.12 (not running) snips-dialogue ............... 0.60.12 (running) snips-hotword ................ 0.60.12 (running) snips-nlu .................... 0.60.12 (running) snips-skill-server ........... 0.60.12 (not running) snips-tts .................... 0.60.12 (running)
[alt text](image url)
Muss ich auf dem Satteliten den NLU abschalten?
-
Also laut Anleitung bei Snips sind nur die folgenden Server nötig, was auch Sinn macht:
- snips-audio-server
- snips-hotword-server
- snips-skill-server (Opt.) (Bei dir, falls du z.B. die LED beleuchten willst und den Skill von Snips verwendest)
-
Du bist hiernach vorgegangen?
Anleitung auf Snips -
@unltdnetworx
ja. Der Sattelit war ursprünglich als Standalone Gerät konfiguriert. Ich habe dann nach dieser Anleitung die Einstellungen angepasst. Die LEDs steuere ich an.Habe eben nochmal getestet. Wenn ich mit diesen aktiven Diensten teste, kann der Sattelit über den Server mit dem Adapter kommunizieren. Ich kann aber keine injects durchführen. Dazu muss ich den "snips-asr" auf dem Satteliten starten. Wenn dieser auf dem Sattelit gestartet ist funktioniert der Adapter nicht mit "recieve".
Service status: snips-analytics .............. 0.60.10 (not running) snips-asr .................... 0.60.10 (not running) snips-audio-server ........... 0.60.10 (running) snips-dialogue ............... 0.60.10 (not running) snips-hotword ................ 0.60.10 (running) snips-nlu .................... 0.60.10 (not running) snips-skill-server ........... 0.60.10 (running) snips-tts .................... 0.60.10 (running) code_text
-
Die Injects sollen ja auch auf dem Server eingehen. Also alles gut.
-
Ja, aber danach sollten die neu injezierten Worte doch auch auf dem Satteliten erkannt werden.