Sprachausgabe (text2speech) am Raspberry Pi

Mit Hilfe des Programmes „espeak“ ist es sehr einfach möglich, eine Sprachausgabe am Raspberry PI zu realisieren. Damit lässt sich dann automatisch der Wetterbericht, die neueste Email oder die neuesten Twitter-News verlesen.

Dazu wird zunächst espeak installiert.

sudo apt-get install espeak python-espeak

Und schon kann es losgehen. Einfach einen Kopfhörer in den Audioausgang des Raspberry PI stecken und genießen:

espeak "An apple a day keeps the doctor away"

Ein Vorlesesewettbewerb lässt sich damit nicht gewinnen, aber eine schöne Spielerei ist es trotzdem.

Noch ein paar Tricks:

# Sprache auf deutsch umstellen
espeak -v german "Fischers Fritz fischt frische Fische"

# schneller
espeak -s 300 -v german "Fischers Fritz fischt frische Fische"

Anstatt den Text direkt auszugeben, kann man ihn auch in eine wav-Datei aufzeichnen:

espeak -w zungenbrecher.wav -s 300 -v german "Fischers Fritz fischt frische Fische"

Wer grad weder Raspberry Pi noch Kopfhörer zur Hand hat, kann sich den Versuch auch hier anhören:

Mit python-espeak lässt sich das ganze auch direkt aus Python steuern:

from espeak import espeak
espeak.synth("A big bug bit the little beetle but the little beetle bit the big bug back.")
espeak.set_voice("de")
espeak.synth("Blaukraut bleibt Blaukraut und Brautkleid bleibt Brautkleid")

while espeak.is_playing:
        time.sleep(0.1)

Links:

  1. http://espeak.sourceforge.net/
  2. https://launchpad.net/python-espeak

9 Gedanken zu „Sprachausgabe (text2speech) am Raspberry Pi

  1. Maximilian Pfläging

    Hallo ich habe alles versucht und es hat auch alles geklappt biss ich es mit python verwenden wollte dann gab er mir keine Sprache aus bite helft mir ich bin am verzweifeln.

    Antworten
  2. martin Beitragsautor

    Hallo,

    ich sage immer gerne: „Geht nicht ist keine hilfreiche Fehlermeldung“.

    Bitte schreib nochmal ein paar Details:

    – Bis wohin funktioniert es?
    – Was funktioniert nicht?
    – Gibt es eine Fehlermeldung?
    – Wie ist der Quelltext?
    – Welche Version vom Raspberry PI verwendest Du?
    – Welche Version von Raspbian?
    – Welche Python-Version? Welche Versionen von ESpeak?
    – Alles, was noch weiterhelfen könnte.

    Danke und Gruß

    Martin

    Antworten
    1. Maximilian Pfläging

      Okay
      Die etwas ausführlichere Erklärung:
      Ich habe das normale Commando für espeak verwendet:
      espeak „An apple a day keeps the doctor away“
      Es hat funktioniert er hat genau das gesagt.
      Allerdings gab es diese Fehlermeldungen:
      ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
      ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
      […] (Gekürzt, da nicht relevant für dieses Problem)

      Es hat trotzdem funktioniert
      Und dan habe ich dass mit dem python dokument versucht.
      Genau das selbe aber
      Es kankt und nichts passiert.

      Der code:
      from espeak import espeak
      espeak.synth(„Hello world.“)
      Raspberry 3 Modell B
      Espeak version: Die neuste schätze ich (Ich hebe keine ahnung wo ich das nachschauen kann)

      Antworten
  3. martin Beitragsautor

    Ich versuche mal, das mal auf einem Raspberry PI 3 nachzuvollziehen. Wird aber in den nächsten Tagen zeitlich schwierig bei mir.

    Antworten
      1. martin Beitragsautor

        Ok, ich habe das nun auf einem Raspberry PI getestet. Scheinbar hat sich inzwischen was an python-espeak geändert. Die Bibliothek läuft jetzt asynchron, das heisst, du stößt die Sprachausgabe an und dann macht das Programm in der nächsten Zeile weiter, während die Sprachausgabe noch läuft. Weil danach nichts mehr kommt ist das Programm sofort zu Ende.

        Gelöst werden kann das mit:

        while espeak.is_playing:
        time.sleep(0.1)

        am Ende des Programmes.

        Bei mir hört das Programm danach nicht mehr auf. Die Sprachausgabe ist zu Ende, aber das Programm beendet sich nicht. Irgendwie funktioniert espeak.is_playing also noch nicht so, wie es soll. Man muss das Programm mit Strg-C abbrechen. Aber zumindesst funktioniert die Sprachausgabe dann. Ich habe den Code oben entsprechend geändert.

        Antworten
  4. jandornhege

    im LXTerminal funktioniert es bei mir so wie bei Maximilian Pfläging aber bei Python mit dem gleichen Code wie oben kommt die Fehlermeldung
    Traceback (most recent call last):
    File „/home/pi/espeak.py“, line 1, in
    from espeak import espeak
    File „/home/pi/espeak.py“, line 1, in
    from espeak import espeak
    ImportError: cannot import name espeak

    Antworten
    1. martin Beitragsautor

      Sieht so aus, als wären die espeak Pakete nicht installiert.

      (Siehe ganz oben im Artikel)

      sudo apt-get install espeak python-espeak

      Antworten

Schreibe einen Kommentar

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