RealtimeTTS ist eine fortschrittliche Echtzeit-Text-zu-Sprache (TTS) Python-Bibliothek, die speziell für Echtzeitanwendungen entwickelt wurde, die eine geringe Latenz und eine hochwertige Audioausgabe erfordern. Die Bibliothek kann Textströme schnell in hochwertige Audioausgaben umwandeln, mit extrem geringer Latenz, was sie ideal für die Erstellung von Sprachassistenten, KI-Dialogsystemen und Barrierefreiheitstools macht.
Projektadresse: https://github.com/KoljaB/RealtimeTTS
RealtimeTTS unterstützt verschiedene TTS-Engines und bietet eine große Auswahl:
pip install -U realtimetts[all]
Sie können bestimmte Engine-Unterstützungen nach Bedarf auswählen:
# Nur System-TTS
pip install realtimetts[system]
# Azure-Unterstützung
pip install realtimetts[azure]
# Mehrere Engine-Kombinationen
pip install realtimetts[azure,elevenlabs,openai]
all
: Vollständige Installation, unterstützt alle Engines.system
: Lokale System-TTS (pyttsx3).azure
: Azure Sprachdienste-Unterstützung.elevenlabs
: ElevenLabs API-Integration.openai
: OpenAI TTS-Service.gtts
: Google Text-zu-Sprache.edge
: Microsoft Edge TTS.coqui
: Coqui TTS-Engine.minimal
: Nur Kernpaket (für die Entwicklung benutzerdefinierter Engines).play_async()
unterstützt die nicht-blockierende Wiedergabe.play()
wird für die blockierende Wiedergabe verwendet.Bietet umfangreiche Callback-Funktionen zur Überwachung und Steuerung:
on_text_stream_start()
: Wird beim Start des Textstroms ausgelöst.on_text_stream_stop()
: Wird beim Ende des Textstroms ausgelöst.on_audio_stream_start()
: Wird beim Start der Audiowiedergabe ausgelöst.on_audio_stream_stop()
: Wird beim Ende der Audiowiedergabe ausgelöst.on_character()
: Wird bei der Verarbeitung jedes Zeichens ausgelöst.on_word()
: Zeitsynchronisation auf Wortebene (unterstützt Azure- und Kokoro-Engines).from RealtimeTTS import TextToAudioStream, SystemEngine
# Erstellen Sie Engine und Stream
engine = SystemEngine()
stream = TextToAudioStream(engine)
# Geben Sie Text ein und spielen Sie ihn ab
stream.feed("Hello world! How are you today?")
stream.play_async()
# Verarbeitung von Zeichenketten
stream.feed("Hello, this is a sentence.")
# Verarbeitung von Generatoren (geeignet für LLM-Ausgabe)
def write(prompt: str):
for chunk in openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
stream=True
):
if (text_chunk := chunk["choices"][0]["delta"].get("content")) is not None:
yield text_chunk
text_stream = write("A three-sentence relaxing speech.")
stream.feed(text_stream)
# Verarbeitung von Zeicheniteratoren
char_iterator = iter("Streaming this character by character.")
stream.feed(char_iterator)
# Asynchrone Wiedergabe
stream.play_async()
while stream.is_playing():
time.sleep(0.1)
# Synchrone Wiedergabe
stream.play()
# Steuerungsoperationen
stream.pause() # Pause
stream.resume() # Fortsetzen
stream.stop() # Stoppen
stream = TextToAudioStream(
engine=engine, # TTS-Engine
on_text_stream_start=callback, # Callback beim Start des Textstroms
on_audio_stream_start=callback, # Callback beim Start des Audiostroms
output_device_index=None, # Audioausgabegerät
tokenizer="nltk", # Tokenizer-Auswahl
language="en", # Sprachcode
muted=False, # Stummgeschaltet
level=logging.WARNING # Protokollierungsstufe
)
stream.play(
fast_sentence_fragment=True, # Schnelle Satzfragmentverarbeitung
buffer_threshold_seconds=0.0, # Pufferschwelle
minimum_sentence_length=10, # Minimale Satzlänge
log_synthesized_text=False, # Synthetisierten Text protokollieren
reset_generated_text=True, # Generierten Text zurücksetzen
output_wavfile=None, # In WAV-Datei speichern
on_sentence_synthesized=callback, # Callback nach Satzsynthese
before_sentence_synthesized=callback, # Callback vor Satzsynthese
on_audio_chunk=callback # Callback für Audio-Chunk bereit
)
from RealtimeTTS import OpenAIEngine
engine = OpenAIEngine(
api_key="your-api-key", # Oder Umgebungsvariable OPENAI_API_KEY setzen
voice="alloy", # Optional: alloy, echo, fable, onyx, nova, shimmer
model="tts-1" # Oder tts-1-hd
)
from RealtimeTTS import AzureEngine
engine = AzureEngine(
speech_key="your-speech-key", # Oder Umgebungsvariable AZURE_SPEECH_KEY setzen
service_region="your-region", # Zum Beispiel: "eastus"
voice_name="en-US-AriaNeural" # Azure Sprachname
)
from RealtimeTTS import CoquiEngine
engine = CoquiEngine(
voice="path/to/voice/sample.wav", # Sprachklonierungs-Quelldatei
language="en" # Sprachcode
)
Das Projekt bietet umfangreiche Testbeispiele:
simple_test.py
: Grundlegende "Hello World"-Demo.complex_test.py
: Vollständige Funktionsdemo.coqui_test.py
: Lokaler Coqui TTS-Engine-Test.translator.py
: Echtzeit-Mehrsprachübersetzung (erfordert die Installation von openai realtimetts
).openai_voice_interface.py
: Sprachaktivierte OpenAI API-Schnittstelle.advanced_talk.py
: Fortgeschrittenes Dialogsystem.minimalistic_talkbot.py
: Einfacher Chatbot in 20 Zeilen Code.test_callbacks.py
: Callback-Funktionen und Latenztests.Für eine bessere Leistung, insbesondere bei Verwendung lokaler neuronaler Engines, wird die Installation von CUDA-Unterstützung empfohlen:
# CUDA 11.8
pip install torch==2.5.1+cu118 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu118
# CUDA 12.X
pip install torch==2.5.1+cu121 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu121
RealtimeTTS ist Teil eines größeren Ökosystems:
Das Projekt selbst ist Open Source, aber es ist wichtig, die Lizenzbeschränkungen der einzelnen Engines zu beachten:
RealtimeTTS ist eine leistungsstarke und gut gestaltete Echtzeit-Text-zu-Sprache-Bibliothek, die sich für moderne Anwendungen eignet, die eine hochwertige Sprachsynthese mit geringer Latenz erfordern. Die Unterstützung mehrerer Engines, die robusten Fehlerbehandlungsmechanismen und die umfangreichen Konfigurationsoptionen machen sie zu einer idealen Wahl für die Erstellung professioneller Sprachanwendungen. Ob für persönliche Projekte oder Unternehmensanwendungen, RealtimeTTS bietet eine zuverlässige und effiziente Lösung.