Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - Druckversion +- easyVDR (http://www.easy-vdr.de) +-- Forum: Hardware (http://www.easy-vdr.de/forum-6.html) +--- Forum: Eingabe-Devices (http://www.easy-vdr.de/forum-59.html) +---- Forum: Fernbedienungen und andere Eingabegeräte (http://www.easy-vdr.de/forum-61.html) +---- Thema: Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem (/thread-18666.html) |
Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - chicco3 - 07.10.2019 Hallo zusammen, ich wollte euch mal zeigen wie ich mit snips und fhem eine offline-Sprachsteuerung für VDR und Kodi gebastelt habe. Erstmal ein paar allgemeine Worte zu Snips. Komplett offline ist es nicht. Alles was Snips an Sprache erkennen soll, muss vorher trainiert werden. Das passiert in der Snips-Console / auf dem Snips-Server. Der trainierte Assistent wird dann auf dem Snips-Raspi installiert, ab dann geht es offline. Online bei der Konfiguration, Offline zur Laufzeit. Die Spracherkennung ist gut. Für das Hotword (Hey Snips) gibt es einen Parameter "sensitivity" fürs fine-tuning. Im Zusammenspiel mit dem fhem-Modul ist es super um im smart-home Geräte zu steuern. Es ist aber kein Sprachassistent, der auf alle Fragen eine Antwort hat, so wie es z.B. die Alexa-Werbung immer vorgaukelt. Wobei man sich sowas z.T. zurecht basteln kann, man muss dem Snips nur alle Fragen beibringen und dann die Antworten selbst definieren/programmieren. Ich habe z.B. einfache Abfragen nach Tag und Uhrzeit drin, s.u. Wer schon immer Lust auf Sprachsteuerung hat, aber keine Lust, dass jeder Sprachfetzen einmal über den großen Teich wandert, der soll sich Snips mal näher anschauen. Ich mache damit: - Licht, Heizung und ein paar Funksteckdosen steuern (mehr Geräte habe ich nicht in fhem, aber theoretisch könnte man alles steuern, fhem ist ja sehr flexibel) - ein eigener Intent um Artikel auf meine Einkaufsliste zu setzen - VDR + Kodi Mit folgenden Sprachbefehlen kann ich VDR/Kodi steuern: - VDR einschalten (WOL Paket senden) - VDR ausschalten - Kodi ein/ausschalten (Wechsel zwischen VDR/Kodi) - lauter,leiser,Lautstärke maximal,Ton an/aus,setze die Lautstärke auf {numerischerWert} - Sender hoch/runter - umschalten auf {Sendername} - letzter Sender - aufnehmen (aktuelle Sendung aufnehmen) - in Aufnahmen/Kodi: play,pause,stop,vor/zurück spulen/springen Die Befehle, die als shortcut angelegt sind, müssen auch exakt so gesprochen werden. Bei den anderen Befehlen gehen auch verschiedene Formulierungen, z.B. umschalten auf Sender, schalte um zu Sender; oder VDR einschalten, schalte den VDR ein Ich habe es so gebaut, dass bei Erkennung des Hotwords die Lautstärke von VDR/Kodi auf die Hälfte des aktuellen Werts gesetzt wird und nach dem Sprachbefehl wieder zurück (bzw. auf den neuen Lautstärke-Wert) gesetzt wird benötigte Hardware: - raspi 3 (ältere raspis sind zu schwach für Spracherkennung) - SD Karte - Netzteil - Mikrofon (ich habe das PS3Eye genommen, ansonsten habe ich öfter was vom reSpeaker gelesen) - Lautsprecher (ich habe ganz billige USB-powered genommen, die sind zwar kacke, aber das ist egal weil die Audio-Ausgabe von snips eh nicht so toll ist, aber auch das ist egal weil da eh nur kurze Rückmeldungen kommen) Ich hab das jetzt natürlich für unseren easyVDR gemacht, denke aber es sollte mit jeder VDR-Distri funzen, denn SVDRP sollte doch überall gleich sein. Auf dem VDR habe ich den PChanger aufgebohrt. Der meldet immer an fhem ob gerade VDR oder Kodi läuft. In der program-changer.sh habe ich ganz am Ende diese Zeilen eingefügt. /usr/share/easyvdr/program-changer/program-changer.sh: Code: ##### custom-script starten wenn vorhanden und ausgewähltes Programm als Parameter übergeben Hier auch gleich eine Bitte an euch bzw. direkt an den Bleifuss: kann die Änderung dauerhaft in den PChanger übernommen werden? Dann mus das bei neuen Versionen/Installationen nicht immer nachgearbeitet werden. Und bei den Leuten, die kein Bock auf die Geschichte hier haben, schadet es nicht weil da kein Custom-Script vorhanden ist. Das Custom-Script sieht so aus. IP-Adresse vom fhem-Rechner einsetzen, hier wird in fhem das currentMediaDevice gesetzt /usr/share/easyvdr/program-changer/program-changer-custom.sh: Code: #!/bin/bash Startup-Hook einfügen in /usr/share/vdr/after-vdr-hooks habe ich eine Datei "98_set_fhem" erstellt, Inhalt: Code: #! /bin/bash Shutdown-Hook einfügen in /usr/share/vdr/shutdown-hooks habe ich eine Datei "98_set_fhem" erstellt, Inhalt: Code: #! /bin/bash Snips installieren: Ich habe es installiert nach dem Artikel in der ct 11/2019, aber das hier ist genau das gleiche: https://docs.snips.ai/getting-started/quick-start-raspberry-pi Bei Step 5, den Befehl "sam install assistant" erstmal nicht ausführen. Erstmal die github-Anleitung lesen, die gleich kommt. Hier muss dann in der Snips-Console die fhem-App hinzugefügt werden, dann auf "Deploy Assistant", da kann dann auch der entsprechende Befehl "sam install assistant ..." kopiert werden. Fhem-Installation setze ich jetzt einfach mal vorraus, ansonsten eben das hier: https://wiki.fhem.de/wiki/Raspberry_Pi Snips-Modul in fhem installieren: https://forum.fhem.de/index.php?topic=89548.0 https://github.com/Thyraz/Snips-Fhem Ein Feature, die Shortcuts, hat es leider nicht in die Anleitung geschafft, ist aber hier im Forum dokumentiert: https://forum.fhem.de/index.php/topic,89548.msg835728.html#msg835728 In fhem wird dann folgendes konfiguriert (formatiert für die fhem.cfg, aber der erfahrene fhem-Nutzer weiß natürlich, dass man nicht direkt in der fhem.cfg editieren soll). Code: # currentMediaDevice freigeben, damit es vom VDR aus gesetzt werden kann Ihr müsst die IP-Adressen anpassen, einfach nach "192.168" suchen, habe alle Stellen entsprechend kommentiert. Evtl. müsst ihr den Raumname anpassen, die Attribute room und snipsRoom, bei mir findet alles in der "Wohnküche" statt (auch das notify "listening_wohnkueche" nicht vergessen). Beim VDR-device müsst ihr das Attribut snipsChannels anpassen. Damit man das nicht alles schreiben muss, habe ich ein Script geschrieben, das die channels.conf ausliest, den String zusammenbaut und in einer Textdatei (snipsChannels.txt) ablegt. Aus der Textdatei kann man dann die benötigten Zeilen kopieren und in fhem in der device-Ansicht im Attribut-Editor einfügen. Für jeden Sender wird eine Zeile angelegt in der Form <SENDERNAME>={sendSVDRP("CHAN <SENDERNAME>")} oder <SENDERNAME>={sendSVDRP("CHAN <SENDERNUMMER>")} Der Teil vor dem = ist der gesprochene Sendername, das müsst ihr anpassen. Da muss man z.T. auch kreativ sein, z.B. wird aus ARD "a er de" oder aus RBB wird "er beh beh". Beim Sender ONE ging nur "wann", bei SIXX ging nur "sechs". Bei Zahlen im Sendername muss manchmal ein Leerzeichen dazwischen (sat 1), manchmal nicht (rtl2). Orientiert euch an meinen Beispielen, ansonsten hilft hier nur try and error. Aufruf: Parameter1: Pfad zur channels.conf (erforderlich) Parameter2: num (optional, um in der Ausgabe die Sendernummer zu erhalten) Bsp.: snipsChannels.sh /etc/vdr/channels.conf [num] Script ist im Anhang, Endung txt entfernen. Dann muss eine 99_myUtils.pm angelegt werden. https://wiki.fhem.de/wiki/99_myUtils_anlegen Hier werden folgende Funktionen abgelegt: Code: sub sendSVDRP($;$) { In der Funktion sendSVDRP() muss evtl. der Port angepasst werden. In der Funktion MediaAction() müsst ihr evtl. Anpassungen machen. Bei den cases "skip+" und "skip-" (vor/zurück springen) wird für den VDR per SVDRP die gelbe bzw. grüne Taste gedrückt ("hitk yellow" bzw. "hitk green"). wenn das bei euch anders belegt ist, müsst ihr es anpassen. Bei Kodi wird jeweils 2x "stepforward" bzw. "stepback" ausgeführt, weil mein Kodi so eingestellt ist, dass bei zweimal links/rechts drücken eine Minute gesprungen wird (einmal drücken springt 10 Sekunden). So, ich hoffe ich habe es halbwegs verständlich rüber gebracht und habe nix vergessen. Viel Spass beim nachbauen. Gruß chicco RE: Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - chicco3 - 03.12.2019 So gar kein Interesse an der Geschichte hier? Das hat mich ein wenig überrascht, hätte gedacht bei dem Thema springt der ein oder andere auf. Ab sofort wird es dann aber sowieso uninteressant, denn Snips wurde von Sonos gekauft und die haben beschlossen, am 31.1.2020 die Snips-Console dicht zu machen. https://forum.fhem.de/index.php/topic,89548.msg998778.html#msg998778 Gruß chicco RE: Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - Bleifuss2 - 03.12.2019 Hi Doch Sprachsteuerung wäre schon interessant. Mein Ford kann das komplett offline, sowas hätte ich gerne. Gruß Bleifuss RE: Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - chicco3 - 03.12.2019 liegt deine Betonung auf dem "komplett" ? RE: Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - Bleifuss2 - 03.12.2019 Ja, mit der Methode Wörter anlernen könnte ich auch leben, aber dann müsste das unabhängig sein. Ich habe mir da auch schon einige Sachen angeschaut, aber noch nie was getestet. Bei meinem Auto erstaunt mich das ich einen USB Stick einstecke, dann sage Spiele XY, und egal ob Interpret oder Titel, es wird abgespielt. Und ich rede da nicht perfekt Hochdeutsch. Da ist sicher kein Großrechner verbaut, und Online ist es auch nicht... Gruß Bleifuss RE: Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - chicco3 - 04.12.2019 Bist du ganz sicher das dein Auto nicht online ist? moderne Autos sind doch oft dauer-online ohne das man was dagegen machen kann, Stichwort Telematik, eCall, Multimedia, whatever... Snips ist im Prinzip Wörter anlernen. Wörter und Absichten. Und die Sachen die online trainiert wurden, sind eben Standard-Sätze wie "schalte Gerät x ein/aus" oder "erhöhe/verringer den Wert y von Gerät x" - sowas dürfen die gerne haben, ist ja nichts privates. Die eigentlichen Namen von Geräten und Räumen werden später offline nachtrainiert. Wichtig war mir, dass es zur Laufzeit offline ist. Und es ist definitiv offline, denn der snips-raspi hat im Router den Internetzugang gesperrt. Noch kann man das Snips zusammenbasteln, 2 Monate lang geht es noch. Aber wenn man es dann nicht weiterpflegen kann, ist es wahrscheinlich nicht mehr interessant, das ist dann dein Stichwort Unabhängigkeit. Weiter benutzen mit der aktuellen Konfiguration wird man es aber können. Gruß chicco RE: Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - SurfaceCleanerZ - 04.12.2019 Hi, So weit bin ich noch nicht. Klang sehr interessant! War das nicht das was ct auch mal beschrieben hatte? Mfg Stefan RE: Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - Bleifuss2 - 04.12.2019 Ja mein Auto ist offline Ist nur ein Ford Focus 3 Jahre alt. Ford bezahlt sicher keine Onlineflat für mich. Gruß Bleifuss RE: Offline-Sprachsteuerung für VDR und Kodi mit Snips und Fhem - chicco3 - 04.12.2019 @bleifuss Aber vielleicht bezahlen die eine flat weil sie an deine Telematikdaten ran wollen. Oder weil sie verpflichtet sind ein eCall-System einzubauen. Aber war nur so ein Gedanke, du wirst dein Auto besser kennen als ich. Letztendlich sollte ich beim Thema Auto auch gar nicht mitreden, denn ich habe gar keins @Stefan Ja, war aus der ct 11/2019 Gruß chicco |