Startseite>Raspberry Pi per Sprache steuern
Aus Raspberry Pi Geek 01/2016

Raspberry Pi per Sprache steuern

© Jozef Polc, 123RF

Aufs Wort

Bernhard Bablok

Siri, Alexa, Cortana und OK Google – digitale Assistenten mit Sprachfähigkeiten infiltrieren auf allen Plattformen das Privatleben des Benutzers. Anwender eines Raspberry Pi nutzen dagegen freie Software, ohne dass internationale Konzerne mithören.

Computer per Sprache statt per Tastatur zu steuern ist ein alter Traum, zuerst in zahlreichen Science-Fiction-Serien der späten Sechzigerjahre verwirklicht. Inzwischen sind sowohl die Rechner als auch die Sprachforscher so weit, dass die Idee tatsächlich im Alltag funktioniert. Technisch kommen hier zwei Komponenten zum Einsatz: Eine sogenannte STT-Engine (englisch für “speech-to-text”, Sprache-zu-Text) wandelt die gesprochene Sprache in Text um. Die andere Richtung übernimmt eine TTS-Engine (“text-to-speech”, Text-zu-Sprache). Dazwischen sitzt ein Programm, das den eingegebenen Text interpretiert und den Ausgabetext erzeugt.

Sowohl für STT als auch für TTS gibt es On- und Offline-Lösungen. Insbesondere die Sprachanalyse benötigt viel Know-how, ein gutes Sprachmodell und ein Lexikon, damit die Spracheingabe nicht zum sinnlosen Silbenbrei verkommt. Diverse Anbieter wie Google erlauben – nicht ganz uneigennützig – die Integration ihrer Online-Engines in selbst geschriebene Programme. Wer jedoch nicht möchte, dass der Anbieter mithört, benötigt eine Offline-Engine.

Zum Glück gibt es mit Pocketsphinx [1] und Julius [2] zwei quelloffene Engines, die autark arbeiten. Die Latte für die Hardware-Anforderungen liegt dabei erfreulich niedrig: Für beide reicht die Rechenleistung eines Raspberry Pi aus. Darüber hinaus gibt es mit dem Jasper-Projekt [3] eine Python-Lösung, die diese (und andere) TTS- und STT-Engines über einen simplen Mechanismus verbindet und so die Sprachsteuerung eines RasPi recht einfach macht. In den folgenden Abschnitten geht es um die Hardware, die Installation der Software sowie um ein kleines Beispiel für die Sprachverarbeitung.

Hardware-Voraussetzungen

Für den normalen Betrieb genügt die Rechenleistung eines Raspberry Pi der ersten Generation. Möchten Sie die Software selbst kompilieren (mehr dazu im nächsten Abschnitt), benötigen Sie aber sehr viel mehr Geduld als beim RasPi 2. Im Betrieb verhielt sich der Ur-Pi ein wenig besser, da bei ihm anders als bei seinem Nachfolger keine Brummgeräusche auftraten. Hier fehlt dem RasPi 2 offensichtlich eine ordentliche Abschirmung der Audiobuchse.

Da der Raspberry Pi im Gegensatz zu anderen SBCs wie etwa dem Banana Pi nicht über ein eingebautes Mikrofon verfügt, stehen entweder eine kleine USB-Soundkarte plus Mikrofon (Abbildung 1) oder gleich ein USB-Mikrofon auf der Einkaufsliste. Die Kombi in Abbildung 1 mit der USB-Soundkarte Creative Soundblaster Play und dem Notebook-Mini-Mikrofon von Hama kostet 17 Euro plus 6 Euro für das Mikro. Das USB-Mikro Akiro von Kinobo in Abbildung 2 gibt es für etwa 18 Euro im Handel.

Abbildung 1: USB-Soundkarte mit Mini-Mikrofon direkt in der Mikrofonbuchse.

Abbildung 1: USB-Soundkarte mit Mini-Mikrofon direkt in der Mikrofonbuchse.

Abbildung 2: USB-Mikrofon zum Aufstellen auf dem Schreibtisch und Mini-Lautsprecher.

