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

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

Vorheriges Thema - Nächstes Thema

Thyraz

@jowe:
Wenn ich das so umsetze:

Zitat von: Thyraz am 27 August 2018, 16:55:42
Bin gerade am überlegen wie man das am Besten umsetzt.
Man könnte auch versuchen das Ganze etwas flexibler zu gestalten als bei der Konkurrenz.
Nehmen wir an es gäbe ein extra Attribut snipsColors das man einer Lampe mit Farbsteuerung zuweisen kann:

weiß=ct 3000
warmweiß=ct 2700
rot=rgb ff0000
blau=rgb 0000ff
lilablassblau=rgb b7b4ff


würde das ja auch mit Lightscenes funktionieren.

Es muss sich ja nicht um eine Lampe handeln, bei der das Mapping hinzugefügt wird.
Man kann ja auch einer LightScene ein entsprechendes Mapping + snipsName geben.

Im snipsColor Attribut wird ja einfach zu einem Farbname ein set-Kommando zugeordnet.
Wäre dann in etwa so:

rot=scene red
blau=scene blue


Oder man hat ein DOIF bei dem in verschiedenen CMDs mehrere Lampen entsprechen gefärbt werden:


rot=cmd_1
blau=cmd_2


Da kann dann jeder seine Kreativität ausleben und die eigentliche Ansteuerung der Lampen ist losgelöst vom Snips Modul.
Wenn ich auf Dummies stehe, kann ich auch die schalten je nach Farbe danke der Device:Cmd Syntax.


rot=DummyRed:on
blau=DummyBlue:on
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

shilbert

Zitat von: Thyraz am 28 August 2018, 11:30:05
Stimmt, daran hab ich damals gar nicht gedacht.
Da wird immer siteId "default" übertragen.

Vorschläge für die Syntax?
set <snipsDevice> say siteId="schlafzimmer" text="bla bla"
So evtl?

Das klingt nach vernünftiger Syntax.

Roman

Hallo,

ich versuche gerade mit Snips die Lautstärkeregelung meines LG-TV's,
Problem dabei, dass die Lautstärke nicht als Zahl gesetzt werden kann, sondern über FHEM die Fernbedienung simuliert wird.

Die benötigten Befehle wären

set LGTV remoteControl volumeUp, bzw.
set LGTV remoteControl volumeDown


ich kann also keine numerischen Werte übergeben (Bei den Programmen geht das mit set LGTV channel <NUMBER>).
Geht das mit dem Mapping (wenn ja wie? ), oder brauch ich hier einen CustomIntent?

und noch eine Frage zur FHEM-APP auf Snips.
Wenn eine neue Version auf SNIPS bereitgestellt wird, wird diese dann automatisch mit 'sam install assistant' upgedated, oder muss ich vorher die APP in der SNIPS Console löschen und neu hinzufügen ?

Gruß
Roman

Thyraz

Eine gute Frage...

Die Lautstärkeregelung ist an sich nicht dafür konzipiert und ich bin mir auch über die Sinnhaftigkeit noch nicht so ganz sicher.  :P
Vor der Glotze hat man ja meist die Fernbedienung in der der Hand.
Sagt man da wirklich 10x hintereinander "Hey Snips, lauter" statt kurz die Taste gedrückt zu halten bis es passt? ;)

Über einen Workaround bekommt man das aber sicher hin.

Ein Weg wäre einen Dummy "SnipsTvVolume" zu erstellen und im Fernseher-Device dann folgendes als Mapping einzutragen:

SetNumeric:currentVal=SnipsTvVolume:state,part=1,cmd=SnipsTvVolume:dim,minVal=0,maxVal=100,step=100


Wenn du "Fernseher lauter" oder "Fernseher leiser" sagt ändert sich nun der state des Dummies SnipsTvVolume z.B. auf "dim 100" oder "dim 0".
Dadurch, dass wir die Schrittweite bei Änderungen ohne Zahlenangabe auf 100 gesetzt haben, landest du auch immer sicher beim Wert 0 bzw. 100.
Durch minVal und maxVal begrenzen wir den möglichen Wertebereich, womit auch keine grüßeren oder kleineren Zahlen möglich sind.

