Sopro – Texto‑a‑Voz ligero con clonación de voz zero-shot

Sopro – Texto‑a‑Voz ligero con clonación de voz zero‑shot

Sopro es un modelo compacto y económico de texto‑a‑voz en inglés que aprovecha redes convolucionales dilatadas (a la WaveNet) y capas de atención cruzada ligeras en lugar de la pesada pila de Transformers que domina el espacio. Fue creado por Samuel Vitorino como proyecto paralelo, entrenado en una sola GPU L40S, y lanzado bajo la licencia Apache‑2.0.


Por qué Sopro destaca

Característica Por qué importa
169 M parámetros Suficientemente pequeño para que funcione cómodamente en una CPU M3 (.25 RTF) mientras sigue ofreciendo calidad audible
Síntesis en streaming Generación en tiempo real para IA conversacional y demostraciones en vivo
Clonación de voz zero‑shot Clona una nueva voz con solo 3‑12 s de audio de referencia – no se requiere afinación
Generación rápida en CPU 30 s de audio en ~7.5 s en el modelo base M3 – ideal para dispositivos periféricos
Atención cruzada y convolución Mantiene el rendimiento sin la sobrecarga de la atención de Transformers

Sopro no es de última generación en todas las métricas, pero demuestra que puedes construir un sistema TTS utilizable con hardware modesto y ponerlo de código abierto para la comunidad.


Instalación y inicio rápido

From PyPI

pip install sopro

From the repository

git clone https://github.com/samuel-vitorino/sopro
cd sopro
pip install -e .

⚙️ Nota: En Apple Silicon obtendrás beneficio de torch==2.6.0 y omitir torchvision para un aumento de velocidad de ~3×.

CLI Example

soprotts \
    --text "Sopro es un modelo TTS ligero de 169 millones de parámetros. Algunas de sus principales características son streaming, clonación de voz zero‑shot y un factor real‑tiempo de 0.25 en la CPU."
    --ref_audio ref.wav \
    --out out.wav

Python API – Non‑streaming

from sopro import SoproTTS

tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")

wav = tts.synthesize(
    "¡Hola! Este es un ejemplo de TTS non-streaming Sopro.",
    ref_audio_path="ref.wav",
)

tts.save_wav("out.wav", wav)

Python API – Streaming

import torch
from sopro import SoproTTS

tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")

chunks = []
for chunk in tts.stream(
    "¡Hola! Este es un ejemplo de TTS streaming Sopro.",
    ref_audio_path="ref.mp3",
):
    chunks.append(chunk.cpu())

wav = torch.cat(chunks, dim=-1)
tts.save_wav("out_stream.wav", wav)

Demo interactiva

Sopro viene con una demo ligera de FastAPI que puedes ejecutar localmente o en Docker.

pip install -r demo/requirements.txt
uvicorn demo.server:app --host 0.0.0.0 --port 8000

o con Docker:

docker build -t sopro-demo .
docker run --rm -p 8000:8000 sopro-demo

Abre http://localhost:8000 para escuchar tu texto pronunciado en la voz clonada.


Consejos de mejor práctica

  1. Audio de referencia – Utiliza una grabación clara y silenciosa con mínima contaminación acústica. 3‑12 s son suficientes.
  2. Ajustes de parámetros--style_strength controla la influencia FiLM; aumenta para mayor similitud de voz.
  3. Cabeza de parada – Para frases cortas, la cabeza de parada temprana puede fallar; disminuye --stop_threshold o --stop_patience para mejorar la fiabilidad.
  4. Texto basado en fonemas – Prefiere palabras escritas en lugar de abreviaturas cuando sea posible; el modelo maneja bien “CPU”, “TTS”, pero símbolos complejos pueden causar problemas.
  5. Preferencia de no streaming – Para la máxima fidelidad de audio, utiliza la API no streaming; el streaming es principalmente para reducir la latencia de la UI.

Futuro y comunidad

  • Ampliar a idiomas adicionales – la arquitectura actual admite cualquier representación fonética.
  • Mejorar la incrustación de voz entrenando con audio crudo en lugar de clips pre‑tokenizados.
  • Almacenar en caché estados de convolución para acelerar aún más la síntesis repetida.
  • Publicar la tubería de entrenamiento completa para permitir contribuciones de la comunidad.

Si encuentras útil este proyecto, considera apoyar al autor: https://buymeacoffee.com/samuelvitorino.


Conclusión

Sopro demuestra que puedes construir un sistema TTS funcional, rápido y de código abierto con solo una fracción de los recursos que requieren muchos modelos comerciales. Ya sea que estés prototipando un asistente de voz, generando narraciones para accesibilidad o experimentando con investigación de clonación de voz, Sopro ofrece un punto de entrada práctico y de bajo presupuesto que está listo para ejecutarse en la mayoría de CPUs modernas.

¡Feliz clonación!

Artículo original: Ver original

Compartir este artículo