Abbildung 2: USB-Mikrofon zum Aufstellen auf dem Schreibtisch und Mini-Lautsprecher.

Die Sprachausgabe erfolgt über den HDMI-Ausgang oder per 3,5-mm-Klinke. Besondere Ansprüche an die Lautsprecher gibt es nicht, hier tun es selbst einfache “Brüllwürfel”: Die synthetischen Stimmen der meisten Sprachausgabe-Engines hauen audiophile Nutzer sowieso nicht vom Hocker. Freilich spricht nichts gegen bessere Lautsprecher, etwa falls das System später sprachgesteuert Musik abspielen soll.

Der richtige Ton

Um später nicht irgendwelche Fehler in der Software zu suchen, sollten Sie Aufnahme (Mikrofon) und Wiedergabe richtig konfigurieren. Das folgende Setup geht von der Ausgabe über die interne Soundkarte mithilfe der 3,5-mm-Klinkenbuchse aus. Die Konfiguration klappt am bequemsten über Raspi-config und dessen Menüpunkt zum Steuern der Ausgabe. Letztlich besteht die Konfiguration nur aus dem Ändern eines Werts in /etc/modprobe.d/alsa-base.conf: Raspi-config stellt dort die Option snd-usb-audio von -2 auf 0.

Schließen Sie das Mikrofon über eine unterstützte USB-Soundkarte an, können Sie sich eine weitere Konfiguration sparen. Dasselbe gilt für USB-Mikrofone, die quasi ein auf das Eingabeteil reduziertes Sound-Device enthalten. Für einen ersten Test und zum Einstellen der Aufnahme- und Wiedergabelautstärke greifen Sie zum Programm alsamixer. Mit [F6] wählen Sie das Sound-Device aus, mit [Tab] gelangen Sie zu den einzelnen Geräten für Ein- und Ausgabe. Über die Pfeiltasten ändern Sie die Einstellungen (Abbildung 3). Taucht statt des Mixerprogramms nur eine Fehlermeldung auf, gehört typischerweise der angemeldete Nutzer nicht zur Gruppe audio – wer mit dem Standardnutzer pi arbeitet, hat dieses Problem nicht.

Abbildung 3: Mit dem Alsamixer stellen Sie den Schallpegel des Mikrofons ein.

Abbildung 3: Mit dem Alsamixer stellen Sie den Schallpegel des Mikrofons ein.

Hilfreich für die Einrichtung ist das Programm mic-test aus dem zu diesem Artikel entstandenen Github-Projekt des Autors [4]. Das Programm nimmt für fünf Sekunden auf und spielt die Aufnahme anschließend gleich wieder ab – damit lässt sich dann sowohl die Aussteuerung des Mikros als auch die Ausgabelautstärke per Alsamixer den eigenen Bedürfnissen anpassen. Anschließend speichert der Befehl sudo alsactl store die Einstellungen. Beim nächsten Bootvorgang lädt das System diese automatisch wieder.

Installation von Jasper

Nachdem dem Einrichten der Hardware geht es an die Konfiguration der Software. Jasper selbst gibt es ebenfalls auf Github, die Installation fällt nicht weiter schwer. Probleme machen hingegen oft die verschiedenen STT- und TTS-Engines. Für Letztere gibt es immerhin Debian-Pakete; bei Ersteren bleibt Ihnen nur die Wahl zwischen den verschiedenen Online-Lösungen und den Offline-Engines, die von diversen Bibliotheken abhängen – dummerweise gibt es Letztere nicht für Raspbian.

Die Macher von Jasper stellen daher ein Image bereit, bei dem diese Bibliotheken schon in kompilierter Form vorliegen. Allerdings ist dieses Image relativ alt (von Anfang 2014) und nur für den Raspberry Pi Model 1 geeignet. Benutzer des Models 2 müssen sich dagegen durch eine längliche Installationsanleitung quälen, die an einigen Stellen mittlerweile Unstimmigkeiten aufweist.

