3 puntos por GN⁺ 2026-01-10 | 1 comentarios | Compartir por WhatsApp
  • Sopro TTS es un modelo ligero de texto a voz basado en inglés que admite clonación de voz zero-shot y generación en streaming
  • Tiene 169 millones de parámetros y puede generar 30 segundos de audio en unos 7.5 segundos, a una velocidad de 0.25 RTF en CPU
  • Puede clonar la voz de un hablante usando solo audio de referencia de 3 a 12 segundos, y utiliza una arquitectura de convoluciones dilatadas estilo WaveNet y cross-attention ligera
  • Es un proyecto de bajo presupuesto entrenado con una sola GPU L40S, con margen de mejora si aumenta la calidad de los datos
  • Admite modos streaming y no streaming, además de CLI, API de Python y demo web, lo que le da una alta utilidad para experimentación e integración por parte de desarrolladores

Resumen de Sopro TTS

  • Sopro significa “aliento” en portugués y fue desarrollado como un modelo TTS ligero en inglés
    • Usa una arquitectura que combina convolución dilatada y cross-attention en lugar de Transformer
    • Es un proyecto personal entrenado con una sola GPU L40S
  • Características principales
    • 169M parámetros, soporte de streaming y clonación de voz zero-shot
    • Genera 30 segundos de audio en 7.5 segundos con 0.25 RTF en CPU
    • Permite clonación de voz con audio de referencia de 3 a 12 segundos

Instalación y ejecución

  • Solo se especifican versiones mínimas de dependencias, por lo que puede instalarse sin crear un entorno separado
    • Ejemplo: la versión torch==2.6.0 ofrece cerca de 3 veces más rendimiento en CPU M3
  • Métodos de instalación
    • PyPI: pip install sopro
    • Repositorio de GitHub: después de git clone, ejecutar pip install -e .

Ejemplos de uso

  • Ejemplo de ejecución por CLI
    • Se pueden indicar el texto, el audio de referencia y el archivo de salida
    • Incluye parámetros de control detallados como --style_strength, --no_stop_head, --stop_threshold y --stop_patience
  • Ejemplo con la API de Python
    • Carga el modelo con SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")
    • Admite tanto modo no streaming como streaming
    • En modo streaming, es posible unir secuencialmente los fragmentos de audio generados

Demo interactiva en streaming

  • Después de la instalación, ejecuta un servidor local con el comando uvicorn demo.server:app
  • También puede compilarse y ejecutarse con Docker
    • docker build -t sopro-demo .
    • docker run --rm -p 8000:8000 sopro-demo
  • Se puede ver la demo entrando a http://localhost:8000 en el navegador

Precauciones y limitaciones

  • Puede haber falta de consistencia en la salida, por lo que se requiere ajuste de parámetros
  • La calidad de la clonación de voz depende mucho de la calidad del micrófono y del ruido ambiental
  • La versión no streaming ofrece mejor calidad de audio
  • La longitud de generación está limitada a aprox. 32 segundos (400 frames); si se supera, aparecen salidas alucinadas
  • Al usar torchaudio se necesita ffmpeg; se recomienda usar soundfile
  • Los datos de entrenamiento están en forma de tokens preprocesados; el audio original fue descartado por problemas de espacio de almacenamiento
  • Se menciona como plan futuro la publicación del código de entrenamiento y la ampliación del soporte multilingüe

Datos de entrenamiento

  • Se usaron los datasets Emilia YODAS, LibriTTS-R, Mozilla Common Voice 22 y MLS

Referencias y tecnologías base

  • Aprovecha investigaciones y código de Mimi Codec (Kyutai), WaveNet, Attentive Stats Pooling, AudioLM y CSM, entre otros

1 comentarios

 
GN⁺ 2026-01-10
Opiniones en Hacker News
  • Es un proyecto genial y útil
    Personalmente, creo que Chatterbox-TTS-Server es la mejor alternativa
    Es más lento, pero la calidad de audio es bastante alta

    • Yo prefiero IndexTTS2
      Me parece una herramienta muy potente porque permite clonación de voz y control manual de emociones mediante vectores emocionales
      Me resultó especialmente útil en un proyecto de orquestación de modelos en el que estoy trabajando
      Un modelo externo de clasificación de emociones controla al mismo tiempo la personalidad del LLM y la salida del TTS para mantener la consistencia
      La probabilidad de recuperar “memorias” también cambia según el estado emocional, y casi no hay TTS que permitan un control tan fino como IndexTTS2
    • Pero la calidad de salida de Chatterbox-TTS es mucho mejor
      La salida de Sopro TTS, basándome en el video de GitHub, es seriamente mala y está a un nivel inutilizable en la práctica
      En cambio, Chatterbox da resultados sorprendentes
      Mi GPU es una RTX5090, y corre muy rápido, con alrededor de 2 segundos de ejecución por cada segundo generado
      Puedes revisar el primer ejemplo y el segundo ejemplo. El segundo es una demo clonando la voz del youtuber ArbitorIan
  • ¡Está realmente genial!
    Yo uso Kokoro (82M) en local, y funciona rápido además de tener una calidad de audio excelente

    • ¿Alguien conoce un buen stack open source para asistentes de voz?
      Yo manejo la activación de voz con ricky0123/vad, hago reconocimiento rápido con Web Speech API y luego uso un TTS comercial
      Todavía no he encontrado una opción open source que sea realmente rápida
    • También probé Kokoro-JS ejecutándose en el navegador, pero la latencia era demasiado alta y además no soportaba el idioma que quería, así que me decepcionó un poco
  • Me preguntaba qué significa “zero-shot

    • zero-shot es una forma de hacer funcionar un modelo con un solo prompt (o con contexto adicional en forma de archivo)
      few-shot consiste en guiar al modelo con algunos ejemplos, y multi-shot implica varias rondas de prompts y correcciones
    • En este caso, parece significar que puedes obtener un buen clon sin necesidad de proporcionar otras muestras de voz
  • Se siente como haber logrado clonación de voz a nivel Mission Impossible sin una compilación larga
    También comparto un video de YouTube relacionado y un poema de juego de palabras

  • Lo probé en inglés y me pareció bastante impresionante
    Para ser un proyecto de bajo presupuesto, el resultado fue sorprendente y además fue muy fácil de usar

    • Pero como es solo para inglés, no pude probar otros idiomas
      Si existiera una versión en alemán, definitivamente me gustaría usarla
  • Considerando las limitaciones, es un resultado bastante impresionante
    Me pregunto si hay planes de publicar una versión más potente, con menos artefactos y que requiera más cómputo
    Uso Chatterbox principalmente, pero si esto evoluciona hacia una alta calidad, podría convertirse en una buena alternativa

    • Este es mi proyecto personal
      El costo computacional es bastante alto, pero si la reacción de la comunidad es buena, pienso seguir desarrollándolo
      Por cierto, Chatterbox es un gran modelo y una fuente de inspiración
  • Tenía curiosidad por el significado de “zero-shot”

    • Creo que estos términos con *-shot son, en la práctica, jerga de la industria sin mucho significado
      Incluso son más arbitrarios que la notación Big O
    • Según la definición de Wikipedia, zero-shot es una configuración del problema en la que se predicen en test muestras de clases no vistas durante el entrenamiento
      Es decir, si el modelo aprende la probabilidad condicional P(Audio|Voice) y puede muestrear clases de voz que no vio durante el entrenamiento, entonces es zero-shot
      Proporcionar un audio de referencia no cambia los pesos del modelo, sino que corresponde a dar contexto
  • Escuché el audio y me sorprendió lo terrible que suena
    Es peor que voces de computadora de hace 15 años, y no entiendo por qué la gente dice que está bien
    Lo probé en varios navegadores y fue igual en todos

    • Algunas voces de referencia pueden causar degradación en la calidad
      Si es tan grave, podría haber otro problema, así que me gustaría revisarlo contigo
    • Si esta muestra es de lo mejor de la demo, la distorsión de la pronunciación fue tan fuerte que me generó rechazo de inmediato
    • Por un momento pensé que era la voz de RFK
    • Probé varias voces, pero el audio generado no se parecía en nada y ni siquiera sonaba como una voz de verdad
    • A mí también me costó creerlo al escucharlo. Era una calidad de audio desagradable al punto de que costaba oírlo por más de un minuto
  • Es una tecnología realmente genial
    Seguramente va a mejorar más adelante
    Aun así, aunque sea como medida temporal, estaría bien agregar un posprocesamiento de audio simple para reducir ese tono áspero (razziness)

  • Me pregunto si alguno de estos modelos funciona como un modulador de voz speech-to-speech
    Es decir, que tome una muestra de voz fija (prompt) y un flujo de audio de entrada en tiempo real, y convierta la voz de entrada al tono y timbre del prompt
    En casos como los V-tubers, no habría necesidad de cambiar el prompt con frecuencia, así que quizá también sería posible aplicar un timbre fijo con un solo fine-tuning

    • Chatterbox TTS soporta esto en modo “voice cloning”
      Eso sí, el procesamiento en streaming tendrías que implementarlo por tu cuenta
      Toma audio A (estilo) y B (contenido), y combina el timbre de A con la pronunciación y entonación de B
      En realidad, este tipo de modelo se entiende mejor como S+STS (speech+style to speech) que como “TTS” propiamente dicho
    • No sé de una opción open source, pero ElevenLabs lleva tiempo implementando esta idea
      Lo explican en detalle en su blog oficial
    • RVC (Retrieval Voice Conversion) también es un buen convertidor de voz open source
      Pero como hubo conflictos entre el creador original y los desarrolladores, conviene evitar el fork principal y buscar un fork actualizado mantenido en inglés
    • De hecho, muchos V-tubers usan este tipo de tecnología, así que seguramente ya existe alguna solución estable