Sprachsynthese: Lass den Computer sprechen!

Jetzt wird es richtig cool! Mit der Bibliothek soundsystem und weiteren in TigerJython bereits eingebauten Komponenten kannst du den Computer auch richtig sprechen lassen! Und zwar jeden Text, den du möchtest!

Probiere mal das hier aus:

from soundsystem import *
initTTS() # Text To Speech starten
selectVoice("german-man") # Stimme wählen
voice = generateVoice("Hallo, ich kann sprechen!")
openSoundPlayer(voice)
play()

Nach kurzer Initialisierungszeit sagt der Computer deutlich: »Hallo, ich kann sprechen!«

Du brauchst dazu das Soundsystem, das ganz normal importiert wird, dann musst du das TTS (»Text To Speech«) System starten, das geht mit dem Befehl initTTS(). Anschließend muss eine Stimme gewählt werden, das geht mit selectVoice("stimme") – statt »german-man« kannst du gerne auch »german-woman« wählen. Jetzt musst du den Klang deines Textes erzeugen. Das machst du mit der Funktion generateVoice() – das Ergebnis davon öffnet du im Soundplayer und startest ihn, wie mit wav-Dateien auch, nur dass statt einer Datei eine selbst erzeugte Stimmausgabe gespielt wird.

Die ersten drei Befehle brauchen nur einmal am Anfang des Programms ausgeführt werden. Danach kannst du die Stimme mit beliebigen Inhalten immer wieder mit den drei Befehlen

voice = generateVoice("Text oder Variable")
openSoundPlayer (voice)
play()

abspielen.

Wie wäre es mit einem sprechenden Additionsrechner:

from soundsystem import *
initTTS()
selectVoice("german-man")

x = input("Gib eine Zahl ein:")
y = input("Jetzt die zweite:")
rechnung = str(x)+" plus "+str(y)+" = "+str(x+y)

voice = generateVoice(rechnung)
openSoundPlayer(voice)
play()

Du gibst nacheinander zwei Zahlen ein, und der Computer spricht die Additionsaufgabe samt Ergebnis!

Auch in anderen Programmen kann Sprache den Reiz deutlich erhöhen. Zum Beispiel das Zahlenratespiel: Wie wäre es, wenn der Computer dir nur sagt, ob die Zahl zu klein oder zu groß ist oder stimmt? Viel lustiger. So würde das Zahlenratespiel mit Stimmausgabe aussehen:

import random
from soundsystem import *
initTTS()
selectVoice("german-man")

zufallszahl = random.randint(1,100)
eingabe = 0
while eingabe != zufallszahl:
eingabe = input("Rate die Zahl:")
if eingabe > zufallszahl:
voice = generateVoice(str(eingabe)+" ist zu groß.")
if eingabe < zufallszahl:
voice = generateVoice(str(eingabe)+" ist zu klein.")
openSoundPlayer(voice)
play()

voice = generateVoice("Glückwunsch, "+str(eingabe)+" ist die richtige Zahl!")
openSoundPlayer(voice)
play()