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.0y omitirtorchvisionpara 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
- Audio de referencia – Utiliza una grabación clara y silenciosa con mínima contaminación acústica. 3‑12 s son suficientes.
- Ajustes de parámetros –
--style_strengthcontrola la influencia FiLM; aumenta para mayor similitud de voz. - Cabeza de parada – Para frases cortas, la cabeza de parada temprana puede fallar; disminuye
--stop_thresholdo--stop_patiencepara mejorar la fiabilidad. - 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.
- 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!