Professionelle Stimme gesucht

Ich habe ein paar Typos in create-soundfiles.sh gefixt und die Reihenfolge sortiert, bin aber zu doof die Datei bei Github hochzuladen… was muss ich genau tun?

1 „Gefällt mir“

In das offizielle TonUINO Repo kannst Du die Datei selber nicht hochladen. Du kannst das Repo Forken, die Änderungen vornehmen und dann einen Pull Request machen. Wenn Thorsten mit den Änderungen einverstanden ist kann er den Pull Request mergen oder eben auch nicht.

1 „Gefällt mir“

Ich habe mich mal für die Google-API angemeldet, scheint aber komplizierter zu sein als gedacht.
Zumindest wenn man am Schluss fertige MP3-Dateien haben möchte.

In welcher Umgebung habt Ihr denn diese SH-Skripte laufen lassen?

Das Shellscript in Thorstens Repo läuft unter MacOS X.

1 „Gefällt mir“

Das passt gut - ich schaue mir zuerst die Amazon API an. Ich werde es mit PowerShell machen. Primär für die Windows User, aber inzwischen ist PowerShell ja auch unter MacOS und Linux lauffähig.

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
10 „Gefällt mir“

Danke Johannes. In welcher Umgebung lässt Du das Skript denn dann laufen?

Das Shellscript sollte man unter Linux und Mac OS X ans laufen bekommen wenn man alle Abhängigkeiten (php cli etc) installiert.

Ich hab das Skript unter macOS laufen lassen und mit brew alle nötigen Pakete installiert. Sollte aber genauso unter Linux laufen.

Kannst du deine MP3-Dateien eventuell bereitstellen? Reicht auch als PM an mich und ich packe sie dann auf Github. Ich denke da du ja quasi dafür gezahlt hast sollte es im Rahmen eines nichtkommerziellen Github Repos OK sein sie dort reinzupacken. Oder was sagen die Lizenzbestimmungen?

Ich bin mit dem Powershell Amazon Skript auch soweit durch. Allerdings ist es auch hier so, dass es ziemlich viele Abhängigkeiten gibt (AWS Module, Amazon Konto). Ein einfaches Skript, welches jeder ausführen kann ist damit meiner Meinung nach nicht zu machen. Ich stelle es gern zur Verfügung aber würde jetzt erstmal die Dateien von Johannes abwarten.

OK, ich habe Thorsten eben meine MP3s geschickt.
Ich habe auf https://cloud.google.com/text-to-speech/ auf die Schnelle keine Einschränkungen gefunden, was die Verbreitung der fertigen MP3s betrifft, von daher sehe ich da keine Probleme.

1 „Gefällt mir“

Ich habe beim experimentieren gesehen, dass die Texte nicht ganz einheitlich sind (z.B. Tag/Karte). Das meinte WhoCares vielleicht auch? Und es gibt Formulierung, die sich einfach nicht gut anhören (z.B. „Zu löschende Karte) - das hat Johannes ja auch schon geändert.
Wir sollten unsere Änderungen in die create-soundfiles.sh einfließen lassen, damit wir alle den gleichen Stand habe, oder was meint ihr?
@Thorsten per pull request?

1 „Gefällt mir“

Hat einer von Euch die Dateien schon in einer “nicht verzerrten” Version erstellt und würde sie bereitstellen? Ich bin mit meiner Google-Cloud-API leider nicht weitergekommen.

Hast du zufällig nen Mac?

1 „Gefällt mir“

ich habe die von Johannes mal ins Git gepusht. Bitte mal testen und Feedback geben

1 „Gefällt mir“

Also ich finde Johannes Sprach-Dateien sehr gelungen - vielen Dank nochmal dafür!

Für Android gibt es übrigens eine App namens T2S, die auch auf die Google TTS-Api zugreift und mit der man die Ausgabe als .wav speichern kann (falls man mal einzelne Dateien austauschen möchte).

Ich habe mir damit jetzt einen Begrüßungs-Satz erstellt : )

Unter https://soundoftext.com/
Kann man auch die Google Translate-Stimme verwenden, um mp3s aus Texten zu generieren.

1 „Gefällt mir“

Ich selber verwende die weibliche Stimme, habe aber auch eine Variante mit männlichem Sprecher, wo die Aussprache noch etwas „runder“, natürlicher ist.
@Thorsten, wenn du möchtest kannst du diese Version auch aufs GIT stellen. Der link, den ich dir geschickt habe, ist noch der gleiche.

Wer dann die neuen Stimmen, z.B. von Google, etwas pitchen möchte, kann wieder SoX verwenden (gibts für alle gängigen Plattformen). Meiner Meinung nach hört sich die Google-Tante schon extrem gut an, aber eben doch wie eine Nachrichtensprecherin. Mit sox und pitch=200 könnte es etwas niedlicher gepimpt werden.