RealtimeTTS est une bibliothèque Python avancée de synthèse vocale (TTS) en temps réel, conçue spécifiquement pour les applications en temps réel nécessitant une faible latence et une sortie audio de haute qualité. Cette bibliothèque est capable de convertir rapidement des flux de texte en une sortie audio de haute qualité avec une latence minimale, ce qui la rend idéale pour la construction d'assistants vocaux, de systèmes de dialogue IA et d'outils d'accessibilité.
Adresse du projet: https://github.com/KoljaB/RealtimeTTS
RealtimeTTS prend en charge plusieurs moteurs TTS, offrant un large éventail de choix :
pip install -U realtimetts[all]
Vous pouvez choisir des supports de moteur spécifiques selon vos besoins :
# TTS système uniquement
pip install realtimetts[system]
# Support Azure
pip install realtimetts[azure]
# Combinaison de plusieurs moteurs
pip install realtimetts[azure,elevenlabs,openai]
all
: Installation complète, prend en charge tous les moteurs.system
: TTS système local (pyttsx3).azure
: Prise en charge du service vocal Azure.elevenlabs
: Intégration de l'API ElevenLabs.openai
: Service TTS d'OpenAI.gtts
: Google Text-to-Speech.edge
: Microsoft Edge TTS.coqui
: Moteur Coqui TTS.minimal
: Paquet de base uniquement (pour le développement de moteurs personnalisés).play_async()
prend en charge la lecture non bloquante.play()
est utilisée pour la lecture bloquante.Fournit de riches fonctions de rappel pour la surveillance et le contrôle :
on_text_stream_start()
: Déclenché au début du flux de texte.on_text_stream_stop()
: Déclenché à la fin du flux de texte.on_audio_stream_start()
: Déclenché au début de la lecture audio.on_audio_stream_stop()
: Déclenché à la fin de la lecture audio.on_character()
: Déclenché lors du traitement de chaque caractère.on_word()
: Synchronisation temporelle au niveau du mot (prise en charge des moteurs Azure et Kokoro).from RealtimeTTS import TextToAudioStream, SystemEngine
# Créer un moteur et un flux
engine = SystemEngine()
stream = TextToAudioStream(engine)
# Entrer du texte et lire
stream.feed("Hello world! How are you today?")
stream.play_async()
# Traiter une chaîne de caractères
stream.feed("Hello, this is a sentence.")
# Traiter un générateur (adapté aux sorties LLM)
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)
# Traiter un itérateur de caractères
char_iterator = iter("Streaming this character by character.")
stream.feed(char_iterator)
# Lecture asynchrone
stream.play_async()
while stream.is_playing():
time.sleep(0.1)
# Lecture synchrone
stream.play()
# Opérations de contrôle
stream.pause() # Pause
stream.resume() # Reprise
stream.stop() # Arrêt
stream = TextToAudioStream(
engine=engine, # Moteur TTS
on_text_stream_start=callback, # Rappel au début du flux de texte
on_audio_stream_start=callback, # Rappel au début du flux audio
output_device_index=None, # Périphérique de sortie audio
tokenizer="nltk", # Sélection du tokenizer
language="en", # Code de langue
muted=False, # Muet ou non
level=logging.WARNING # Niveau de journalisation
)
stream.play(
fast_sentence_fragment=True, # Traitement rapide des fragments de phrases
buffer_threshold_seconds=0.0, # Seuil de mise en mémoire tampon
minimum_sentence_length=10, # Longueur minimale de la phrase
log_synthesized_text=False, # Enregistrer le texte synthétisé
reset_generated_text=True, # Réinitialiser le texte généré
output_wavfile=None, # Enregistrer dans un fichier WAV
on_sentence_synthesized=callback, # Rappel à la fin de la synthèse de la phrase
before_sentence_synthesized=callback, # Rappel avant la synthèse de la phrase
on_audio_chunk=callback # Rappel lorsqu'un bloc audio est prêt
)
from RealtimeTTS import OpenAIEngine
engine = OpenAIEngine(
api_key="your-api-key", # Ou définir la variable d'environnement OPENAI_API_KEY
voice="alloy", # Facultatif: alloy, echo, fable, onyx, nova, shimmer
model="tts-1" # Ou tts-1-hd
)
from RealtimeTTS import AzureEngine
engine = AzureEngine(
speech_key="your-speech-key", # Ou définir la variable d'environnement AZURE_SPEECH_KEY
service_region="your-region", # Par exemple: "eastus"
voice_name="en-US-AriaNeural" # Nom de la voix Azure
)
from RealtimeTTS import CoquiEngine
engine = CoquiEngine(
voice="path/to/voice/sample.wav", # Fichier source de clonage vocal
language="en" # Code de langue
)
Le projet fournit de nombreux exemples de test :
simple_test.py
: Démonstration basique "Hello World".complex_test.py
: Démonstration complète des fonctionnalités.coqui_test.py
: Test du moteur Coqui TTS local.translator.py
: Traduction multilingue en temps réel (nécessite l'installation de openai realtimestt
).openai_voice_interface.py
: Interface API OpenAI à activation vocale.advanced_talk.py
: Système de dialogue avancé.minimalistic_talkbot.py
: Chatbot simple en 20 lignes de code.test_callbacks.py
: Fonctionnalités de rappel et tests de latence.Pour de meilleures performances, en particulier lors de l'utilisation de moteurs neuronaux locaux, il est recommandé d'installer le support CUDA :
# 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 fait partie d'un écosystème plus vaste :
Le projet lui-même est open source, mais il est important de noter les restrictions de licence de chaque moteur :
RealtimeTTS est une bibliothèque de synthèse vocale en temps réel puissante et bien conçue, adaptée aux applications modernes nécessitant une synthèse vocale de haute qualité et à faible latence. Sa prise en charge de plusieurs moteurs, ses mécanismes robustes de gestion des erreurs et ses nombreuses options de configuration en font un choix idéal pour la construction d'applications vocales de qualité professionnelle. Que ce soit pour des projets personnels ou des applications d'entreprise, RealtimeTTS peut fournir une solution fiable et efficace.