Sopro – TTS léger avec clonage vocal zéro‑shot
Sopro – TTS léger avec clonage vocal zéro‑shot
Sopro est un modèle de texte‑à‑parole anglais compact et peu gourmand en ressources qui exploite des réseaux convolutifs dilatés (à la WaveNet) et des couches d'attention croisée légères, à la place du lourd stack Transformer qui domine le domaine. Il a été développé par Samuel Vitorino comme projet parallèle, entraîné sur une seule GPU L40S, et publié sous licence Apache‑2.0.
Pourquoi Sopro se distingue
| Fonctionnalité | Pourquoi c'est important |
|---|---|
| 169 M de paramètres | Assez petit pour fonctionner confortablement sur un CPU M3 (.25 RTF) tout en offrant une qualité audible |
| Synthèse en streaming | Génération en temps réel pour l'IA conversationnelle et les démonstrations en direct |
| Clonage vocal zéro‑shot | Clonez une nouvelle voix avec seulement 3‑12 s d'audio de référence – sans réglage fin requis |
| Génération rapide CPU | 30 s d'audio en ~7.5 s sur un modèle de base M3 – idéal pour les périphériques embarqués |
| Attention croisée & basé sur Conv | Maintient la performance sans le surcoût d'attention Transformer |
Sopro n'est pas le meilleur sur chaque indicateur, mais il démontre qu'il est possible de construire un système TTS utilisable sur du matériel modeste et de le proposer en open‑source à la communauté.
Installation & Quick Start
From PyPI
pip install sopro
From the repository
git clone https://github.com/samuel-vitorino/sopro
cd sopro
pip install -e .
⚙️ Note : Sur Apple Silicon, vous bénéficierez de
torch==2.6.0et de l’omission detorchvisionpour un gain de ~3×.
Exemple CLI
soprotts \
--text "Sopro est un modèle TTS léger 169 million de paramètres. Certaines des principales caractéristiques sont la synthèse en streaming, le clonage vocal zéro‑shot et un facteur temps réel de 0.25 sur le CPU." \
--ref_audio ref.wav \
--out out.wav
API Python – Non‑streaming
from sopro import SoproTTS
tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")
wav = tts.synthesize(
"Bonjour ! Ceci est un exemple de Sopro TTS non‑streaming.",
ref_audio_path="ref.wav",
)
tts.save_wav("out.wav", wav)
API Python – Streaming
import torch
from sopro import SoproTTS
tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")
chunks = []
for chunk in tts.stream(
"Bonjour ! Ceci est un exemple de Sopro TTS en streaming.",
ref_audio_path="ref.mp3",
):
chunks.append(chunk.cpu())
wav = torch.cat(chunks, dim=-1)
tts.save_wav("out_stream.wav", wav)
Démo interactive
Sopro est livré avec une démo FastAPI légère que vous pouvez exécuter localement ou via Docker.
pip install -r demo/requirements.txt
uvicorn demo.server:app --host 0.0.0.0 --port 8000
ou avec Docker :
docker build -t sopro-demo .
docker run --rm -p 8000:8000 sopro-demo
Ouvrez http://localhost:8000 pour entendre votre texte prononcé dans la voix clonée.
Conseils de meilleure pratique
- Audio de référence – Utilisez un enregistrement clair et calme avec un bruit de fond minimal. 3‑12 s suffisent.
- Ajustement des paramètres –
--style_strengthcontrôle l'influence FiLM ; augmentez‑lui pour renforcer la similarité vocale. - Arrêt précoce – Pour les phrases courtes, la tête d’arrêt peut échouer ; baissez
--stop_thresholdou--stop_patiencepour améliorer la fiabilité. - Texte phonème‑basé – Privilégiez les mots épelés plutôt que les abréviations ; le modèle gère « CPU », « TTS » bien, mais les symboles complexes peuvent provoquer des interférences.
- Préférence non‑streaming – Pour la meilleure fidélité audio, utilisez l’API non‑streaming ; le streaming est surtout pour réduire la latence UI.
Futures évolutions & Community
- Étendre à d'autres langues – l'architecture actuelle prend en charge toute représentation phonétique.
- Meilleur embarquage vocal en entraînant sur audio brut plutôt que sur des clips pré‑tokenisés.
- Mettre en cache les états de convolution pour accélérer davantage la synthèse récurrente.
- Publier le pipeline complet d'entraînement pour permettre la contribution communautaire.
Si vous trouvez ce projet utile, pensez à soutenir l'auteur : https://buymeacoffee.com/samuelvitorino.
Conclusion
Sopro montre qu'il est possible de construire un système TTS fonctionnel, rapide et open‑source avec seulement une fraction des ressources requises par de nombreux modèles commerciaux. Que vous prototypiez un assistant vocal, génériez des narrations pour l'accessibilité, ou expérimentiez la recherche sur le clonage vocal, Sopro propose un point d'entrée pratique à faible coût prêt à tourner sur la plupart des CPU modernes.
Bonne clonage !