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…“

Windows auf dem Mac – Parallels vs. Bootcamp (und warum beides gleichzeitig nicht geht)

Früher oder später findet man als macOS Nutzer etwas, für das man ganz dringend Windows braucht. Die Alternativen für Mac sind entweder nicht gut genug, teuer oder gar nicht existent.

Ich muss gestehen, dass es bei mir in erster Linie ein Spiel war, das nicht für meinen Mac verfügbar war. Ich weiß, Schande über mich, dass ich versuche mit einem Mac zu zocken, aber ich habe nun einmal keinen anderen Rechner. Aus Kostengründen versuchte ich es zunächst mit Wine, was allerdings eher einem Glücksspiel glich. Mal funktioniert es, mal nicht. Schon alleine um Steam zu installieren, brauchte es drei verschiedene Programme von Wine, die abwechselnd funktionierten oder gar nicht erst starteten. Irgendwann vergeht einem dann die Lust. Also schaffte ich mir Parallels an. 

Parallels hat den Vorteil, dass macOS ganz bequem im Hintergrund laufen kann und nicht alle Aktionen in Windows ausgeführt werden müssen. Die Installation ist einfach, die Nutzung simpel und man kann sogar von Windows auf macOS-Dateien zugreifen und umgekehrt. Einziger Nachteil: man sollte einen Mac mit mindestens 8GB RAM haben, wenn man vernünftig damit arbeiten möchte. Es laufen eben zwei Betriebssysteme gleichzeitig, die sich den RAM teilen. Ein weiterer Nachteil, der für die meisten vielleicht unerheblich ist: Parallels unterstützt kein DirectX11. Da Apple die 3D-Grafikschnittstelle mit der Zeit komplett auf Metal umgestellt hat, funktioniert DirectX11 einfach nicht, wenn macOS im Hintergrund läuft. Was also tun?

Bootcamp heißt die zweite Möglichkeit, um Windows auf dem Mac zu nutzen. Das Einrichten ist etwas komplizierter, der Bootcamp-Installer aber schon auf dem Mac vorinstalliert. Je nach Modell des Macs braucht man einen leeren USB Stick und die ISO der gewünschten Windows Version. Bei neueren Macs läuft die Installation über eine kleine FAT32-Partition, auf die sowohl macOS als auch Windows zugreifen können und ein Stick ist nicht nötig.

Der Nachteil: man muss den Mac jedes Mal neu starten, wenn man Windows nutzen möchte und auf Dateien kann man nur von macOS zugreifen. Benötigt man unter Windows etwas von macOS heißt es neu starten und einen USB Stick suchen, oder einen Cloud-Dienst bemühen.

Zu Beginn der Installation von Bootcamp muss man sich entscheiden, wie groß die Windows-Partition werden soll.

Aber Vorsicht, wenn man auf Parallels nicht verzichten möchte bekommt man hier Probleme. Parallels scheint, was Speicherplatz angeht, ein wenig gierig zu sein. Auf meiner Festplatte waren über 200GB frei, Parallels nahm vom belegten Platz etwa 30GB ein. Trotzdem konnte ich im Bootcamp Installer nur 43GB zur Windows -Partition zuweisen. Zwei Stunden Googeln und einige Wutanfälle später war klar: Parallels reserviert sich den freien Festplattenspeicher vorsorglich. Wird dieser durch Programme oder Dateien unter macOS belegt ist das okay, doch beim Partitionieren der Festplatte legt Parallels Einspruch ein. Immerhin könnte es den Speicher ja irgendwann mal brauchen. Hier hilft dann nur der Verzicht auf Parallels oder das De- und Neuinstallieren, nachdem Bootcamp fertig ist. Backup nicht vergessen!

Lange Rede kurzer Sinn: Je nach Ansprüchen an den Arbeitsprozess können entweder Parallels oder Bootcamp die bessere Wahl sein. Auf beides gleichzeitig sollte man verzichten, es sei denn man stellt sich und seine Nerven auf einige zeitfressende Probleme ein.