knuspermagier.de
Der privateste Blog von Philipp.

snips.ai

Als Felix vor ein paar Wochen ankündigte, dass er sich nun mit snips beschäftigen wird, war ich schonmal sehr gespannt auf die folgenden Posts in seinem Blog. Mein großes Heimautomatisierungszusammenhack-Vorbild.

Jedenfalls ging es letztens los mit dem ersten Post und das klang alles sehr interessant. Weil man über Weihnachten ja immer etwas Zeit hat sich mal mit Quatsch zu beschäftigen, oder es sich zumindest einbildet, kaufte ich mir also auch mal einen aktuellen Raspberry Pi und ein Mikrofon-Dingsbums und probierte auch schon mal zwanzig Minuten damit rum. Und was soll ich sagen? Ich bin ziemlich begeistert!

Aber um was geht es überhaupt? Snips ist eine Software, zum Teil auch Open Source, mit der man einen Voice Assistant, also was wie Alexa oder Siri, selber bauen kann und zwar völlig ohne Cloud-Anbindung. Die gesamte Verarbeitung der Eingaben läuft lokal, coolerweise reicht dafür auch schon ein kleiner Raspberry Pi, was will man mehr.

Im Gegensatz zu anderen Open Source-Lösungen scheint snips aber von einer Firma gebaut zu werden, die sogar Designer und UX-Leute im Team haben. Sowohl die Webseite, als auch das Maker-Panel, in dem man seine Assistants zusammenklicken kann sind hübsch anzusehen und funktionieren gut. Auch sam, das NodeJS-Tool, mit dem die gesamte Einrichtung läuft ist super einfach und it just works. Von Auspacken zum ersten hey snips-Befehl vergingen bei mir keine 20 Minuten.


Bisher hatte ich ja hauptsächlich aus drei Gründen keinen Voice Assistant: Einerseits habe ich keine Lust, alles, was in der Wohnung gesprochen wird, zu Google oder Amazon zu senden, andererseits würde ich ja Apple vertrauen, aber Siri ist einfach zu schlecht. Naja, und am Ende natürlich die Frage, wozu man das überhaupt braucht. Geht ja auch alles so.

Spätestens dieses Jahr beim Plätzchenbacken, aber auch vorher schon, immer, wenn man halt mehrere Timer braucht, wünschte ich mir aber doch so ein Gerät. Oder wenn ich schnell was auf die Einkaufsliste setzen will, aber gerade keine Hand frei habe. Die Zukunft hat schon Vorteile!


Daher nun also der eigene Assistant. Ich habe mich, wie gesagt, erst ein paar Minuten damit beschäftigt und schnell eine Action gebaut, mit der ich die Stimme im Büro die Titel von Issues aus dem Ticketsystem vorlesen lassen kann, wenn jemand danach fragt. Relativ sinnlos, aber ich brauchte schnell etwas witziges, damit ich Snips vernünftig in unserem zweiwöchentlichen „Cooles Zeug“-Meeting vorstellen kann.

Über Weihnachten werde ich aber auf jeden Fall mal meine Timer-Sache zusammenbauen. Ja, man könnte nun denken, so etwas langweiliges wie einen Timer könnte man vorgefertigt im Snips-„App Store“ finden, aber der ist tatsächlich noch etwas begrenzt. Zum Glück ist es wirklich easy mit Python eigene Actions zu schreiben. Außerdem kommunizieren die ganzen Komponenten von Snips untereinander über MQTT, da kann man sich also auch einfach einklinken! So viele Möglichkeiten!

Ich halte euch auf dem Laufenden.

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

Einrichtung

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?