Text to Speech mit Audiogenipy

  Ralf Hersel   Lesezeit: 4 Minuten  🗪 8 Kommentare Auf Mastodon ansehen

Googles freie Text-to-Speech Engine lässt sich sehr einfach in eigenen Projekten oder im Terminal verwenden.

text to speech mit audiogenipy

Gelegentlich stolpert man über Anwendungen oder Skripte, die sich auf ein, zwei, drei Befehle reduzieren lassen. In den letzten Jahren erstelle ich immer weniger grafische Benutzeroberflächen für meine Programme, weil mir das zu mühsam ist und sich der Erfolg auch über ein paar Befehle auf der Kommandozeile oder mit einem einfachen Python-Skript erzielen lässt.

Letzte Woche lief das Programm Audiogenipy durch meine Timeline - ein Python-Skript, mit dem man Texte in Audio-Dateien umwandeln kann (Text-to-Speech). Im Gist wird das als Audiobook-Ersteller angepriesen; nun gut, ein wenig Marketing kann nicht schaden. Wer nicht weiss, was ein Gist ist:

GitHub bietet eine Funktion namens GitHub Gist an, die es den Nutzern erleichtert, textbasierte Inhalte, Notizen und Codeschnipsel zu teilen. Es bietet eine einfache, leichtgewichtige Methode zum Verwalten und Teilen kleiner Inhalte wie Skripte, Konfigurationsdateien und sogar Dokumentation.

Vor drei Jahren habe ich schon einmal über Text-to-Speech geschrieben. Dieser Artikel ist nach wie vor gültig. Darin beschreibe ich den Unterschied zwischen Espeak und Googles TTS-Engine. Bevor ihr Wutpickel bekommt: Googles gTTS ist Freie Software und steht unter der MIT-Lizenz. Um es kurzzufassen, Espeak klingt wie aus der Tonne, während gTTS eine fast natürliche Sprachwiedergabe liefert. Leider ist man auf eine Frauenstimme beschränkt, kann aber die Sprache (de, en, usw.) auswählen.

In diesem Artikel möchte ich zeigen, wie man gTTS in eigenen Projekten verwenden kann. Dazu installiert man zuerst die TTS-Engine. Öffnet die Paketverwaltung eurer Distribution und sucht nach 'gtts'. Bei Manjaro findet ihr das:

Darin ist das Python-Modul und die CLI-API enthalten. Bitte installiert das Ding nicht über: pip install gTTS. Warum? Ihr wollt nicht x verschiedene Paketverwaltungen auf eurem System haben. Seid froh, wenn euer Paketmanager die nativen Pakete und Flatpaks beherrscht. Gute Paketmanager bieten auch die Python-Module an. Diese Paketnamen beginnen üblicherweise mit dem Prefix 'python-' (siehe Screenshot).

Wer gTTS in Python-Skripten verwenden möchte, braucht nicht die Bells and Whistles von Audiogenipy. Schaut man in den Code, reduziert sich die Magie auf zwei Befehle; der Rest ist Benutzerführung und Datei-Handling. Öffnet doch mal ein Terminal und ruft eine Python-Konsole auf. Dort gebt ihr das (Zeile für Zeile mit RETURN) ein:

from gtts import gTTS
text = "Das ist ein Beispieltext. Er ist nicht zu lang, aber kurz."
tts = gTTS(text, lang='de')
tts.save('text.mp3')

Fertig ist die Wurst. Danach könnt ihr die Python-Konsole mit Ctrl+Z verlassen und euch die MP3-Datei anhören. Wer ein wenig Python kann, wird diese Befehle ohne Probleme in sein eigenes Programm einbauen können. Mit Vorteil liest man den Text aus einer Datei aus, anstatt ihn direkt als String anzugeben.

Hinweis für Einsteiger:innen

Falls ihr nur Bahnhof versteht und euch dieser Artikel zu kompliziert ist - lasst es mich in den Kommentaren wissen. Ich erkläre es gerne einfacher. Das gilt für alle Artikel bei GNU/Linux.ch - doch das ist einen eigenen Artikel wert.

P.S.: Viele Grüsse an Pascal für deine Anregung zu einsteigerfreundlichen Artikeln.

Titelbild: Stable Diffusion 'Text to Speech'

Quellen:

https://gist.github.com/ostechnix/77b89b53877bf492cef35cc59f64a795

https://ostechnix.com/audiogenipy-create-audiobook-python-gtts/

https://gtts.readthedocs.io/en/stable/license.html

https://github.com/espeak-ng/espeak-ng

Tags

gTTS, Text-to-Speech, Python, TTS

Robert
Geschrieben von Robert am 2. Januar 2025 um 16:32

Wer weitere Möglichkeiten für "Text to Speech" oder umgekehrt "Audio/Speech/Voice to Text" sucht, der findet hier eine komplette Übersicht mit sehr vielen weiteren Lösungen: https://neoxion.net/text-speech-tools/

Pascal
Geschrieben von Pascal am 2. Januar 2025 um 20:08

Super Artikel, den habe sogar i c h verstanden! :)

ben
Geschrieben von ben am 2. Januar 2025 um 21:16

Nur damit ich das richtig verstehe, findet der TTS-Vorgang lokal statt oder auf Servern von Google?

Benni
Geschrieben von Benni am 3. Januar 2025 um 10:23

Probiere es doch mal aus. Kappe alle Netzwerkverbindungen und starte das Beispiel.

Mancus Nemo
Geschrieben von Mancus Nemo am 4. Januar 2025 um 17:27

Wird auf den Gooleservern berechnet und dir dann die Datei geschickt. Es gibt eine bessere Lösung die sich Thorsten-Voice TTS nennt. Hab ich hier im Kommentar wo anders das passende Youtube Video schon dazu geschrieben.

Hauke
Geschrieben von Hauke am 4. Januar 2025 um 17:56

Nein, es braucht eine Verbindung zu translate.google.com.

Mancus Nemo
Geschrieben von Mancus Nemo am 4. Januar 2025 um 17:24

Hallo,

nein die Anleitung ist leider nicht perfekt. ich musste erst mal herausfinden wie man die Pythonkonsole auf macht. In Mint ist das sogar phyton3 hätte man ja mal hin schreiben können.

Dann der nächste Klopper - wenn man kein Manjaro verwendet - viel zu viele verwenden Linux Mint. Daher hab ich das damit auch gleich mal aus gecheckt. Man muss sich die Pakete aus Debian Sid zusammen klauen, dann funktioniert es aber reibungslos.

Aber warum der Klaut vertrauen, die Klaut doch nur. Ich hab dann mal selber gesucht im Netz und bin auf die Thorsten Stimme gekommen, da kann man das sich alles selber Hosten. Die Textanleitung ist da auch falsch, aber das Youtubevideo zeigte es richtig.

https://www.youtube.com/watch?v=uyG1Sx7_3Yg&t=2s

YM2C :)

Ralf Hersel Admin
Geschrieben von Ralf Hersel am 4. Januar 2025 um 21:59

Das gefällt mir. Über die Cloud jammern, aber Youtube-Links posten. Genau mein Humor :)