Der Dummy wird beim Ändern von state dann Events generieren auf die man mit einem Notify (oder DOIF) reagieren kann.
Solange man kein event-on-change-reading gesetzt hat, sollte dies auch bei sich wiederholenden Befehlen in die selbe Richtung passieren (also z.B. mehrmals hintereinander "lauter")

Wenn das Event für state 0 reinkommt sendest du eben volumeDown, bei state 100 dann volumeUp.

Wahrscheinlich musst du zu Beginn einmal set SnipsTvVolume dim 0 ausführen, damit der state einen korrekten Wert hat um über SetNumeric rückgelesen werden zu können.

edit: Ja, man scheint die Apps auf console.snips.ai nicht händisch updaten zu müssen soweit ich das bisher verstanden habe.
Ein sam install assistant sollte die neuste Version bringen.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

RoBra81

Hallo,

Zitat von: Thyraz am 29 August 2018, 09:15:07
... ich bin mir auch über die Sinnhaftigkeit noch nicht so ganz sicher.  :P
Vor der Glotze hat man ja meist die Fernbedienung in der der Hand.
Sagt man da wirklich 10x hintereinander "Hey Snips, lauter" statt kurz die Taste gedrückt zu halten bis es passt? ;)

ich habe in vielen Räumen Deckenlautsprecher die ich mittels Squeezebox-Modul versorge - hier habe ich keine Fernbedienung, sondern schalte über FHEM oder Squeezebox-App - hier wäre eine Lautstärkenänderung (sowie Mediensteuerung ;-)) per Sprache interessant...

Ronny

Thyraz

Mir ging es nicht um Lautstärkesteuerung im allgemeinen, sondern um den Fall wenn man nur per Fernbedienung lauter und leiser Tastendrücke simulieren kann.
Hier sind dann eben keine schnellen Sprünge möglich, oder das gezielte Springen auf eine konkrete Lautstärke.

Squeezebox bietet ja aber einen "volume xx" Befehl sowie ein Reading für die aktuelle Lautstärke, oder?

Mediensteuerung Teil1 folgt "sofort"  :P
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Thyraz

So hier der erste Teil der Mediensteuerung: Der Intent MediaControls.
Als nächstes Update kommt dann noch MediaChannels zur Sender-/Favoritenwahl.

Als erstes habe ich eine Änderung eingeführt, welche auch SetNumeric betrifft, falls type=Lautstärke gesetzt ist.
Update der Doku dazu:
Zitat
Besonderheit bei type=Lautstärke:
Um die Befehle leiser und lauter ohne Angabe eines Gerätes verwenden zu können,
muss das Modul bestimmen welches Ausgabegerät gerade verwendet wird.
Hierfür wird mithilfe des GetOnOff Mappings geprüft welches Gerät mit type=Lautstärke eingeschaltet ist.
Dabei wird zuerst im aktuellen snipsRoom gesucht, dananch im Rest falls kein Treffer erfolgt ist.
Es empfiehlt sich daher bei Verwendung von type=Lautstärke auch immer ein GetOnOff Mapping einzutragen.
Ein Gerätename lauter bzw. Gerätename leiser ist unabhängig dieser Sonderbehandlung natürlich immer möglich.

Beispiel für das Mapping vom neuen Intent MediaControls:
Über weitere sinnvolle Befehle kann man gern diskutieren.

MediaControls:cmdPlay=play,cmdPause=pause,cmdStop=stop,cmdFwd=skipFwd,cmdBack=skipBack


Auch hier wird wie oben beschrieben (bei Nicht-Nennung des Gerätenames) das aktuell laufende Gerät mit Intent MediaControls gesucht.
Die Suche erfolgt wieder mithilfe des GetOnOff Mappings.
Zuerst wird wieder im aktuellen snipsRoom gesucht, danach in den anderen falls kein Treffer erfolgt ist.

Das ermöglicht euch einfach Pause oder nächstes Lied zu sagen.
Ihr könnt aber natürlich auch Geräte und oder Räume gezielt ansprechen.
Zum Beispiel mit Überspringe Lied im Büro oder CD-Player im Bad pausieren

