AA_shout_nem_youth_sxc_715294.jpg

© Nem_youth, sxc.hu

Mach Mail!

Per Sprache den Computer steuern

19.12.2013
Besitzer eines iPhones brauchen nur laut einen Wunsch zu äußern, und schon legt das Programm Siri mit der Arbeit los. Wer den Linux-Desktop ähnlich herumkommandieren möchte, braucht die passende Software – und viel Geduld.

Ein strammes "Starte Browser" ins Mikrofon gebellt, und schon startet Firefox – genau das versprechen die fünf freien Programme Blather, FreeSpeech, Palaver, Simon und Vedics. Damit möchten sie die Eingabe erleichtern und nebenbei behinderten Menschen beim Bedienen des Desktops helfen.

Bei vieren davon – die Ausnahme ist Vedics – dürfen Sie selbst bestimmen, welches Kommando welche Aktion auslöst. Ein "Starte Browser" wäre also durchaus geeignet, um einen Texteditor aufzurufen – verwirrend, aber möglich.

Die fünf Applikationen analysieren die Sprache nicht selbst, sondern überlassen das einer weiteren Software. In der Regel kommt dabei Pocketsphinx [1] von der Carnegie Mellon University (CMU) zum Einsatz. Eine solche Hilfe bei der Analyse bezeichnen die Anwendungen allgemein als Backend oder Engine. Blather, FreeSpeech, Palaver und Vedics stehen unter der Lizenz GNU GPLv3, Simon verwendet noch die Version 2 der gleichen Lizenz.

Blather

Extrem einfach gestrickt kommt das in Python programmierte Blather [1] daher. Um es in Betrieb zu nehmen, installieren Sie zunächst über das Paketmanagementsystem die Archive von Pocketsphinx, Python-Gstreamer und Python-Gtk (unter Ubuntu: python-gtk2, python-gst0.10 und pocketsphinx). Falls Pocketsphinx der von Ihnen verwendeten Distribution nicht beiliegt, folgen Sie den Anweisungen aus dem Kasten "Dreiteilige Sphinx".

Dreiteilige Sphinx

Spielen Sie zunächst die Pakete für Bison und gegebenenfalls für Perl ein. Laden Sie aus dem Web [14] (oder von der Media-Edition dieser Ausgabe beiliegendem Datenträger) die Pakete sphinxbase, pocketsphinx und sphinxtrain herunter. Entpacken Sie diese, und installieren Sie sie jeweils über den klassischen Dreisatz (Listing 1), wobei Sie mit dem Base-Paket beginnen.

Listing 1

$ ./configure
$ make
$ sudo make install

Laden Sie auf Gitorious [2] den aktuellen Entwicklungsstand von Blather herunter. Nach dem Entpacken des Archivs benennen Sie die Datei commands.tmp in commands um und tragen in ihr mit einem Texteditor die gewünschten englischsprachigen Befehle ein. Dabei beginnt jede Zeile mit einem Sprachbefehl in Großbuchstaben, dem ein Doppelpunkt und der auszuführende Shell-Befehl folgt.

Legen Sie anschließend das Verzeichnis ~/.config/blather an, kopieren Sie die Datei commands dort hinein und rufen Sie im Blather-Verzeichnis ./Blather.py auf. Sobald das Programm abgestürzt scheint, beenden Sie es mit [Strg]+[C]. Laden Sie die Datei ~/.config/blather/sentences.corpus auf der Seite des Sphinx Knowledge Base Tools [3] hoch.

Nach einem Klick auf Compile Knowledge Base speichern Sie im Verzeichnis ~/.config/blather/language die generierte Datei mit der Endung .lm unter dem Namen lm und die Datei mit der Endung .dic unter dem Namen dic. Jetzt haben Sie die Möglichkeit, Blather in seinem Verzeichnis mit ./Blather.py -i g zu starten.

Das Programm zeigt das äußerst übersichtliche Hauptfenster (Abbildung 1). Nach einem Mausklick auf Listen lauscht es am Mikrofoneingang auf genau einen Befehl. Alternativ schalten Sie die Software in einen Continuous-Modus, in dem sie dauerhaft zuhört. Weitere Funktionen gibt es nicht, die Rate beim Erkennen von Kommandos fällt gerade noch akzeptabel aus.

Abbildung 1: Das Hauptfenster von Blather bietet lediglich die Möglichkeit, die Sprachsteuerung zu starten und zu stoppen.

FreeSpeech

Im Gegensatz zu den anderen vier Programmen arbeitet das wie Blather in Python geschriebene FreeSpeech standardmäßig als Diktiergerät: Nach dem Start öffnet es einen rudimentären Texteditor, in dem alle ins Mikrofon gesprochenen Wörter landen. Spezielle Sprachbefehle bieten die Möglichkeit, den Text noch nachzubearbeiten. So löscht etwa editor clear den bislang erkannten Text.

Eine Übersicht über alle Kommandos zeigt das Fenster nach dem Start an (Abbildung 2). Dort ändern Sie bei Bedarf mit einem Doppelklick ein Kommando ab. Ab der Version 120 bietet FreeSpeech zusätzlich die Option, andere Programme über virtuelle Tasten zu steuern. Dazu klicken Sie im Fenster mit dem Texteditor auf Send keys und sprechen die zu drückende Kombination ins Mikrofon.

Abbildung 2: Nach dem Start zeigt FreeSpeech alle Kommandos an, mit denen Sie den diktierten Text manipulieren und sogar als Textdatei speichern.

FreeSpeech verdaut ausschließlich englische Wörter, wobei die Rate beim Erkennen nicht besonders gut ausfällt. So machte das im Hintergrund werkelnde Pocketsphinx in unserem Test aus einem deutlich gesprochenen "Hello World" zunächst ein "An over To open" (Abbildung 3), beim zweiten Versuch hingegen ein "An adult wall".

Abbildung 3: FreeSpeech zeigte beim gesprochenen "Hello World" ein äußerst kreatives Ergebnis.

Es besteht laut Dokumentation die Möglichkeit, die Erkennungsrate zu verbessern, indem Sie im Editor den falschen Text mit der Tastatur korrigieren und dann auf Learn klicken. In den Tests produzierte das jedoch stets zahlreiche Fehlermeldungen. Auch das Steuern anderer Programme funktionierte nicht, sämtliche Eingaben landeten weiterhin als wirrer Text im Editor.

Um FreeSpeech in Betrieb zu nehmen, spielen Sie zunächst über den Paketmanager Python-Gtk2, Python-Xlib, Python-Simplejson, Python-Gstreamer, Pocketsphinx und Sphinxbase ein. Unter Ubuntu stecken diese in den Paketen python-xlib, python-simplejson, python-gtk2, python-gst0.10, python-pocketsphinx und gstreamer0.10-pocketsphinx. Falls Sie Pocketsphinx nicht in den Repositories der von Ihnen verwendeten Distribution finden, folgen Sie wie bei Blather den Angaben im Kasten "Dreiteilige Sphinx".

Laden Sie das Pocketsphinx-Archiv aus dem Web [4] (oder vom beiliegenden Datenträger) herunter und entpacken Sie es auf der Festplatte. Öffnen Sie das Makefile aus dem Unterverzeichnis CMU-Cam_Toolkit_v2/src mit einem Texteditor und entfernen Sie in der Zeile

#BYTESWAP_FLAG  = -DSLM_SWAP_BYTES

das Hash-Zeichen (#) am Anfang. Nach dem Speichern öffnen Sie ein Terminal, wechseln in das Unterverzeichnis CMU-Cam_Toolkit_v2/src und rufen make install auf. Die dabei erstellten Programme im Ordner CMU-Cam_Toolkit_v2/bin kopieren Sie in ein Verzeichnis, das in der Umgebungsvariablen $PATH enthalten ist, wie etwa /usr/local/bin.

Laden Sie ebenfalls aus dem Web [5] das FreeSpeech-Archiv herunter (achten Sie auf das Veröffentlichungsdatum unter ReleaseDate). Entpacken Sie das ZIP-Archiv auf der Festplatte und starten Sie im entstandenen Verzeichnis die Software via python freespeech.py.

Palaver

Im Gegensatz zu den beiden vorgestellten Programmen bietet die in Python entwickelte Sprachsteuerung Palaver keine Benutzeroberfläche. Stattdessen starten und stoppen Sie die Spracheingabe über ein frei wählbares Tastenkürzel. Zur Analyse schickt Palaver den gesprochenen Text an Google – folglich gilt es, dem Suchmaschinenriesen entsprechendes Vertrauen entgegenzubringen (Abbildung 4).

Abbildung 4: Palaver nutzt den Dienst des Suchmaschinenriesen Google, um die Sprachkommandos auszuwerten. Das setzt Vertrauen voraus, das viele Anwender nicht mehr recht aufbringen.

Sprechen Sie die Befehle klar und deutlich aus, erkennt Palaver diese weitaus zuverlässiger als die Konkurrenz. Welche englischen Sprachkommandos Palaver versteht, erfahren Sie, indem Sie im Programmverzeichnis das Kommando ./plugin -l nutzen. Der Sprachbefehl open music öffnet beispielsweise im Dateimanager den Ordner Musik. Jedes dieser Kommandos stammt aus einem Plugin: Für open zeichnet beispielsweise das Plugin FileBrowser verantwortlich (Abbildung 5).

Abbildung 5: Von Palaver bekommen Sie nach dem Start per Tastendruck lediglich eine kleine Meldung zu sehen.

Weitere Plugins finden Sie im Katalog auf der Palaver-Homepage [6]. Da die Plugins im Wesentlichen aus einem einfachen Bash-Skript bestehen, besteht im Prinzip hier die einfache Möglichkeit, darüber auf die Schnelle eigene Befehle nachzurüsten.

Wenn Sie Palaver nutzen möchten, installieren Sie über den Paketmanager die Pakete zu Sox, Python-Argparse, Wget, Espeak, Xvkbd, Xautomation sowie Zenity und stellen sicher, dass je nach Desktop-System der Notification-daemon, Notify-osd oder Notifyd aktiv ist. Unter Ubuntu benötigen Sie die Pakete sox, python-argh, wget, espeak, xvkbd sowie xautomation.

Laden Sie anschließend den aktuellen Entwicklungsstand von Palaver bei GitHub [7] via Download ZIP herunter. Das dabei erhaltene ZIP-Archiv entpacken Sie auf der Festplatte und rufen im Verzeichnis Palaver-master als Benutzer root den Befehl ./setup auf.

Die Angaben zur Person dürfen Sie überspringen, unter Language geben Sie de ein. Die Default Plugins spielen Sie per Install ein. Abschließend legen Sie noch in den Systemeinstellungen ein Tastenkürzel fest, das wiederum das Skript hotkey im Palaver-Verzeichnis startet.

Unter Ubuntu rufen Sie dazu die Systemeinstellungen auf, wählen Tastatur | Tastenkürzel, markieren Eigene Tastenkürzel, klicken auf das Plus-Zeichen, vergeben einen Namen wie Palaver und tragen unter Befehl den Pfad zum Skript hotkey ein (also etwa /home/tim/Palaver-master/hotkey). Nach dem Anwenden klicken Sie auf den Text Deaktiviert und drücken die Tastenkombination, über die Sie das Programm künftig aktivieren möchten.

Um nachträglich ein Plugin zu installieren, rufen Sie im Palaver-Verzeichnis den Befehl ./plugin -p Name auf. Dabei ersetzen Sie Name durch den Namen des Plugins, wie FileBrowser. Wenn Sie eigene Plugins schreiben möchten, werfen Sie einen Blick in den Ordner Doc: Dort liegt neben der Dokumentation ein Beispiel.

Simon

Zu den echten Klassikern unter den Programmen zur Spracherkennung gehört Simon [8]. Die in C++ geschriebene Software nutzt die KDE-Bibliotheken und verwendet als Engine wahlweise Pocketsphinx oder Julius. Letztgenanntes betreuen derzeit Entwickler am Nagoya Institute of Technology in Japan [9].

Ursprünglich stammt Simon aus einem Forschungsprojekt der Höheren Technischen Bundeslehranstalt (HTBLA) in Österreich. Mittlerweile hat der komplett spendenfinanzierte Verein "Simon Listens" die Entwicklung übernommen. Zusätzlich gründeten die Macher ein gleichnamiges Unternehmen, das Dienstleistungen rund um Simon anbietet [10].

Nach dem ersten Start meldet sich ein Assistent, der die wichtigsten Einstellungen abfragt. Er setzt dabei voraus, dass Sie bereits mit den Arbeitsweisen und der Terminologie von Simon vertraut sind. Gleiches gilt für das Hauptfenster (Abbildung 6), dessen Bedienkonzept sich nicht intuitiv erschließt. Einsteiger kommen somit nicht umhin, die ziemlich umfangreichen Handbücher zu studieren [11].

Abbildung 6: Das Hauptfenster von Simon erlaubt den direkten Zugriff auf alle wichtigen Einstellungen, fällt dadurch aber recht unübersichtlich aus.

Alle Sprachbefehle für eine bestimmte Aufgabe fasst die Applikation in einem sogenannten Szenario zusammen. Auf diese Weise bündeln Sie etwa alle Kommandos zur Kontrolle von Firefox. Für einige häufige Anwendungsfälle bietet Simon bereits vorbereitete Szenarien zum Download an.

Des Weiteren setzt die Software die Daten für das Modell der gewünschten Sprache voraus. Diese laden Sie aus dem Web herunter und spielen sie ein. Das Modell informiert Simon über die charakteristischen Merkmale einer Sprache, wobei sich die angebotenen Modelle allerdings nur an der üblichen Aussprache orientieren. Um das Erkennen zu verbessern, besteht daher die Möglichkeit, dem Programm in einem Training alle Befehle aus einem Szenario einmal vorzulesen.

Simon arbeitet als Client-Server-System. Bei Bedarf verlagern Sie auf diese Weise die Analyse der gesprochenen Worte auf einen Server (Abbildung 7). Der lokale Rechner spart dann nicht nur Rechenzeit: Es eröffnet sich außerdem die Option, mit mehreren Clients einen zentralen Server zu nutzen.

Abbildung 7: Läuft Simon nur auf einem lokalen Rechner, startet es seine Server-Komponente simond selbst im Hintergrund.

Auf Wunsch lauscht Simon an mehreren Mikrofoneingängen gleichzeitig oder verwendet einen ausgewählten – die Konkurrenz schnappt sich immer direkt den ersten Eingang. Simon ist auch das einzige Programm, dass bei Übersteuern oder zu leisem Ton warnt.

Unter Ubuntu ließ sich Simon im Test über den Paketmanager einspielen, verweigerte aber anschließend den Start. Ein unter OpenSuse 13.1 selbst übersetztes Simon machte keine bessere Figur: Dort ignorierte das Programm kommentarlos jede Spracheingabe und warf nach ein paar Neustarts mit wirren Fehlermeldungen um sich.

Möchten Sie Simon selbst ausprobieren, installieren Sie zunächst über den Paketmanager den C++-Compiler, Cmake, Git, Gettext nebst Tools, die Entwicklerpakete zu KDE, Qt6, Libattica, Phonon und Zlib. Als Backend bietet sich das etwas einfacher zu installierende Pocketsphinx an.

Bevorzugen Sie stattdessen die Engine Julius, installieren Sie zusätzlich noch das Hidden Markov Model Toolkit, kurz HTK. Das erhalten Sie auf der Homepage nur nach einer kostenlosen Registrierung. Erläuterungen zur weiteren Installation von Julius finden Sie in der Anleitung zu Simon.

Damit fehlt noch Simon selbst. Unter OpenSuse installiert der Befehl aus der ersten Zeile von Listing 2 als Benutzer root alle notwendigen Pakete. Anschließend laden die darauf folgenden Befehle die aktuelle Version von Simon herunter, übersetzen sie und installieren die Sprachsteuerung.

Listing 2

# zypper in git-core gcc gettext-tools gettext-runtime libkde4-devel libqt4-sql-sqlite libqt4-multimedia libqt4-phonon-devel libattica-devel libattica0 zlib-devel kde-l10n-de qwt6-devel
# git clone git://anongit.kde.org/simon simonsource
# cd simonsource
# ./build.sh

Vedics

Das ebenfalls in Python geschriebene Programm Vedics [12] integriert sich in die Desktop-Umgebungen Gnome Version 2 und Version 3 sowie Unity. Wie Palaver kommt es komplett ohne Benutzeroberfläche aus, versteht aber nur einen vordefinierten Satz englischer Sprachbefehle. Um etwa Firefox zu starten, sagen Sie "Run Application", warten einen Moment und ergänzen "Firefox".

Als Engine nutzt das Programm Pocketsphinx, die Erkennungsrate fällt folglich auch hier durchwachsen aus: Anstelle von "Move Down" verstand das Programm schon mal "Minimize Window". Zudem schluckte es auf dem Testrechner extrem viel Rechenleistung, reagierte auf leise Geräusche im Hintergrund und stürzte wiederholt ab.

Wenn Sie Vedics dennoch ausprobieren möchten, finden Sie auf Sourceforge ein fertig geschnürtes DEB-Paket [13]. Dort steht auch ein PDF mit einer Beschreibung aller Kommandos zum Herunterladen bereit. Nutzen Sie eine RPM-basierte Distribution, installieren Sie zunächst über den Paketmanager Python-Gtk, Python-Gnome, Python-Gobject, Python-Atspi, Python-Wnck, Python-Notify, Python-Gconf, Python-Dbus sowie Java 6.

Laden Sie sich jetzt das Tar-Archiv herunter, entpacken es und installieren das Programm via ./configure && make && sudo install. In jedem Fall sollten Sie die Software im Terminal mit vedics aufrufen: Nur so sehen Sie, welche Texte das Programm erkennt und ob es abgestürzt ist (Abbildung 8).

Abbildung 8: Starten Sie Vedics aus dem Terminal, erfahren Sie wie hier, ob das Programm abgestürzt ist. In einem solchen Fall gilt es, im Speicher verbliebene Bestandteile über den Kill-Befehl explizit abzuschießen.

Fazit

Keiner der Kandidaten vermag mit Siri oder kommerziellen Windows-Programmen zu konkurrieren. Die Spracherkennung entpuppt sich durchweg als Glückssache, die von den meisten Programmen verwendete Pocketsphinx-Engine läuft dem kommerziellen Dragon NaturallySpeaking meilenweit hinterher.

Die Installation gestaltet sich aufgrund zahlreicher Abhängigkeiten extrem steinig, das Bedienkonzept fällt mitunter umständlich aus. Insbesondere körperbehinderte Nutzer, die auf eine Sprachsteuerung angewiesen sind, haben kaum eine Chance, ohne fremde Hilfe eines der Programme in Betrieb zu nehmen.

Die beste Spracherkennung liefert noch Palaver, das allerdings mit Google telefoniert. Den riesigen Funktionsumfang bei Simon erkaufen Sie mit umständlichem Geklicke – sofern es Ihnen überhaupt gelingt, das Programm zur Mitarbeit zu bewegen. Blather und FreeSpeech wirken unfertig, Vedics ist im aktuellen Zustand sogar komplett nutzlos. FreeSpeech erlaubt immerhin noch die Eingabe von englischen Texten, sofern Sie umfangreiche Nacharbeiten nicht scheuen. Auf die Sprache Deutsch versteht sich von Haus aus nur Simon.

Da die Arbeit an Programmen und Engines nur schleppend vorangeht, dürfte ein komfortables Steuern des PCs via Sprache für Linux-Anwender noch lange ein frommer Wunsch bleiben. 

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare