Sprachassistent im Eigenbau – Snips auf dem Raspberry Pi

„Alexa, wie wird das Wetter heute in Köln?“
Sprachassistenten werden immer beliebter. Ob zu Hause auf dem Smart-Speaker oder mobil auf iPhone und Co. Denkt man am Anfang noch, dass man so eine Spielerei niemals brauchen wird, merkt man schnell, dass die smarten Helfer einem doch so manchen Arbeitsschritt ersparen können. Ein Timer für die Pizza ist mit einem kurzen Sprachbefehl eben schneller gestellt, als erst einmal das Smartphone entsperren zu müssen und dann die richtige App zu finden. Der Nachteil: Die aufmerksamen Helfer hören ständig mit. Was also tun, wenn man seine Daten nicht irgendwo auf einem Server in den USA wissen will?

Für Bastler gibt es mit dem Alleskönner Raspberry Pi eine eingeschränkte, aber passable Lösung. Snips heißt der Sprachassistent, der ohne Cloud auskommt und überdies auch nicht ständig eine Internetverbindung benötigt – alle Daten bleiben lokal auf dem Rechner.
Für das Projekt habe ich mir kurzerhand meinen vorhandenen Raspberry Pi 3, auf dem mein MagicMirror läuft, ein USB-Mikrofon und einen günstigen Lautsprecher mit Aux-Kabel geschnappt und losgelegt.

Die Dokumentation von Snips ist wirklich ausführlich, und sofern man ein bisschen Erfahrung mit der Eingabe von Terminalbefehlen hat, auch gut nachvollziehbar. Aber auch Personen ohne Vorkenntnisse sollten mit der Anleitung zurechtkommen. Mein Vorteil war es, dass mein Raspi bereits eingerichtet war und über eine WLAN-Verbindung, aktivierten SSH-Zugriff sowie Node verfügte. Das hat die Zeit der Vorbereitung deutlich verringert. Mein Perfektionismus hat das Ganze dann allerdings wieder um einige Stunden gestreckt – doch zu meinen Versuchen den Assistenten umzubenennen später mehr. Zunächst einmal zur eigentlichen Konfiguration des Sprachassistenten: Die „Skills“, wie sie beispielsweise bei Alexa genannt werden, können über eine übersichtliche Online-Plattform eingespielt werden. Sobald „Sam“, das Kommandozeilen-Interface installiert ist, kann man die Skills jederzeit aktualisieren. Die Auswahl ist noch überschaubar: Wetter über openweather anzeigen, Witze erzählen, Rechnen, einen Timer stellen aber auch Smarthome-Geräte steuern. Auch eigene Befehle lassen sich programmieren. Dafür sollte man aber Zeit und ein bisschen Know-How mitbringen.
„Hey Snips, wie wird das Wetter heute in Köln?“ funktionierte ebenso gut wie „Hey Snips, erzähle einen Witz.“ Spoiler: Die Witze stehen Alexas Flachwitzen in nichts nach. Sie sind nur ein weniger schlechter zu verstehen, weil Snips‘ Sprachausgabe etwas von einem Dalek hat.

Kommen wir aber zurück zum Perfektionismus: Schon als Siri auf dem iPhone Einzug hielt, entbrannte vermutlich nicht nur in mir der Wunsch, den persönlichen Assistenten, der ab diesem Zeitpunkt im Smartphone wohnte, umzubenennen. Und seit dem ersten Iron Man Film dürften viele Leute bei Sprachassistenten direkt an Jarvis denken. Mein Ziel war es also Snips in Jarvis umzubenennen – auch wenn das nichts an der etwas blechernen Stimme ändern würde und auch wenn ich danach immer noch keinen Superheldenanzug bauen könnte. „Hey Jarvis, wie wird das Wetter heute?“ klingt einfach viel cooler als „Hey Alexa“ oder „Hey Snips“.
Um ein eigenes Hotword festzulegen, muss der Assistent erst einmal trainiert werden. Laut Dokumentation ist das kein großer Aufwand und ein paar Terminalbefehle später begann ich mit der Aufzeichnung. Leider blieb die Kalibrierung immer bei der dritten Aufnahme hängen. Kein Problem, ich hatte ja Zeit, also nahm ich selber die nötigen Audiospuren auf. „Hey Jarvis“, „Hey Jarvis“, „Hey Jarvis“ – wenn man das drei Mal hintereinander zu seinem Computer sagt und nichts passiert, kommt man sich doch ein wenig verrückt vor.
Leider scheiterte auch dieser Versuch den Assistenten umzubenennen. Snips schien beharrlich bei diesem Namen bleiben zu wollen. Meine Vermutung ist, dass mein Mikrofon zu schlecht war. Sprachbefehle funktionieren nur aus einer sehr kurzen Entfernung und laut und deutlich ausgesprochen. Ich bin also jetzt auf der Suche nach einem leistungsfähigen Mikrofon, das überdies nicht zu sehr aufträgt. Der Plan ist nämlich dem MagicMirror, der immer noch parallel zu Snips läuft, einen ordentlich großen Bildschirm und einen guten Spiegel zu spendieren. Da sollten Lautsprecher und Mikrofon natürlich nicht auffallen. Vielleicht schaffe ich es ja Snips ein paar Komplimente beizubringen. „Spieglein, Spieglein an der Wand…“