Für “meinen” Tonuino habe ich das mit der Google Wavenet Sprachsynthese via API gemacht. Hier mein krudes Skript:
#!/bin/bash
# replace google api key with your key
GOOGLE_API_KEY=ABCDEFGH12345678
for i in {1..255}
do
j=$(printf %04d $i)
echo $j
curl --header "Content-Type: application/json; charset=utf-8" --data "{
'audioConfig': {'audioEncoding': 'MP3','speakingRate': 1.00,'sampleRateHertz': 44100,'pitch': 0},
'voice': {'languageCode': 'de-DE','name': 'de-DE-Wavenet-C'},
'input': {'text': '${i}'}
}" "https://texttospeech.googleapis.com/v1/text:synthesize?fields=audioContent&key=${GOOGLE_API_KEY}" | php -r "print(json_decode(file_get_contents('php://stdin'),true)['audioContent']);" | base64 --decode > mp3.johannes/${j}.mp3
done
s="$(cat << EOF
0300_new_tag|Diese Karte kenne ich noch nicht! Verwende die Lautstärke-Tasten um einen Ordner für die Karte auszuwählen. Drücke die Pause-Taste um die Auswahl zu speichern.
0310_tag_linked|Alles klar, ich habe die Karte mit dem Ordner verknüpft. Wähle nun mit den Lautstärke-Tasten den Wiedergabemodus aus.
0311_mode_random_episode|Hörspiel-Modus: Eine zufällige Datei aus dem Ordner wiedergeben.
0312_mode_album|Album-Modus: Den kompletten Ordner wiedergeben.
0313_mode_party|Party-Modus: Ordner zufällig wiedergeben.
0314_mode_single_track|Einzel-Modus: Eine bestimmte Datei im Ordner wiedergeben.
0315_mode_audio_book|Hörbuch-Modus: Einen Ordner wiedergeben und den Fortschritt speichern.
0320_select_file|OK, wähle nun bitte die Datei mit den Lautstärke-Tasten aus.
0316_admin|Administrator-Funktionen.
0800_reset_tag|Bitte lege die Karte, die du löschen möchtest, auf! Zum Abbrechen einfach eine der Lautstärke-Tasten drücken.
0801_reset_tag_ok|OK, du kannst die Karte nun wieder neu konfigurieren.
0802_reset_aborted|OK, ich habe den Vorgang abgebrochen.
0999_reset_ok|Reset wurde durchgeführt!
0330_say_number_ask|Soll ich vor einer Datei jeweils die Nummer ansagen? Du kannst jederzeit durch einen langen Druck auf die Pause-Taste die aktuelle Nummer abfragen.
0331_say_number_no|Nein, Nummer nicht ansagen.
0332_say_number_yes|Ja, Nummer ansagen.
0400_tag_ok|OK. Ich habe die Karte konfiguriert.
0401_error|Schade! Das hat leider nicht geklappt!
EOF)"
IFS=$'\n'
for a in `echo "$s"`; do
j=`echo $a | cut -f1 -d'|'`
i=`echo $a | cut -f2 -d'|'`
curl --header "Content-Type: application/json; charset=utf-8" --data "{
'audioConfig': {'audioEncoding': 'MP3','speakingRate': 1.00,'sampleRateHertz': 44100,'pitch': 0},
'voice': {'languageCode': 'de-DE','name': 'de-DE-Wavenet-C'},
'input': {'text': '${i}'}
}" "https://texttospeech.googleapis.com/v1/text:synthesize?fields=audioContent&key=${GOOGLE_API_KEY}" | php -r "print(json_decode(file_get_contents('php://stdin'),true)['audioContent']);" | base64 --decode > mp3.johannes/${j}.mp3
done