Eine relativ einfache Möglichkeit um auf dem Raspberry Pi einen einfachen Text per Sprachausgabe (TTS) wiederzugeben, kann durch den Sprachsynthesizer pico2wave realisiert werden. Dieser verwendet zur Spracherzeugung „Hidden Markov Model“ (HMM) Algorithmen. Diese TTS-Engine ist Open-Source und hat eine relativ gute Sprachqualität.

Installation unter Raspbian

Leider ist die Installation auf dem Raspberry Pi etwas umständlich, da das Programm erst kompiliert werden muss. Es gibt im Internet aber gute Anleitungen und auch fertige (inoffizielle) Debian-Pakete, die einfach heruntergeladen und installiert werden können.

Empfehlen kann ich folgende Links:

Pico TTS ausführen

Um einen einfachen Text über die Komandozeile per Spracheausgabe wiederzugeben, kann z. B. so realisiert werden.

pico2wave --lang=de-DE --wave=/tmp/test.wav "Guten Morgen"; aplay /tmp/test.wav; rm /tmp/test.wav

Text aus Datei wiedergeben

Es ist auch möglich den Text aus einer Textdatei (max. 35kb) auszulesen und danach wiederzugeben.
Hierzu kann z. B. dieses kleines Script verwendet werden:

#!/bin/bash
language="en-US"
tmpFile="/tmp/picoTmpAudio.wav"
text=""

if [ $# == 1 ]; then
	 text="${1}"
else
   language="${1}"
   text="${2}"   
fi

pico2wave -l=${language} -w=${tmpFile} "`cat ${text}`"
aplay ${tmpFile}
rm ${tmpFile}

Um das Script ausführen zu können, muss dies zuerst durch folgenden Befehl ausführbar gemacht werden.

chmod +x picoTTSFromFile.sh

Es muss der Pfad zur entsprechenden Datei als Parameter angegben werden.
Optional kann auch die verwendete Sprache angepasst werden.

./picoTTSFromFile.sh text_en.txt
./picoTTSFromFile.sh de-DE text_de.txt

Source

Das Script und Beispieldateien habe ich zusätzlich auf GitHub bereitgestellt.
GitHub: SVOX Pico TTS – Read text from file

Text mit SVOX Pico TTS direkt von der Kommandozeile oder aus einer Datei durch Sprachausgabe wiedergeben

Ein Gedanke zu „Text mit SVOX Pico TTS direkt von der Kommandozeile oder aus einer Datei durch Sprachausgabe wiedergeben

  • Halloechen,
    ist zufaelligerweise bekannt, ob SVOX einen Bug hat (oder mal hatte!) und gelegentlich zumindest an einem deutschen Satz, der mit einem Punkt endet, ein „atz“ anhaengt, also beispielsweise
    „Sabinchen war ein Frauenzimmer, gar hold und tugendhaft.“
    spricht als
    „Sabinchen war ein Frauenzimmer, gar hold und tugendhaftatz.“
    Unter Windows habe ich diesen Fehler nicht, aber…
    Ich habe einen Mini-sowas-aehnliches-wie-ein-MIPS-Emulator geschrieben und den SVOX darunter eigentlich auch zum Laufen gekriegt, nur dass eben besagter Fehler auftritt.
    Klar:
    * kann sein, dass der Fehler im Emulator liegt
    * kann sein, dass beim Zusammenbau der SVOX-Binaerdatei (u. a. mittels objcopy) was falsch laeuft und
    * kann sein, dass sogar der GNU-C einen Bug hat.
    Nur suche ich nun schon seit der zweiten Woche und habe den Quelltext bestimmt schon 20 mal komplett durchgelesen. Alles laeuft prima, nur das olle „atz“ wird an einem Satz mit Punkt angehaengt.
    picodbg.c (zum Debuggen) ist in seiner Ausgabe ziemlich kryptisch und so weiss ich nicht mehr als dass dieses „atz“ irgendwo in der Textaufbereitung auftritt, also nicht bei der Signalerzeugung – deshalb weiss ich auch, dass es ein „atz“ und nicht etwa ein „ads“, „adts“, „ats“ oder „azz“ ist. 🙂
    Die Status-Funktionen von SVOX liefern uebrigens KEINE Fehler und KEINE Warnungen… ich verzweifele weil ich den Fehler nicht finde … :-/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert