Una biblioteca Python avanzada de texto a voz en tiempo real que admite múltiples motores TTS, con baja latencia y salida de audio de alta calidad.
Introducción Detallada al Proyecto RealtimeTTS
Resumen del Proyecto
RealtimeTTS es una biblioteca de Python avanzada de texto a voz (TTS) en tiempo real, diseñada específicamente para aplicaciones en tiempo real que requieren baja latencia y salida de audio de alta calidad. Esta biblioteca puede convertir rápidamente flujos de texto en salidas de audio de alta calidad con una latencia mínima, lo que la hace ideal para construir asistentes de voz, sistemas de diálogo de IA y herramientas de accesibilidad.
Dirección del Proyecto: https://github.com/KoljaB/RealtimeTTS
Características Principales
1. Procesamiento de Baja Latencia
- Conversión de texto a voz casi instantánea: Flujos de procesamiento optimizados que garantizan una latencia mínima.
- Compatibilidad con salida LLM: Puede procesar directamente la salida de flujo de modelos de lenguaje grandes.
- Procesamiento de flujo en tiempo real: Soporta procesamiento en tiempo real a nivel de carácter y de frase.
2. Salida de Audio de Alta Calidad
- Voz clara y natural: Genera voz natural que se asemeja a la humana.
- Soporte para múltiples formatos de audio: Soporta varios formatos de salida de audio.
- Parámetros de audio configurables: Permite ajustar la frecuencia de muestreo, la tasa de bits, etc.
3. Soporte Multi-Motor
RealtimeTTS soporta múltiples motores TTS, ofreciendo una amplia gama de opciones:
Motores en la Nube 🌐
- OpenAIEngine: Servicio TTS de OpenAI, que ofrece 6 voces de alta calidad.
- AzureEngine: Servicio de voz de Microsoft Azure, con 500,000 caracteres gratuitos al mes.
- ElevenlabsEngine: Calidad de voz premium, que ofrece una amplia gama de opciones de voz.
- GTTSEngine: TTS gratuito de Google Translate, no requiere GPU.
- EdgeEngine: Servicio TTS gratuito de Microsoft Edge.
Motores Locales 🏠
- CoquiEngine: TTS neuronal de alta calidad, soporta procesamiento local y clonación de voz.
- ParlerEngine: TTS neuronal local, adecuado para GPU de gama alta.
- SystemEngine: TTS del sistema incorporado, configuración rápida.
- PiperEngine: Sistema TTS extremadamente rápido, incluso puede ejecutarse en Raspberry Pi.
- StyleTTS2Engine: Síntesis de voz estilizada.
- KokoroEngine: Nuevo motor que soporta múltiples idiomas.
- OrpheusEngine: Opción de motor agregada recientemente.
4. Soporte Multi-Idioma
- Soporta la síntesis de voz en múltiples idiomas.
- Segmentación inteligente de frases y detección de idiomas.
- Parámetros específicos del idioma configurables.
5. Robustez y Fiabilidad
- Mecanismo de conmutación por error: Cambia automáticamente a un motor de respaldo cuando un motor falla.
- Garantía de funcionamiento continuo: Asegura un rendimiento y una fiabilidad consistentes para casos de uso críticos y profesionales.
- Manejo de errores: Manejo de errores y mecanismos de recuperación completos.
Instalación
Instalación Recomendada (Versión Completa)
pip install -U realtimetts[all]
Instalación Personalizada
Puede seleccionar el soporte de motor específico según sea necesario:
# Solo TTS del sistema
pip install realtimetts[system]
# Soporte de Azure
pip install realtimetts[azure]
# Combinación de múltiples motores
pip install realtimetts[azure,elevenlabs,openai]
Opciones de Instalación Disponibles
all
: Instalación completa, soporta todos los motores.system
: TTS del sistema local (pyttsx3).azure
: Soporte del servicio de voz de Azure.elevenlabs
: Integración de la API de ElevenLabs.openai
: Servicio TTS de OpenAI.gtts
: Texto a voz de Google.edge
: TTS de Microsoft Edge.coqui
: Motor Coqui TTS.minimal
: Solo el paquete central (para el desarrollo de motores personalizados).
Componentes Principales
1. Procesamiento de Flujo de Texto
- Detección de límites de frases: Soporta tokenizadores NLTK y Stanza.
- Segmentación inteligente: Segmenta el texto según la puntuación y las reglas del idioma.
- Procesamiento de flujo: Soporta iteradores y generadores de caracteres.
2. Gestión de Flujo de Audio
- Reproducción asíncrona: El método
play_async()
soporta la reproducción no bloqueante. - Reproducción síncrona: El método
play()
se utiliza para la reproducción bloqueante. - Control de flujo: Soporta operaciones de pausa, reanudación y detención.
3. Sistema de Retrollamadas (Callbacks)
Proporciona una rica colección de funciones de retrollamada para monitorear y controlar:
on_text_stream_start()
: Se activa cuando comienza el flujo de texto.on_text_stream_stop()
: Se activa cuando finaliza el flujo de texto.on_audio_stream_start()
: Se activa cuando comienza la reproducción de audio.on_audio_stream_stop()
: Se activa cuando finaliza la reproducción de audio.on_character()
: Se activa cuando se procesa cada carácter.on_word()
: Sincronización de tiempo a nivel de palabra (soporta los motores Azure y Kokoro).
Ejemplos de Uso Básico
Uso Simple
from RealtimeTTS import TextToAudioStream, SystemEngine
# Crear motor y flujo
engine = SystemEngine()
stream = TextToAudioStream(engine)
# Introducir texto y reproducir
stream.feed("¡Hola mundo! ¿Cómo estás hoy?")
stream.play_async()
Procesamiento de Texto en Flujo
# Procesar cadena
stream.feed("Hola, esta es una frase.")
# Procesar generador (adecuado para salida 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("Un discurso relajante de tres frases.")
stream.feed(text_stream)
# Procesar iterador de caracteres
char_iterator = iter("Transmitiendo este carácter por carácter.")
stream.feed(char_iterator)
Control de Reproducción
# Reproducción asíncrona
stream.play_async()
while stream.is_playing():
time.sleep(0.1)
# Reproducción síncrona
stream.play()
# Operaciones de control
stream.pause() # Pausa
stream.resume() # Reanuda
stream.stop() # Detiene
Configuración Avanzada
Parámetros de TextToAudioStream
stream = TextToAudioStream(
engine=engine, # Motor TTS
on_text_stream_start=callback, # Retrollamada al inicio del flujo de texto
on_audio_stream_start=callback, # Retrollamada al inicio del flujo de audio
output_device_index=None, # Dispositivo de salida de audio
tokenizer="nltk", # Selección de tokenizador
language="en", # Código de idioma
muted=False, # Si está silenciado
level=logging.WARNING # Nivel de registro
)
Parámetros de Reproducción
stream.play(
fast_sentence_fragment=True, # Procesamiento rápido de fragmentos de frases
buffer_threshold_seconds=0.0, # Umbral de búfer
minimum_sentence_length=10, # Longitud mínima de la frase
log_synthesized_text=False, # Registrar texto sintetizado
reset_generated_text=True, # Restablecer texto generado
output_wavfile=None, # Guardar en archivo WAV
on_sentence_synthesized=callback, # Retrollamada al finalizar la síntesis de la frase
before_sentence_synthesized=callback, # Retrollamada antes de la síntesis de la frase
on_audio_chunk=callback # Retrollamada cuando el fragmento de audio está listo
)
Configuración Específica del Motor
Motor OpenAI
from RealtimeTTS import OpenAIEngine
engine = OpenAIEngine(
api_key="your-api-key", # O establecer la variable de entorno OPENAI_API_KEY
voice="alloy", # Opcional: alloy, echo, fable, onyx, nova, shimmer
model="tts-1" # O tts-1-hd
)
Motor Azure
from RealtimeTTS import AzureEngine
engine = AzureEngine(
speech_key="your-speech-key", # O establecer la variable de entorno AZURE_SPEECH_KEY
service_region="your-region", # Por ejemplo: "eastus"
voice_name="en-US-AriaNeural" # Nombre de la voz de Azure
)
Motor Coqui (Clonación de Voz)
from RealtimeTTS import CoquiEngine
engine = CoquiEngine(
voice="path/to/voice/sample.wav", # Archivo fuente de clonación de voz
language="en" # Código de idioma
)
Archivos de Prueba
El proyecto proporciona una rica colección de ejemplos de prueba:
simple_test.py
: Demostración básica de "Hola Mundo".complex_test.py
: Demostración de funciones completas.coqui_test.py
: Prueba del motor Coqui TTS local.translator.py
: Traducción multilingüe en tiempo real (requiere la instalación deopenai realtimestt
).openai_voice_interface.py
: Interfaz de la API de OpenAI activada por voz.advanced_talk.py
: Sistema de diálogo avanzado.minimalistic_talkbot.py
: Chatbot simple de 20 líneas de código.test_callbacks.py
: Funciones de retrollamada y pruebas de latencia.
Soporte CUDA
Para obtener un mejor rendimiento, especialmente al usar motores neuronales locales, se recomienda instalar el soporte de CUDA:
Pasos de Instalación
- Instalar NVIDIA CUDA Toolkit (versión 11.8 o 12.X).
- Instalar NVIDIA cuDNN.
- Instalar ffmpeg.
- Instalar PyTorch con soporte para 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
Casos de Uso
1. Asistentes de IA y Chatbots
- Responder a las consultas de los usuarios en tiempo real.
- Experiencia de conversación natural.
- Soporte multi-idioma.
2. Herramientas de Accesibilidad
- Lectores de pantalla.
- Asistencia para personas con discapacidad visual.
- Herramientas de apoyo al aprendizaje.
3. Creación de Contenido
- Producción de podcasts.
- Audiolibros.
- Contenido educativo.
4. Servicio al Cliente
- Sistemas automatizados de atención al cliente.
- Robots telefónicos.
- Servicios de traducción en tiempo real.
5. Juegos y Entretenimiento
- Voz en el juego.
- Doblaje de personajes virtuales.
- Aplicaciones de entretenimiento interactivo.
Ecosistema del Proyecto
RealtimeTTS es parte de un ecosistema más grande:
- RealtimeSTT: Biblioteca complementaria de voz a texto, que combinada con RealtimeTTS puede crear un sistema completo de procesamiento de audio en tiempo real.
- Linguflex: Proyecto original, un asistente de IA de código abierto y potente.
- LocalAIVoiceChat: Sistema local de diálogo de voz de IA basado en el modelo Zephyr 7B.
Información de Licencia
El proyecto en sí es de código abierto, pero es importante tener en cuenta las restricciones de licencia de cada motor:
- Motores de código abierto: SystemEngine, GTTSEngine (licencia MIT).
- Motores con restricciones comerciales: CoquiEngine, ElevenlabsEngine, AzureEngine (uso no comercial gratuito).
- Servicios de pago: OpenAI requiere una clave API y un plan de pago.
Requisitos del Sistema
- Versión de Python: >= 3.9, < 3.13
- Sistema Operativo: Windows, macOS, Linux
- Dependencias: PyAudio, pyttsx3, pydub, etc.
- Soporte de GPU: Se recomienda una tarjeta NVIDIA para motores neuronales locales.
Resumen
RealtimeTTS es una biblioteca de texto a voz en tiempo real potente y bien diseñada, adecuada para aplicaciones modernas que requieren síntesis de voz de alta calidad y baja latencia. Su soporte multi-motor, sus robustos mecanismos de manejo de errores y sus ricas opciones de configuración la convierten en una opción ideal para construir aplicaciones de voz de nivel profesional. Ya sea para proyectos personales o aplicaciones de nivel empresarial, RealtimeTTS puede proporcionar una solución fiable y eficiente.