Home
Login

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.

MITPython 3.2kKoljaBRealtimeTTS Last Updated: 2025-06-17

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 de openai 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

  1. Instalar NVIDIA CUDA Toolkit (versión 11.8 o 12.X).
  2. Instalar NVIDIA cuDNN.
  3. Instalar ffmpeg.
  4. 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.

Star History Chart