NEWS
[Aufruf] Adapter: Snips - Offline Speak2Text
-
@ unltdnetworx,
in deinem Assistenten auf snips.ai gibt es die Slots genres, interprets u.s.w nicht, habe mir das gerade angeschaut. Da ich das noch nicht nutze, ist mir das noch nicht aufgefallen.
AndiM hat da sehr gute Infos gesendet:
Feb 1 09:27:31 raspberrypi snips-injection[1055]: -> caused by: Entity de.iobroker.genres doesn't exist. The entities available in the assistant are: ["de.iobroker.colors", "de.iobroker.boolean", "de.iobroker.devices", "snips/datetime", "de.iobroker.broadcaster", "snips/duration", "de.iobroker.genre", "de.iobroker.expletive", "de.iobroker.interpret", "snips/number", "de.iobroker.rooms", "de.iobroker.unit", "de.iobroker.mediacommands"]
-
Das ist sehr interessant. Schau ich mir später an. Ich benutze den ja auch. Mysteriös. :?:
-
Ich bin es jetzt schon mehrfach durchgegangen und habe alle Slots überprüft. Alles stimmt eigentlich. Schau mir das morgen nochmal genauer an und mach mir einen zusätzlichen Account um es auch nachvollziehen zu können.
Edit:
Okay, nochmal mit einem Testaccount überprüft. Ihr habt Recht (hab ich auch nicht dran gezweifelt), mir ist nur schleierhaft warum. Es sind bei mir sogar alle Slots in Singular beim Testaccount. Was auch richtiger wäre für den Begriff Slot, also nur 1 Wert.
@Wal: Ich baue das am WE im Adapter wieder um auf Singular. Sind ja nur die paar Slotnamen. Außer du kommst vorher dazu.
Für den Adapter sind dann folgende Slots verfügbar: (für injects)
de.iobroker.broadcaster
de.iobroker.color
de.iobroker.device
de.iobroker.expletive
de.iobroker.genre
de.iobroker.interpret
de.iobroker.room
-
Snips App nochmal jeden Slot auf Singular umgebaut und in jedem Intent extra nochmal angeklickt. Jetzt sollte es überall Singular sein.
Sobald der Adapter umgebaut ist wird nachberichtet. Dann bitte Snips und ioBroker nochmal updaten.
-
Hallo Michael,
ich habe soeben ein 2. Snips Gerät gebaut. Welche Konfiguration empfiehlst du in Bezug auf den Snips Adapter?
2 Snips Adapter Instanzen installieren und die Geräte parallel betreiben.
Die Snips Geräte im Master-Satellite Prinzip mit einer Adapter Instanz betreiben.
https://docs.snips.ai/articles/raspberrypi/satellites
Ich habe noch eine "Off-Topic" Frage. Da du Erfahrung mit ioBroker Adaptern hast will ich sie dennoch direkt los werden.
Ich habe eine KFZ-Nummernschilderkennung mit ALPR gebaut. Die erkannten Nummernschilder werden von dem ALPR Server per HTTP POST übertragen. Mangels Programmierkenntnissen habe ich einen Node Server dazwischengeschaltet, der den POST (JSON-Format) einliest und Datenpunkte per MQTT im ioBroker beschreibt. Der ALPR Agent sendet jede Minute einen Heartbeat. Ansonsten sendet er nur wenn ein Nummernschild erkannt wird. Ist das was für einen ioBroker Adapter?
-
Hallo Frank,
in Sachen Snips würde ich definitv auf die Satelliten-Lösung setzen. Wird bei mir auch demnächst passieren. Dazu reicht dann ja schon ein Raspberry Pi Zero und ein kleineres Mikro, da der Satellit nur die Aufnahme und Ausgabe machen muss. Das spart Performance und du musst die Apps und Skills nur einmal installieren, auf dem Hauptgerät. Hatte sogar schon überlegt, mein Hauptgerät auf den Server des ioBroker (Docker auf Synology) zu verlagern und mein derzeitiges Hauptgerät als Satellit einzurichten. Mal schauen wie das Thema weitergeht.
Bzgl. der Kennzeichenerfassung würde ich einen Thread eröffnen, ob daran Interesse besteht. Könnten bestimmt gut Ideen aufkommen. Es gibt ja schon im Entwicklungsbereich eine ähnliche Umfrage: "[UMFRAGE] Besteht Interesse an einem Octoprint Adapter". Wenn Interesse besteht, ist eine Vereinfachung mittels Adapter bestimmt nicht schlecht.
-
Hallo Walter,
hab einen Pull-Request gestellt. Bei mir funktioniert es jetzt alles in Singular.
-
Hallo zusammen,
mein Name ist Felix und ich habe heute meinen Snips.ai aufgesetzt.
Als Hardware nutze ich einen Pi3B sowie ein Matrix Voice.
Soweit läuft alles ganz gut und ich kann auch schon Lichter schalten oder Zonenreinigungen starten.
Ein Problem habe ich aber noch, wenn der gute mich mal nicht versteht brabbelt er die 5 mal hintereinander Räume ohne das ich etwas machen kann.
Und eine Frage habe ich auch. Wie kann ich z.B. aus einen Satz eine Zahl extrahieren und diese dann in den Datenpunkt schreiben.
Hintergrund ist folgender, ich will Snips sagen er soll die Küche X mal reiningen. Einmal ist kein Problem da ich ja nur die Koordinaten in den entsprechenden Datenpunkt schreiben muss.
Ich würde gerne sagen Snips setze Reinigungsdurchgänge auf zwei und er soll die zahl extrahieren. Geht das? Oder wie habt ihr solche dinge gelöst?
Wie dimmt ihr z.B. Lichter auf x%?
Vielen dank für eure Hilfe!
-
Hallo Walter,
hab einen Pull-Request gestellt. Bei mir funktioniert es jetzt alles in Singular. `
erledigt.
-
Hallo Hanni,
das mit den Räumen ist komisch. Kann es sein, dass du injects gemacht hast (neue Wörter angelernt) und die nicht einzeln, sondern mit Kommata getrennt eingeben hast? Man muss defintiv jedes Wort im richtigen Slot extra anlernen.
Zahlen sollten eigentlich erkannt und in echte Zahlen konvertiert werden. z.B. zwei –> 2. Kannst du mal einen Beispielsatz oder Sätze angeben, welche du verwenden willst. Dann schau ich nach, ob es den richtigen Intent verwendet und pflege zur Not noch ein.
Dimmen geht z.B. über den text2command Adapter. Momentan muss man aber "an" dazu sagen. Also z.B. "Schalte das Licht in der Küche auf 50% an".
-
Hallo Hanni,
das mit den Räumen ist komisch. Kann es sein, dass du injects gemacht hast (neue Wörter angelernt) und die nicht einzeln, sondern mit Kommata getrennt eingeben hast? Man muss defintiv jedes Wort im richtigen Slot extra anlernen.
Zahlen sollten eigentlich erkannt und in echte Zahlen konvertiert werden. z.B. zwei –> 2. Kannst du mal einen Beispielsatz oder Sätze angeben, welche du verwenden willst. Dann schau ich nach, ob es den richtigen Intent verwendet und pflege zur Not noch ein.
Dimmen geht z.B. über den text2command Adapter. Momentan muss man aber "an" dazu sagen. Also z.B. "Schalte das Licht in der Küche auf 50% an". `
Hallo,
also ich bin durch deinen Kommentar schonmal einen Schritt weiter gekommen. Zumindest im verstehen wie alles Funktioniert.
Ich vermute das der Satz als ganzes in "Received text" und der Adapter schlüsselt den Satz dann auf oder?
Leider funktioniert das nicht. Ich bekomme immer nur in "received text" und in "text" das selbe angezeigt, alle anderen felder bleiben leer!
Ich hab die IO Broker app aber auch geforked da Snips viele dinge dich ich gesagt habe nicht verstanden hat. Kann es daran liegen?
Habe hier den nur Stall genommen das er nicht anfängt einen Raum zu saugen während ich teste.
Also ich will z.B. sagen . "Snips reinige das Büro drei mal"
Mein Sauger heist Olga deswegen soll er eben auch reagieren wenn ich sage: "Snips schicke Olga nach Hause"
Und dann waren da noch ein paar andere Worte die er nicht verstanden hat.
Danke
17844_snips2.jpg -
Die Felder bleiben leer, weil du nicht mit dem iobroker Assistenten von Michael arbeitest, sondern mit dem ioBroker-Snips Assistenten von Equilora
-
Hallo Gemeinde,
irgendwie blick ich hier nicht mehr so wirklich durch.
Gibt es hier 2 parallele Entwicklungen, die nicht miteinander können? Wenn ja, kann das mal einer aufdröseln wer mit wem spielt und evtl. wo die Unterschiede sind.
Hab den Thread komplett gelesen, aber so ganz komm ich nicht mit.
-
Nein, gibt es nicht. Du musst nur die readme des Adapters lesen. Mit den anderen Assistenten kann man auch arbeiten, aber nicht mit den Slots.
-
@Wal:Die Felder bleiben leer, weil du nicht mit dem iobroker Assistenten von Michael arbeitest, sondern mit dem ioBroker-Snips Assistenten von Equilora `
Hallo Vielen Dank für deine Antwort. Ich habe das readme des Adapters auch gelesen und bin mir sicher das ich gestern bei den Apps nur den IoBroker-Snips gefunden habe. Naja seis drum ich werde gleich mal testen wie das mit dem anderen läuft.
Vielleicht im Readme das Symbol der App mit aufnehmen? Dann würde man sofort merken das es die falsche app ist.
Habt ihr dann eigentlich nur die IObroker App auf den Snips laufen oder auch noch andere Sachen wie "Wetter" oder "Bring"?
-
Ich habe ausschließlich die ioBroker App laufen. Den Rest lasse ich mir mittels ioBroker zurückgeben. z.B. Wetter mit der WeatherUnderground. Wenn ich z.B. "Gute Nacht" zu Snips sage, dann macht er mit alles im Wohnzimmer aus, sagt mir evtl. ob der Müll morgen abgeholt wird und eben auch die Wettervorhersage.
Wenn zu viel auf Snips läuft, dann erkennt er evtl. die falschen Intents und ioBorker geht leer aus.
-
Hallo Frank,
in Sachen Snips würde ich definitv auf die Satelliten-Lösung setzen. Wird bei mir auch demnächst passieren. Dazu reicht dann ja schon ein Raspberry Pi Zero und ein kleineres Mikro, da der Satellit nur die Aufnahme und Ausgabe machen muss. Das spart Performance und du musst die Apps und Skills nur einmal installieren, auf dem Hauptgerät. Hatte sogar schon überlegt, mein Hauptgerät auf den Server des ioBroker (Docker auf Synology) zu verlagern und mein derzeitiges Hauptgerät als Satellit einzurichten. Mal schauen wie das Thema weitergeht.
Bzgl. der Kennzeichenerfassung würde ich einen Thread eröffnen, ob daran Interesse besteht. Könnten bestimmt gut Ideen aufkommen. Es gibt ja schon im Entwicklungsbereich eine ähnliche Umfrage: "[UMFRAGE] Besteht Interesse an einem Octoprint Adapter". Wenn Interesse besteht, ist eine Vereinfachung mittels Adapter bestimmt nicht schlecht. `
Hallo,
ich bekomme die Satteliten Konfig nicht an Laufen. Kennt jemand die Meldung : "error happened: Event not supported: Response { waiting: Either<"AsrPartialPayload","AsrPayload"> "
…..oder sieht einen Fehler in meine Konfiguration?
Hier die Master Konfig:
[snips-common]
bus = "mqtt"
mqtt = "127.0.0.1:1885"
audio = ["+@mqtt"]
assistant = "/usr/share/snips/assistant"
user_dir = "/var/lib/snips"
[snips-audio-server]
bind = "kitchen@mqtt"
[snips-hotword]
audio = ["kitchen@mqtt"]
Hier die Slave Konfig:
[snips-common]
bus = "mqtt"
mqtt = "192.168.xxx.xxx:1885"
audio = ["+@mqtt"]
assistant = "/usr/share/snips/assistant"
user_dir = "/var/lib/snips"
[snips-audio-server]
bind = "kitchen@mqtt"
[snips-hotword]
model = "/usr/share/snips/hotword"
audio = ["kitchen@mqtt"]
hier sam watch vom master:
[18:59:08] Watching on 127.0.0.1:1885 (MQTT)
[18:59:15] [Asr] was asked to reload its model
[18:59:16] [Nlu] was asked to reload its engine
[18:59:25] [Hotword] detected on site kitchen, for model default
[18:59:25] [Asr] was asked to stop listening on site kitchen
[18:59:26] [Hotword] was asked to toggle itself 'off' on site kitchen
[18:59:26] [Dialogue] session with id '1dd82bc2-87b0-43bd-8d4e-4f1811211405' was started on site kitchen
[18:59:26] [AudioServer] was asked to play a wav of 41.1 kB with id '449f2242-3287-4615-a594-e939f852c090' on site kitchen
[18:59:26] [AudioServer] finished playing wav with id '449f2242-3287-4615-a594-e939f852c090'
[18:59:26] [Asr] was asked to listen on site kitchen
[18:59:26] [AudioServer] finished playing wav with id '449f2242-3287-4615-a594-e939f852c090'
[18:59:26] [AudioServer] was asked to play a wav of 61.1 kB with id 'db10ae50-3dbd-437f-bd5b-858b7992948e' on site kitchen
[18:59:27] [AudioServer] finished playing wav with id 'db10ae50-3dbd-437f-bd5b-858b7992948e'
[18:59:27] [Dialogue] session with id '1dd82bc2-87b0-43bd-8d4e-4f1811211405' was ended on site kitchen. The session was ended because an error happened: Event not supported: Response { waiting: Either<"AsrPartialPayload","AsrPayload"> }, with response: AudioPlayFinished(AudioFinishedPayload)
[18:59:27] [Asr] was asked to stop listening on site kitchen
[18:59:27] [Hotword] was asked to toggle itself 'on' on site kitchen
[18:59:27] [AudioServer] finished playing wav with id 'db10ae50-3dbd-437f-bd5b-858b7992948e'
[18:59:31] [Asr] captured text "" in 4.0s
[18:59:33] [Asr] was asked to reload its model
[18:59:33] [Nlu] was asked to reload its engine
[18:59:33] [Asr] captured text "" in 7.0s
[19:00:09] [Hotword] detected on site kitchen, for model default
[19:00:09] [Asr] was asked to stop listening on site kitchen
[19:00:09] [Hotword] was asked to toggle itself 'off' on site kitchen
[19:00:09] [Dialogue] session with id '96bc20eb-3431-4721-9114-754197c31bc3' was started on site kitchen
[19:00:10] [AudioServer] was asked to play a wav of 41.1 kB with id '4f7516fc-73e6-432e-94e6-4081bb3f84ce' on site kitchen
[19:00:10] [AudioServer] finished playing wav with id '4f7516fc-73e6-432e-94e6-4081bb3f84ce'
[19:00:10] [Asr] was asked to listen on site kitchen
[19:00:10] [AudioServer] finished playing wav with id '4f7516fc-73e6-432e-94e6-4081bb3f84ce'
[19:00:10] [AudioServer] was asked to play a wav of 61.1 kB with id '986d9d5b-0027-419f-b64d-4bd3712d8e66' on site kitchen
[19:00:11] [AudioServer] finished playing wav with id '986d9d5b-0027-419f-b64d-4bd3712d8e66'
[19:00:11] [Dialogue] session with id '96bc20eb-3431-4721-9114-754197c31bc3' was ended on site kitchen. The session was ended because an error happened: Event not supported: Response { waiting: Either<"AsrPartialPayload","AsrPayload"> }, with response: AudioPlayFinished(AudioFinishedPayload)
"mein Hauptgerät auf den Server des ioBroker (Docker auf Synology) zu verlagern und mein derzeitiges Hauptgerät als Satellit einzurichten"
Ich glaube das mache ich auch erst mal als VM. dann kann ich zumindest mal Snapshots vom Master machen und muss nicht ständig die SD Karte als .img sichern. Mit den Synology Geräten habe ich die Erfahrung gemacht, dass wenn die cpu zu schwach ist und zu viele Apps parallel laufen, manche Ding ins Stocken geraten. Mit Docker auf Synology habe ich aber nicht viel Erfahrung.
-
Hallo zusammen,
eine kleine Neuerung, die den Adapter aber nicht direkt betrifft.
Nachdem ich mit Felix (Hanni1312) bzgl. eines neuen Intents zur Steuerung von Staubsaugern gesprochen habe, habe ich mir überlegt, dass man ja setBoolean nicht unbedingt braucht. Ich habe den Intent setBoolean daher umgebaut auf setDevice. Damit lassen sich jetzt nach wie vor true/false-Werte steuern, z.B. "Schalte den Fernseher an/aus", aber eben auch andere Werte, z.B. "Sauge die Zone Wohnzimmer", "Fahre den Staubsauger in die Garage", "Lade den Staubsauger" oder "Mähe den Rasen".
Felix hat speziell für die Zonenreinigung von Staubsaugern ein Skript geschrieben und stellt dieses evtl. hier kurz vor incl. Export. Die rückgemeldeten Werte sind übrigens jetzt "clean" für saugen, "move" für fahren, "charge" für laden oder "mow" für mähen.
Ich hoffe das ist einigermaßen verständlich und beim Updaten der App für den Assistenten klappt alles. Beim meinem Testaccount wurden alle Slots einwandfrei übernommen.
-
Welche Version der Konfiguration in der Anleitung hast du denn verwendet? A oder B. Sieht nach B aus.
Welche Hardware verwendest du denn? Variante A würde weniger Leistung brauchen. Das ist zwar nicht der Grund, aber zum Nachvollziehen wäre es nicht schlecht. Kitchen ist dein Master-Gerät, oder?
-
Ja, Kitchen ist der Master. Ich habe 2 baugleiche PI3 mit dem 6MIC RESpeaker. Ich habe beide Varianten versucht. Die gepostete Konfig ist von der Variante B.
Ich habe mich gestern an einem virtualisierten Snips Server (Master) versucht. Raspbian auf einer VM. Lief straight forward bei der Installation. Beim Aufruf von sam status kam die Meldung "Snips voice control not installed". Benötigt bei der Variante B der Master eine Soundkarte als HW passthrough?
Habe mir das mit dem Docker auch angesehen. Ich wollte dann alternativ das mit einer XPEnology VM 6.1.2 und Docker probieren. Habe ich das richtig verstanden, dass Snips Docker erst kompiliert werden muss?