Im April dieses Jahres hatte ich bereits ChatGPT als Podcast-Gast zum Thema New Learning . Nun stehe ich vor der Veröffentlichung einer neuen Podcastfolge mit ChatGPT zum Thema Microlearning und war auf der Suchte nach einer kostengünstigen Text-to-Speech-Lösung.
API von OpenAI Text-to-Speech
Obwohl es einige sicher gute kostenpflichtige Optionen wie Elevenlabs oder Murf gibt, wollte ich für eine einzelne Podcastfolge kein Abo abschließen und verschiedene Lösungen ausprobieren. Glücklicherweise stieß ich in der neuesten OpenAI API Version auf die Text-to-Speech-Option. Sicherlich sind andere Angebote dieser Variante überlegen, aber für den angedachten Zweck reichte es mir aus. Dazu kommt noch, dass die OpenAI API die Kosten verbrauchsabhängig berechnet. Meine Schätzung liegt bei weniger als 10 Cent für 3 Minuten Audio.
Erfahrungen mit der OpenAI API
Nach einem ersten Check der API bemerkte ich zwar keine offensichtliche Option zum Ändern der Ausgabesprache auf Deutsch. Doch kurzerhand entschied ich mich, einfach einen deutschen Text zu verwenden und testweise eine Sprachausgabe aus einem meiner Podcast-Shownotes zu generieren. Überraschend funktionierte es auf Anhieb einwandfrei. Die Engine erkannte automatisch die Sprache und wandelte den deutschen Text problemlos in gesprochene Sprache um.
Die Stimmen: Eine Auswahlmöglichkeit
Die API bietet sechs verschiedene Stimmen. Um die Stimmen zu vergleichen, ließ ich einen Test-Satz von jeder Stimme generieren. Für mein nächstes ChatGPT Podcast-Projekt benötigte ich zwei Stimmen, die sich deutlich voneinander unterscheiden. Einige Stimmen klangen einfach zu ähnlich. Hier die verschiedenen Stimmen, damit ihr euch selbst einen Eindruck davon machen könnt:
Audios
Praktische Anwendung: Beispiel-Code
Eine Herausforderung besteht natürlich bei einer API darin, dass man ein wenig Programmierkenntnisse benötigt. Aber dank ChatGPT wird programmieren ja auch für Ungeübte immer einfacher. Um euch einen Eindruck davon zu verschaffen, teile ich hier einen Beispiel-Code, mit dem ihr Text in Sprache umwandeln könnt. Beachtet jedoch, dass ihr zunächst ein API-Key benötigt.
from pathlib import Path
from openai import OpenAI
client = OpenAI()
fname = f'Text_to_speech.mp3'
# Possible voices = ['alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer']
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Das digitale Zeitalter hat längst Einzug in unsere Unternehmen gehalten, und der Mittelstand bildet dabei keine Ausnahme.",
speed=1.0
)
response.stream_to_file(fname)
Mehrere Audiodateien auf einmal erstellen
Für die effiziente Erstellung mehrerer Audiodateien für eine Podcastfolge habe ich ein minimal längeres Programm geschrieben. Dieses erstellt für alle .txt-Dateien in einem Ordner entsprechende Audio-Dateien. Wer den Code genauer verstehen möchte kann sich diesen übrigens auch von ChatGPT erklären lassen.
from pathlib import Path
import os
from openai import OpenAI
f_folder = "C:\\temp\\Podcast" # Hier den Ordner eintragen, in dem die .txt Dateien liegen. \ im Pfad durch \\ ersetzen.
client = OpenAI()
files = sorted(os.listdir(f_folder))
def read_text_file(file_path):
try:
with open(file_path, 'r',encoding='utf-8') as file:
# Lies den gesamten Inhalt der Datei in eine Variable
file_content = file.read()
return file_content
except FileNotFoundError:
print(f"Die Datei '{file_path}' wurde nicht gefunden.")
return None
except Exception as e:
print(f"Ein Fehler ist aufgetreten: {e}")
return None
def tts_make_audio (text,voice,file_path):
response = client.audio.speech.create(
model="tts-1",
voice=voice,
input=text
)
response.stream_to_file(file_path)
for file_name in files:
# Check if the file starts with a number and ends with ".txt"
if file_name[0].isdigit() and file_name.endswith(".txt"):
new_file_name = os.path.splitext(file_name)[0] + ".mp3"
new_file_path = os.path.join(f_folder, new_file_name)
print ("Creating file" + new_file_path)
speaker_text = read_text_file(os.path.join(f_folder,file_name))
tts_make_audio(speaker_text,'alloy',new_file_path)
Fazit
Persönlich gefällt mir die Möglichkeit, mit der OpenAI API und Python Sprachdateien schnell und einfach erstellen zu können. Sicherlich wird die auch die Qualität und die Vielfalt der angebotenen Sprachen bei OpenAI steigen, und damit auch der mögliche nutzen noch größer werden. Vermutlich gibt es schon erste Tools, die intern die API nutzen und den Zugang zu den Funktionalitäten auch ohne Programmiererfahrung ermöglichen.
Ergänzende Links und Bildquelle
- Dokumentation von OpenAI: Text to Speech – OpenAI API
- Beitragsbild erstellt mit https://bing.com/create / Dall-e-3. Prompt:
Design of a stock image. A talking robot with a speech bubble in a digital modern, matrix like environment.
Verpasse keine Updates – Jetzt abonnieren!
Dir hat der Beitrag gefalllen?
Abonniere den Newsletter und bleibe Up-To-Date. Erhalte alle 1-2 Monate einen Überblick über die neuesten Podcastfolgen, Blogbeiträge und spannenden Netzfunden.
Ich freue mich, dich beim Newsletter begrüßen zu dürfen!
Also bei mir hat er leider egal welches Model ich verwende und wie ich meine Texte schreibe immer eine sehr breite englische Aussprache.
Hi Christoph,
ich hatte ein ähnliches Problem und meine interpretation war, dass das Model immer dann eine eher englische Aussprache nutzen, wenn in dem deutschen Text auch englischsprachige Worte vorkamen, was sich ja leider nicht vermeiden lässt. Ideal ist die Lösung noch nicht, aber ich könnte mir vorstellen, dass in neueren Versionen mehr Optionen zur Verfügung stehen werden.