Ihr braucht sowohl das neue Modul, als auch die neue FHEM App:
- Assistent von console.snips.ai herunterladen und installieren (oder über sam install assistant) damit ihr die neuste FHEM App habt.
- Neues Snips Modul von Github einspielen
- Fhem neu starten
- set <snipsDevice> updateModel ausführen
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

RoBra81

Zitat von: Thyraz am 29 August 2018, 10:20:32
Mir ging es nicht um Lautstärkesteuerung im allgemeinen, sondern um den Fall wenn man nur per Fernbedienung lauter und leiser Tastendrücke simulieren kann.
Hier sind dann eben keine schnellen Sprünge möglich, oder das gezielte Springen auf eine konkrete Lautstärke.

Squeezebox bietet ja aber einen "volume xx" Befehl sowie ein Reading für die aktuelle Lautstärke, oder?

Ah, okay, verstehe :-)

kud

Ich glaube Snips mischt sich jetzt zu oft ein.
Abend bei Fernsehen bestimmt 3 - 4 mal.
Vorhin gerade wieder hat sie irgendwas gehört und einen entsprechenden Payload erzeugt.
{"Comand":"vor","input":"vor","intent":"MediaControls","probability":"1","requestType":"voice","sessionId":"5912fa9c-ffae-4a12-b403-3f2128bfceb5","siteId":"default"
Eben schon wieder jedoch ohne Fhem Payload.
Ich schick sie erstmal schlafen...

Thyraz

Wundert mich echt, dass die Hotword-Erkennung bei dir so viele False Positives hat.

Ich hab bis heute noch keine einzige ungewollte Erkennung gehabt.
Dabei steht das PS3 Eye auch sehr nah an den Lautsprechen der Anlage, welche tagsüber oft Radio und Abends den Sound vom Fernseher ausgeben.

Tagsüber ist hier meist auch viel los mit Kids und Co...

Werde mir mal ein Notify auf listening_wohnzimmer machen, das mir eine Nachricht aufs Handy schickt.
Dann bekomme ich mit wenn tagsüber doch mal was auslöst während ich nicht im Haus bin.

Aber meine bessere Hälfte hätte da schon gemeckert wenn das so wäre.
Alexa hatte keinen guten Stand bei uns mit ihren regelmäßigen Fehlalarmen...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

jowe

@kud Dieses Problem habe ich ja auch schon seit Anfang an. Ich habe abends teilweise 5-10 Fehlerkennungen.
Ich habe sowohl mit dem PS3 eye wie auch mit dem Respeaker dieses Problem, es scheint also nicht an der Hardware zu liegen. Ich vermute mittlerweile, dass unsere Raumakustik da rein spielt. Wir haben einen großen Wohn-/Essbereich mit offener Küche, Boden gefliest. Setzt du Snips vielleicht auch in einem großen Raum ein?
Als erste Maßnahme habe ich die Sensitivity auf 0.4 verringert. Dadurch gibt es zwar weniger Fehlalarme, aber ich muss für eine korrekte Erkennung des Hotwords auch relativ nah an meinen Satelliten ran gehen.

Ich denke ich werde als nächstes versuchen, ein eigenes Hotword anzulernen. Evtl. bringt das ja Besserung. Vielleicht ist das ja für dich auch eine Option

shilbert

Das Problem Fehlerkennung hatte ich mit ReSpeaker auch. Ebenso relativ offener Raum. Hotword Sensitivity ist jetzt 0,3 bei mir. Damit ist es fast komplett weg. Ich muss allerdings ebenfalls näher ran ....

Bei personal Hotwords wird sich sicher was tun. Derzeit ist das ja eine der wenigen Einnahmequellen von Snips.

Thyraz

Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

bennebartsch

Hat jemand schonmal SNIPS in Docker zum laufen gebracht? Steige grade auf einen NUC um und würde gerne alles in Container packen :-)
Folgendes Image habe ich gefunden: https://hub.docker.com/r/snipsdocker/platform/
Leider konnte ich bis jetzt keine passende Dokumentation entdecken, beim starten des Containers bekomme ich immer "Couldn't find any assistant".

Thyraz

Hi bennebartsch, konnte auf die Schnelle auch nichts finden.

Habe bei mir auf dem NUC Proxmox laufen, in LXC Containern läuft es problemlos nachdem man die Hürde Audio-Geräte durchreichen genommen hat. ;)
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...