snips.ai #2
Ihr habt den letzten Post gelesen und habt jetzt richtig Bock auf ein Projekt mit snips? In diesem Post fasse ich mal kurz zusammen, wie man damit schnell zum Erfolg kommt.
Einkaufsliste
- Raspberry Pi 3B+ (ggf. in so einem Rundum-Sorglos-Paket mit Netzteil und SD-Karte)
- Respeaker 2-Mic oder 4-Mic
- Lautsprecher (oder Kopfhörer zum Testen) mit normaler Klinke
Einrichtung
- Raspbian Lite-Image laden und mit Etcher auf die SD-Karte pressen
- SSH aktivieren und WLAN-Konfiguration anlegen
- Kernelextensions für die Mikrofone installieren
- snips Getting Started Guide befolgen
Ich würde ja gerne noch mehr schreiben, aber das wars auch schon. Wenn alles geklappt hat, könnt ihr euch nun in der Snips Console im Browser euren Voice Assistant zusammenstellen und mit ein paar der im Store vorhandenen „Apps“ ausrüsten, oder anfangen einen eigenen zu bauen.
Eigene Befehle
Dazu legt ihr einfach eine neue App an und fügt ein paar Intents hinzu. Bei einem Timer wären das z.B. „Timer starten“ und „Timer stoppen“. Für jeden Intent könnt ihr Sätze festlegen, bei denen er gestartet wird. Diese können sogar Slots enhalten, also quasi Funktionsparameter. Aus „Timer für Nudeln auf 8 Minuten“ erkennt er, wenn man es konfiguriert, automatisch, dass der Name des Timers „Nudeln“ sein soll und der Intervall „8 Minuten“. Schlau!
Jedem Intent kann man nun Actions hinzufügen. Das ist entweder ein ganzes Github-Repo, irgendwas mit Home Assistant, zur Steuerung von Lampen und Kram, oder ganz einfach: ein kleines Python-Skript, was auch direkt im Browser editiert werden kann.
Ist alles eingerichtet, kann der Assistant auf dem Raspberry Pi mit sam update-assistant
aktualisiert werden. Natürlich ist das fürs Debuggen von Python-Skripten ziemlich mühselig und dumm — zum Glück kann man auch einfach die Files in /var/lib/snips/skills
editieren, danach muss man allerdings einmal den snips-skill-server
neustarten (systemctl snips-skill-server restart
)
Insgesamt lohnt es sich sicher auch, einen genaueren Blick auf MQTT zu werfen, im Home Automation-Bereich scheint viel damit zu laufen, und wie gesagt, baut gesamte snips-Architektur darauf auf.
Ich werde jetzt jedenfalls erstmal meinen Timer zu Ende bauen und schaue danach mal, worauf ich als nächstes Lust habe. Vielleicht stellt sich auch noch heraus, dass am Ende doch nicht alles so toll funktioniert, wie bisher gedacht, wer weiß!
Achja, eins noch, die Stimme, mit der snips spricht, ist ziemlich mittelmäßig. Da alle Komponenten jedoch leicht austauschbar sind, gibt es natürlich auch schon einige Alternativen, die mir aber leider alle nicht so gut gefallen, denn sie heißen Alexa und Google Home, also, d.h. über irgendwelche APIs wird doch wieder Amazon und Google angerufen. Vielleicht nicht ganz so schlimm, wenn sie nur Sätze bekommen, die sie synthetisieren sollen, aber das möchte ich eigentlich trotzdem nicht. Es müsste doch noch eine vernünftige Text-to-Speech-Engine auf dem Markt geben, die nicht in der Cloud läuft und trotzdem annehmbar klingt?