Einfacher geht es mit dem Script jasper-install aus dem gleichnamigen Github-Projekt des Autors (Details siehe Kasten “Installation von Jasper”). Das Skript unterstützt dabei beide Modelle. Alle Selbstinstallierer können die nächsten Absätze bis auf die Hintergrundinfos ignorieren, die dort beschriebenen Nacharbeiten erfolgen automatisch durch das Skript.

Installation von Jasper

Die Installation von Jasper mit dem Skript jasper-install aus dem gleichnamigen Github-Projekt des Autors [4] ermöglicht das maßgeschneiderte Installieren von Jasper ohne großen manuellen Aufwand. Das Skript geht von einem frisch eingerichteten Raspbian auf einer mindestens 8 GByte großen Speicherkarte aus. Die initiale Konfiguration mit Raspi-config sollten Sie bereits abgeschlossen haben, insbesondere muss die Wurzelpartition den gesamten verfügbaren Platz einnehmen. Dann klonen Sie die Dateien des Projekts auf den Rechner und werfen die Installation an (Listing 1).

Vorher editieren Sie noch die Datei jasper-install.cfg nach Ihren Vorstellungen. Die ausgelieferte Version passt für den RasPi 2; setzen Sie einen Raspberry Pi der ersten Generation ein, müssen Sie noch die Konfiguration von Pocketsphinx aus den Quellen aktivieren. Dazu setzen Sie die Variablen INSTALL_pocketsphinx=0, INSTALL_pocketsphinx_data=1 und INSTALL_pocketsphinx_src=1. Greifen Sie per SSH auf den RasPi zu, nehmen Sie die Installation besser gleich in einer per screen gestarteten Sitzung vor – so muss die SSH-Session nicht die ganze Zeit bestehen.

Die Installationsorgie dauert sehr lange – auf einem RasPi etwa sieben bis acht Stunden, das Modell 2 benötigt nur halb so lang. Die Dauer hängt außerdem von der Geschwindigkeit des Internetanschlusses und der SD-Karte ab. Die Bibliothek OpenFST benötigt mit mehr als fünf Stunden (RasPi 1) die längste Übersetzungszeit. Sie lässt sich aufgrund ihres enormen Speicherbedarfs selbst auf dem RasPi 2 nicht mit allen Prozessoren parallel kompilieren – bei vier aktiven Prozessoren kommt das System irgendwann nicht mehr aus dem Swappen heraus. Legen Sie das Wurzeldateisystem von Raspbian auf eine per USB angeschlossene Festplatte, sparen Sie beim Modell 2 noch einmal ungefähr die Hälfte der Zeit ein.

Nach der Installation starten Sie Jasper mit dem Befehl jasper. Dazu muss das Benutzerkonto Mitglied der Gruppe audio sein. Hängen Sie noch ein --debug an das Kommando, bekommen Sie detaillierte Meldungen über den Ablauf. Der erste Start dauert immer etwas länger, da das Programm zuerst das Vokabular für die STT-Engine aufbereiten muss. Alternativ lässt sich Jasper auch als Systemdienst einrichten. Details dazu sowie weitere Infos zum Einrichten und Nutzen des Systems liefern die Datei README sowie die Originaldokumentation des Jasper-Projekts.

Listing 1

 

$ git clone http://github.com/bablokb/jasper-install
$ cd jasper-install
$ nano jasper-install.cfg
$ sudo ./jasper-install all

Möchten Sie lieber auf das rund 1,3 GByte große, originale Jasper-Image zurückgreifen, laden Sie es von der Projektwebseite [3] oder der Heft-DVD herunter. Dann schreiben Sie es wie ein Standard-Raspbian mit einem Image-Programm wie Win32 Disk Imager oder unter Mac OS X und Linux mit Dd auf eine Speicherkarte. Nach dem ersten Start des RasPi mit dem Jasper-Image sollten Sie Raspi-config aufrufen, die Lokalisierung auf deutsche Gegebenheiten anpassen (Tastaturlayout, Zeitzone, Sprache) sowie die Soundausgabe gegebenenfalls von HDMI auf 3,5-mm-Klinke umstellen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland