Embedded Computer sind je nach Einsatzgebiet häufig nicht mit Bildschirmen oder Displays ausgestattet. Wenn sie aber in wechselnden Umgebungen mit oder ohne DHCP eingesetzt werden, ergibt sich häufig die Anforderung einmal schnell die bezogene oder eingestellte IP-Adresse herauszufinden. Natürlich lässt sich dieses Problem komfortabel mit DynDNS lösen, wenn der Rechner auch wirklich mit dem Internet verbunden ist. Ansonsten bleibt immer nur die Suche nach einem neuen Netzwerkgerät im Webinterface des Routers.

Diese Anforderung hatte ich selber ursprünglich für einen mobilen Roboter, der sich in wechselnden Umgebungen bzw. WLAN-Netzen bewegen konnte und per Webinterface bedient wurde. Um den Roboter initial zu finden, musste die IP-Adresse bekannt sein.
Aber auch für Zwecke der Heimautomatisierung eingesetzte Mini-Rechner müssen nicht immer mit Display betrieben werden. Für die Ausgabe seltener Störungen bietet sich das Audio-Interface, also die Soundkarte, als preiswerte und stromsparende Alternative an.

Mein mobiler Activemedia Pioneer 3AT Roboter mit Sprachausgabe 2006 FernUni in Hagen, damals realisiert mit MBROLA

Computergenerierte künstliche Sprachausgabe wird mit sogenannter Text-to-Speech-Software TTS realisiert. Diese Software setzt mit Hilfe von umfangreichen Aussprache-Lexika oder Heuristiken (Regeln) für die Zielsprache geschriebenen Text zunächst in eine Abfolge einzelner Laute (Phoneme) um. Die einzelnen Laute, bzw. deren Kombinationen werden entweder von einem Menschen bei der Erstellung der Software eingesprochen oder ebenfalls synthetisch (Signalsynthese oder Formantsynthese) erzeugt. Neuere Systeme basieren auf einem umfangreiche Wortschatz an von einem Menschen gesprochenen Worten, so das eine nahezu natürliche Sprache generiert werden kann. Selbst die Herausforderung eine natürliche Sprachmelodie (Prosodie) zu erzeugen, scheinen moderne kommerzielle Systeme zu meistern. Nun erfordert so eine hochqualitative Sprachdatenbank sehr viel Speicherplatz und ist aufwändig und teuer zu produzieren. Trotz allem gibt es im Open-Source-Bereich brauchbare und auch schlanke freie TTS-Programme. Eine sehr Ressourcen-sparende  TTS-Software ist eSpeak. Diese Software wurde ursprünglich auf einem Acorn RISC_OS Computer, also auch auf einer ARM-Architektur, entwickelt und eignet sich durch Ihre Kompaktheit, Ausführungsgeschwindigkeit und geringen Speicherbedarf besonders für Embedded Systeme. Außerdem unterstützt espeak über 20 Sprachen. An die Aussprache muss man sich etwas gewöhnen, sie ist aber verständlich.

Die auf dem Raspberry-Pi verwendete Debian-Variante Rasbian unterstützt eSpeak out-of-the-box.

Mit

sudo apt-get install espeak

ist die Installation erledigt. Die Ausgabe testen kann man testen, nachdem man das Audiointerface auf den Klinkenstecker per Alsamixer umgestellt hat. Default ist beim Rasberry PI Audioausgabe über HDMI. In /etc/config.txt kann das aber auch fest eingestellt werden.

sudo amixer cset numid=3 1

espeak -vde "hallo welt hier spricht der räspberri pei"

Wenn keine Option -w angegeben wird, gelangt die Ausgabe direkt an das Audio-Device /dev/dsp .

Höhere Sprachqualität mit SVOX-Pico

Eine Alternative mit der derzeit besten Sprachqualität im Open-Source-Bereich stellt die SVOX-Pico-TTS-Engine dar. Vielleicht kommt dem einen oder anderen Nutzer die Stimme bekannt vor. SVOX-Pico ist die in den Android-Versionen 2.1-2.3 eingesetzte Default-Sprachausgabe. Die neue, ab der Version 4.0 von Google für Android eingesetzte TTS-Engine, basiert leider auf Closed-Source-Software. Die SVOX-Pico TTS-Engine ist übrigens auch die Default-Engine für meine Wikipedia-Sprachausgabe Pediaphon und unterstützt neben Englisch (UK und US), Deutsch, Französisch auch Italienisch und Spanisch in hoher Qualität.

SVOX-Pico liegt als Open-Source vor, ist auf diverse Linux-Varianten portiert worden und lässt sich z.B. unter Ubuntu einfach mit sudo apt-get install pico2wave installieren. Für Raspbian muss das Paket selber kompiliert werden. Alternativ können Sie mein Debian-Paket für Rasbian ARM einfach herunterladen (MD5-Hash: b530eb9ff97b9cf079f622efe46ce513) und mit den Kommandos


apt-get install libpopt-dev
sudo dpkg --install pico2wave.deb

auf dem Rasberry Pi installieren. Das libpopt-dev ist ebenfalls erforderlich.
Mit

sudo amixer cset numid=3 1
pico2wave --lang=de-DE --wave=/tmp/test.wav "hallo welt hier spricht der räspberri pei"; play /tmp/test.wav;rm /tmp/test.wav

können Sie die Sprachausgabe testen.

Mit

sudo apt-get remove pico2wave

kann man das Debian-Paket auch wieder sauber deinstallieren.
Wer selber kompilieren möchte, muss neben know how etwas Geduld mitbringen.
Um die Quellen zu kompilieren ist neben automake auch das libtool erforderlich:

git clone -b upstream+patches git://git.debian.org/collab-maint/svox.git svox-pico
apt-get install automake libtool libpopt-dev
automake
./autogen.sh
./configure
make all
make install

Alternativ kann man auch ein direkt ein Debian-Paket bauen, dass auch sauber wieder aus dem System entfernt werden kann.
Ich habe zusätzlich für mein Binary die GCC-Optionen
-mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
passend für den Raspberry Pi angepasst, damit auch die Hardware floation-point Unterstützung genutzt wird.

Um dann z.B. beim Bootvorgang automatisch die IP-Adresse des Pis zu sprechen, habe ich in der /etc/rc.local folgende Kommandos eingefügt:

/usr/bin/amixer cset numid=3 1
/usr/bin/espeak -vde "meine ei pie Adresse lautet $_IP"

Sicherlich lassen sich noch eine Menge anderer sinnvolle Anwendungen für eine Sprachausgabe auf dem PI finden. Mit seinen Sensoren kann der Pi auch als ein preiswertes Hilfsmittel für Blinde-Nutzer eingesetzt werden.

You must be logged in to post a comment.

Trackbacks