NEWS
[Aufruf] Adapter: Snips - Offline Speak2Text
-
Hi Frank,
die gleiche Installation habe ich auch. Wenn ich nur die drei vorgefertigten Einstellungen Alexa, Google oder das dritte (Name fällt mir gerade nicht ein) verwende klappt es auch ganz pasabel und die Installation ist völlig easy. Nur wollte ich z.B. im Standby keine LEDs leuchten habe u.a., damit hatte ich Schwierigkeiten. Bei mir leuchtet z.B. immer eine LED. Wenn ich Snips aufwecke und nichts sage, geht es endlich aus.
Der Skill von Snips direkt funktioniert aktuell in der stable Version mit dem Respeaker 4 nicht. Soll aber in der nächsten Version gehen.
Mal schauen, wenn der Skill von Snips selbst draußen ist. Aber danke für die Anleitung. `
Ich habe das mit den LEDs auch noch nicht ganz durchblickt.
Hier meine derzeitigen Einstellungen:
https://forum.snips.ai/t/snips-led-control/351/122
Wie ist denn deine Meinung zu dem Respeaker Mirkofon?
Ich finde man muss relativ laut sprechen. Ich habe mit den Audio Device Settings etwas rumprobiert, aber nicht wirklich Besserung bemerkt.
Macht es Sinn in ein teures MIC zu investieren?
-
Hi Christian,
von meiner Seite wird es keinen Support für eigene Apps geben, da es meiner Meinung nach nicht zielführend ist, mehrere Apps zu verarbeiten. Ich persönlich würde eher vorschlagen, Vorschläge abzustimmen, Räume etc. auf Wunsch auch zu ergänzen und gemeinsam an einer App zu arbeiten.
Daher auch die Bitte um Vorschläge und Anregungen zu sinnvollen Intents, Slots und Räumen zur Einarbeitung. Dass es besser verarbeitet wird, wenn weniger Räume drin sind, kann ich nicht bestätigen. Bzw. ist mir bisher nicht aufgefallen. Was definitiv kontraproduktiv ist, ist mehrere Apps gleichzeitig auf Snips zu haben. Weil er dann evtl. falsche Intents erkennt. Z.B. statt getNumeric die Rechner App erkennt.
Momentan habe ich diese Intents implementiert:
setNumeric –> Einstellen von Zahlen
setColor --> Einstellen von Farben
setMedia --> Befehle für Play, etc.
setBoolean --> Ein/Aus/Hoch/Runter mit Rückgabe true/false
getStatus --> Abfragen aller Art
Dazu eben entsprechende Slots. Diese werden momentan nur ausgegeben aber nicht verwertet.
Zusätzlich noch Smalltalk als Auffangintent für den Slot de.iobroker.impletive, also für Füllwörter, die man sonst nicht einfügen könnten. Z.B. Guten Morgen, o.ä.
Mein Plan ist z.B. mit Guten Morgen eine Begrüßung und Ansage anstehender Termine, Müllabfuhr, Wetterbericht etc. Ansagen ausgeben zu lassen. `
Hi Michael,habe den Adapter gerade aktualisiert. Wie habt ihr das mit der Snips-App gedacht?
Ich habe aktuell eine Kopie der "published" der iobroker-Snips app mit meinen zusätzlichen Einträgen deployed.
Wie wäre da die geschickteste Vorgehensweise?
-
Hi Frank,
nach den letzten Updates des Snips-Adapters werden die Intents und Slots der ioBroker App jetzt ausgewertet. Die Iobroker-Snips App funktioniert evtl. noch. Aber es werden keine Slots damit ausgewertet.
Meine Meinung wäre, wie bereits erwähnt, sich auf eine einzige App zu einigen und diese in Absprache hier im Forum ggf. um sinnvolle Ergänzungen zu erweitern. Also Intents und Slots, sowie Inhalte dafür (Wörter und Sätze) gerne hier vorschlagen. Ich würde die dann einarbeiten. Um die Umsetzung im Adapter kümmern wir uns natürlich auch.
Wer Vorschläge für weitere Funktionen, z.B. im Adapter hat, auch gerne mal einbringen.
-
Zum Thema Respeaker. Ich bin bei leiser Umgebung zufrieden damit. Wenn z.B. der Fernseher im gleichen Raum läuft, muss ich dich sehr laut rufen. Evtl. wäre ein muten des Tones bei Erkennung des Wakewords ne Lösung. Wurde weiter vorne schon angesprochen.
Habe aber auch noch das Standard "Hey Snips" drin, welches leider ab und zu mal auf die Stimmen im TV reagiert. Muss mal ein eigenes Wakeword einstellen. Evtl. kann ich dann auch die Sensibilität besser einstellen.
Was ich auch ganz deutlich merke, wenn die Mikrofone verdeckt sind. Also wenn etwa irgendwas im weg steht. Das beeinträchtigt die Erkennung schon enorm.
-
Hi Walter,
hab einen Pull-Request für eine neue Version gestellt.
In der Snips App gibt es jetzt auch die beiden neuen Slots:
de.ioBroker.genres
de.ioBroker.interprets
Beides bereits befüllt und zudem alle deutschen Radio- und Fernsehsender (hoffe ich) im Slot Broadcaster vorbelegt.
-
Hi Walter,
hab einen Pull-Request für eine neue Version gestellt. `
erledigt.
Kannst du evtl. mal danach schauen ? "Add Support for Compact mode (js-Controller 2.0 Feature)"
Ist als Issue auf dem Github. Ich komme diese Woche nicht mehr dazu.
-
Hab ich schon gesehen. Muss mal schauen, was man da alles machen muss.
-
Hi Frank,
nach den letzten Updates des Snips-Adapters werden die Intents und Slots der ioBroker App jetzt ausgewertet. Die Iobroker-Snips App funktioniert evtl. noch. Aber es werden keine Slots damit ausgewertet.
Meine Meinung wäre, wie bereits erwähnt, sich auf eine einzige App zu einigen und diese in Absprache hier im Forum ggf. um sinnvolle Ergänzungen zu erweitern. Also Intents und Slots, sowie Inhalte dafür (Wörter und Sätze) gerne hier vorschlagen. Ich würde die dann einarbeiten. Um die Umsetzung im Adapter kümmern wir uns natürlich auch.
Wer Vorschläge für weitere Funktionen, z.B. im Adapter hat, auch gerne mal einbringen. `
Hi Michael,
ich habe leider keine Skills im Bereich Programmierung, daher hier ein kleiner Beitrag von mir zum Thema "Injection"
Auf Basis der Formatierung der Textdokumente (Musik) habe ich ein kleines Blockly erstellt mit dem man die existierenden Injecteion Datenpunkte befüllen kann.
1. Es wird ein Datenpunkt als trigger angelegt
2. Es werden Textfiles eingelesen und jede Zeile als Wert in den jeweiligen Injection-Datenpunkt geschrieben
3. Im Blockly besteht die Möglichkeit Injection Dateien zu aktivieren und zu deaktivieren. (kann man ggf. auch mit Datenpunkten lösen).
Ich habe beim Speichern der Test-Importfiles im notepad++ unter Bearbeiten\Format Zeilenende LF (UNIX) eingestellt.
In den Javascript Aufrufen muss der Pfad zur jeweiligen Datei angepasst werden.
Blockly:
Import Dateien zum Test:
Ist das so zu gebrauchen? Ich habe noch nicht verstanden wo diese Daten in Snips abgelegtabgelegt werden.
Habe in diesem pfad etwas gefunden:
/usr/share/snips/assistant/custom_asr/config.json
-
Zum Thema Respeaker. Ich bin bei leiser Umgebung zufrieden damit. Wenn z.B. der Fernseher im gleichen Raum läuft, muss ich dich sehr laut rufen. Evtl. wäre ein muten des Tones bei Erkennung des Wakewords ne Lösung. Wurde weiter vorne schon angesprochen.
Habe aber auch noch das Standard "Hey Snips" drin, welches leider ab und zu mal auf die Stimmen im TV reagiert. Muss mal ein eigenes Wakeword einstellen. Evtl. kann ich dann auch die Sensibilität besser einstellen.
Was ich auch ganz deutlich merke, wenn die Mikrofone verdeckt sind. Also wenn etwa irgendwas im weg steht. Das beeinträchtigt die Erkennung schon enorm. ` Kann ich bestätigen… Aber auch mit eigenem hot word wird bei mir ab und an die Multimedia gemutet wenn der TV läuft.. . Hab den 4 mic pi hat von ReSpeaker... Überlege auch ne andere Hardware zu testen... Es liegt wohl daran dass dir günstige Variante keinen soundprozessor an Board hat...
Gesendet von meinem CLT-L09 mit Tapatalk
-
Guten Morgen.
Also rein vom kurzen Überfliegen auf dem Handy könnte es funktionieren. Aber zuverlässig sehen kannst du es, wenn du das Einspeisen mit Sam überwachst. Der Befehl lautet "Sam watch".
Beim Einspielen muss pro Wort bzw. pro Inject eine Zeile in Sam auftauchen. Da steht dann auf englisch etwa sowas wie "Aufnahme von 1 Wort in 1 Kategorie angestoßen". Der Satz jetzt mal nur rein vom Sinn her und aus dem Kopf.
Danach müssen zwingend, etwa eine bis wenige Sekunden später noch zwei weitere Zeilen erscheinen, dass der Neustart von zwei Servern? erbeten wurde. Erst dann hat es geklappt.
Ich würde das pro Inject-Gruppe testen. Wenn du z.B. nen Buchstabendreher in der Bezeichnung hast, kommt die erste Zeile nämlich trotzdem. Die Server starten aber nicht neu.
-
Guten Morgen.
Also rein vom kurzen Überfliegen auf dem Handy könnte es funktionieren. Aber zuverlässig sehen kannst du es, wenn du das Einspeisen mit Sam überwachst. Der Befehl lautet "Sam watch".
Beim Einspielen muss pro Wort bzw. pro Inject eine Zeile in Sam auftauchen. Da steht dann auf englisch etwa sowas wie "Aufnahme von 1 Wort in 1 Kategorie angestoßen". Der Satz jetzt mal nur rein vom Sinn her und aus dem Kopf.
Danach müssen zwingend, etwa eine bis wenige Sekunden später noch zwei weitere Zeilen erscheinen, dass der Neustart von zwei Servern? erbeten wurde. Erst dann hat es geklappt.
Ich würde das pro Inject-Gruppe testen. Wenn du z.B. nen Buchstabendreher in der Bezeichnung hast, kommt die erste Zeile nämlich trotzdem. Die Server starten aber nicht neu. `
Morgen,
ja, scheint funktionieren
Test mit der Guppe "color"
sam watch mit einer Zeile:
[10:26:09] Watching on localhost:1885 (MQTT)
[10:26:18] [Injection] an injection of 1 words for 1 entities has been requested
[10:26:24] [Asr] was asked to reload its model
[10:26:24] [Nlu] was asked to reload its engine
sam watch mit 6 Zeilen:
[10:28:28] [Injection] an injection of 1 words for 1 entities has been requested
[10:28:28] [Injection] an injection of 1 words for 1 entities has been requested
[10:28:28] [Injection] an injection of 1 words for 1 entities has been requested
[10:28:28] [Injection] an injection of 1 words for 1 entities has been requested
[10:28:28] [Injection] an injection of 1 words for 1 entities has been requested
[10:28:28] [Injection] an injection of 1 words for 1 entities has been requested
[10:28:43] [Asr] was asked to reload its model
[10:28:43] [Nlu] was asked to reload its engine
[10:28:48] [Asr] was asked to reload its model
[10:28:48] [Nlu] was asked to reload its engine
[10:28:54] [Asr] was asked to reload its model
[10:28:54] [Nlu] was asked to reload its engine
[10:28:59] [Asr] was asked to reload its model
[10:28:59] [Nlu] was asked to reload its engine
[10:29:24] [Asr] was asked to reload its model
[10:29:24] [Nlu] was asked to reload its engine
[10:29:29] [Asr] was asked to reload its model
[10:29:29] [Nlu] was asked to reload its engine
-
Zum Thema Respeaker. Ich bin bei leiser Umgebung zufrieden damit. Wenn z.B. der Fernseher im gleichen Raum läuft, muss ich dich sehr laut rufen. Evtl. wäre ein muten des Tones bei Erkennung des Wakewords ne Lösung. Wurde weiter vorne schon angesprochen.
Habe aber auch noch das Standard "Hey Snips" drin, welches leider ab und zu mal auf die Stimmen im TV reagiert. Muss mal ein eigenes Wakeword einstellen. Evtl. kann ich dann auch die Sensibilität besser einstellen.
Was ich auch ganz deutlich merke, wenn die Mikrofone verdeckt sind. Also wenn etwa irgendwas im weg steht. Das beeinträchtigt die Erkennung schon enorm. ` Kann ich bestätigen… Aber auch mit eigenem hot word wird bei mir ab und an die Multimedia gemutet wenn der TV läuft.. . Hab den 4 mic pi hat von ReSpeaker... Überlege auch ne andere Hardware zu testen... Es liegt wohl daran dass dir günstige Variante keinen soundprozessor an Board hat...
Gesendet von meinem CLT-L09 mit Tapatalk `
so etwas?
http://wiki.seeedstudio.com/ReSpeaker_6 … pberry_Pi/
oder bekommt man so etwas auch an den PI ran?
http://wiki.seeedstudio.com/ReSpeaker_Mic_Array_v2.0/
ja, scheint auch zu funktionieren.
https://www.hackster.io/SeeedStudio/bui ... ray-1030bb
Hier hat sich jemand die Mühe gemacht MICs zu benchmarken:
-
Hallo zusammen,
ich habe den Adapter für den Kompakt-Modus in der zukünftigen JS-Controller Version 2.0.0 angepasst. Soll heißen, dass in Zukunft wesentlich weniger RAM verbraucht werden soll, sofern man das aktiviert. Dadurch wird aber Stabilität eingebüßt. Das hat nur Auswirkungen, wenn später einmal diese Version des JS-Controllers erscheint und man diese Funktion aktiviert. Das Ganze ist schwächere Systeme mit weniger Arbeitsspeicher gedacht, etwa einem Raspberry Pi. Wer es später nicht in diesem Modus betreiben will, ist nach momentanem Plan wohl nicht dazu gezwungen. Nähere Infos für Interessierte gibts im https://forum.iobroker.net/viewtopic.php?f=24&t=20387#p213466.
In meiner Umgebung läuft der Adapter momentan stabil. Ich würde aber darum bitten, mal über GitHub ein Update zu machen und kurz zu berichten, ob noch alles wie gewünscht läuft.
Vielen Dank schon mal.
Bitte kurz den Request annehmen und dann kurz Bescheid geben, dass alle testen können.
-
Bitte kurz den Request annehmen und dann kurz Bescheid geben, dass alle testen können. `
Ich habe einen testing-Branch erstellt, kannst du für diesen Branch evtl. den Pull request senden ?
Ich möchte erstmal ungern ohne Testzeitraum wechseln :? .
Oder was denkst du ?
-
Da hast du grundsätzlich Recht. Nur sind es keine wirklich großen Änderungen und ich bin mir nicht sicher, ob alle wissen, wie sie einen Branch wechseln. :?:
Bin grad unterwegs. Werde nachher pushen.
-
erledigt
Ok, danke für deine Arbeit.
-
Guten Morgen.
Also rein vom kurzen Überfliegen auf dem Handy könnte es funktionieren. Aber zuverlässig sehen kannst du es, wenn du das Einspeisen mit Sam überwachst. Der Befehl lautet "Sam watch".
Beim Einspielen muss pro Wort bzw. pro Inject eine Zeile in Sam auftauchen. Da steht dann auf englisch etwa sowas wie "Aufnahme von 1 Wort in 1 Kategorie angestoßen". Der Satz jetzt mal nur rein vom Sinn her und aus dem Kopf.
Danach müssen zwingend, etwa eine bis wenige Sekunden später noch zwei weitere Zeilen erscheinen, dass der Neustart von zwei Servern? erbeten wurde. Erst dann hat es geklappt.
Ich würde das pro Inject-Gruppe testen. Wenn du z.B. nen Buchstabendreher in der Bezeichnung hast, kommt die erste Zeile nämlich trotzdem. Die Server starten aber nicht neu. `
Hi Michael,
habe einige injects getestet. Es scheint zu funktionieren. Gibt es eine Möglichkeit existierende injects per sam cmd auszugeben? Mit sam -h habe ich nichts gesehen.
Hier noch eine Frage zum Adapter:
Sollten die Worte wenn ich sie in der Spracheingabe verwende nicht auch im jeweiligen Datenpunkt unter snips.0.receive.slotxxx angezeigt werden?
Ich sehe nur werte im feld snips.0.recieve.text und snips.0.recieve.compiledText
Erste Info zum Thema Mirkrofon:
Ich habe eben eine PS3 EYE webcam an den PI angeschlossen und verwende das MIC der webcam. Die Audioqualität ist um einiges besser als beim Respeaker (sam test microphone) . Dennoch muss ich immer noch in Richtung des MICs sprechen.
-
Hi Frank,
ich kenne keine Möglichkeit die Inhalte/bereits angelernte Slots mittels SAM auszulesen. Gerade bei Farben oder den Sendern wäre das eine ziemlich lange Liste. Du kannst dir aber die App auf console.snips.com forken, also einen Ableger erstellen. Dann werden alle Slots mitkopiert und du kannst sehen, was von Anfang an schon dabei ist. Gerne kannst du hier eine Liste anhängen, wenn du fehlende Wörter oder nicht erkannte Sätze hast, dann füge ich die noch hinzu.
Zu den Slot-Datenpunkten:
Genau richtig erkannt, die sollten befüllt werden. Ich denke, das passiert auch, jedoch verfallen die Werte momentan nach 10 Sekunden. Die Idee dahinter war, dass die Datenpunkte später mal ausgewertet werden sollen und dann keine alten Werte verwendet werden dürfen.
Beispiel: schalte das Licht auf 50 Prozent im Wohnzimmer. –> Licht, 50, %, Wohnzimmer
Neuer Satz schlecht erkannt o.ä.: schalte das Licht auf 80 Prozent in nicht erkannter Raum. Dann würde das Licht im Wohnzimmer geändert.
Schau am Besten direkt beim einsprechen mal auf die Objekte. Da sollten die Datenpunkte kurz gefüllt sein und nach 10 Sekunden wieder verfallen.
-
Hi Michael,
leider werden bei mir keine Werte in den slots angezeigt. Hier die logs:
sam watch:
__[17:53:56] Watching on localhost:1885 (MQTT)
[17:53:59] [Hotword] detected on site default, for model hey_snips
[17:53:59] [Asr] was asked to stop listening on site default
[17:53:59] [Hotword] was asked to toggle itself 'off' on site default
[17:53:59] [Dialogue] session with id '501b9e08-bf97-4ae5-8669-6c2a56285c20' was started on site default
[17:53:59] [Asr] was asked to listen on site default
[17:54:02] [Asr] captured text "big fm" in 2.0s
[17:54:02] [Asr] was asked to stop listening on site default
[17:54:02] [Nlu] was asked to parse input "big fm"
[17:54:02] [Nlu] detected intent manalishi:setMedia with probability 0.986 for input "big fm"
Slots ->
broadcast -> big fm (confidence: 0.864)
[17:54:02] [Dialogue] New intent detected manalishi:setMedia with probability 0.986
Slots ->
broadcast -> big fm (confidence: 0.864)__ Snips Adapter:
__snips.0 2019-01-22 17:51:31.015 info big fm
snips.0 2019-01-22 17:51:28.093 debug stateChange snips.0.hotword.detected: {"val":false,"ack":true,"ts":1548175888091,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548175888091}
snips.0 2019-01-22 17:51:28.093 debug stateChange snips.0.hotword.wait: {"val":false,"ack":true,"ts":1548175888090,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548175888090}
snips.0 2019-01-22 17:51:28.030 debug stateChange snips.0.hotword.detected: {"val":true,"ack":true,"ts":1548175888028,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548175888028}
snips.0 2019-01-22 17:45:57.451 debug stateChange snips.0.hotword.wait: {"val":true,"ack":true,"ts":1548175557448,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548175557448}
snips.0 2019-01-22 17:45:51.831 debug stateChange snips.0.receive.text: {"val":"h er drei","ack":false,"ts":1548175551827,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548175551827}
snips.0 2019-01-22 17:45:51.828 debug stateChange snips.0.receive.compiledText: {"val":"h er drei","ack":false,"ts":1548175551825,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548175551825}__
Logfile Auszug von einem vorherigen Aufruf:
__2019-01-22 17:40:41.429 - [34mdebug[39m: snips.0 stateChange snips.0.hotword.wait: {"val":true,"ack":true,"ts":1548175241427,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548175241427}
2019-01-22 17:40:43.452 - [34mdebug[39m: snips.0 stateChange snips.0.receive.slotTime: {"val":null,"ack":false,"ts":1548175243450,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548175243450}
2019-01-22 17:40:43.454 - [34mdebug[39m: snips.0 stateChange snips.0.receive.slotDuration: {"val":null,"ack":false,"ts":1548175243451,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1547988345850}
2019-01-22 17:40:43.454 - [34mdebug[39m: snips.0 stateChange snips.0.receive.slotStatus: {"val":null,"ack":false,"ts":1548175243451,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548144597260}
2019-01-22 17:40:43.455 - [34mdebug[39m: snips.0 stateChange snips.0.receive.slotRoom: {"val":null,"ack":false,"ts":1548175243451,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548174657387}
2019-01-22 17:40:43.455 - [34mdebug[39m: snips.0 stateChange snips.0.receive.slotDevice: {"val":null,"ack":false,"ts":1548175243451,"q":0,"from":"system.adapter.snips.0","user":"system.user.admin","lc":1548144597261}[/i]__ _Ich kann hier leider nichts Konkretes ableiten. Auf console.snips.ai habe ich die iOBroker App in eine leere App hinzugefügt und dann direkt deployed. Macht es sinn den Adapter neu zu installieren oder siehst du hier einen möglichen Fehler?
Es scheint ein Problem mit meinen importieren Werten für die Slots zu geben. Wenn ich die Werte manuell eintrage, werden die Werte im jeweiligen Slot kurz angezeigt. ….wie von dir beschrieben._
-
Hi Frank.
Du hast nicht meinen Adapter installiert oder zusätzlich einen anderen. Es wird momentan nur der Adapter ioBroker von unltdnetworx verarbeitet. Snips erkennt aber setMedia von manalishi. Somit kann es nicht funktionieren. Sry.
Ich update immer über "Sam update-assistant" und habe im Assistenten unter console.Snips.ai nur die ioBroker App installiert. Ich glaube aber, dass er dabei alte Skills und Apps in den Ordnern belässt und nicht bereinigt. Habe diese dann manuell gelöscht. Die Pfade weiß ich leider nicht mehr.