Sprich Freund und tritt ein – Sprachausgabe für den Raspberry Pi mit eSpeak und SVOX-pico

Embedded Computer sind je nach Einsatzgebiet häufig nicht mit Bildschirmen oder Displays ausgestattet. Wenn sie aber in wechselnden Umgebungen mit DHCP eingesetzt werden, ergibt sich häufig die Anforderung einmal schnell die bezogene 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.

[hana-flv-player video=”http://www.pediaphon.org/~bischoff/videos/pioneer1.flv”
width=”400″
height=”auto”
description=”Activemedia Pioneer 3AT Roboter”
player=”5″
clickurl=”http://www.dr-bischoff.de/videos/andreas_video_galerie.html”
clicktarget=”_blank”
autoload=”true” autoplay=”false”
loop=”false” autorewind=”true”
splashimage=”http://www.pediaphon.org/~bischoff/videos/pioneer1.jpg”
skin=”mejs-ted”
/]

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”

So hört sich das Ergebnis an:

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.

So klingt es dann mit svox-pico:

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 ist leider Closed-Source. Die SVOX-Pico TTS-Engine ist derzeit 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. Auf der Pediaphon-Seite können Sie übrigens auch online eigene Texte in Sprache umwandeln.

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 libttspico-utils installieren. Für Raspbian muss das Paket selber kompiliert werden. Alternativ können Sie mein Debian-Paket für Raspbian 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.

Dieser Beitrag wurde unter Allgemein, Tipps & Tricks abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Die Kommentarfunktion ist geschlossen.