- Sopro TTS est un modèle léger de synthèse texte-parole en anglais, compatible avec le clonage vocal zero-shot et la génération en streaming
- Il compte 169 millions de paramètres et génère 30 secondes d’audio en environ 7,5 secondes sur CPU à 0,25 RTF
- Il peut cloner la voix d’un locuteur à partir de 3 à 12 secondes d’audio de référence seulement, et utilise une architecture de convolutions dilatées de style WaveNet et cross-attention légère
- Projet à petit budget entraîné sur un seul GPU L40S, avec une marge d’amélioration des performances si la qualité des données progresse
- Compatible avec les modes streaming et non streaming, ainsi qu’avec une CLI, une API Python et une démo web, ce qui le rend très pratique pour l’expérimentation et l’intégration côté développeur
Présentation de Sopro TTS
- Sopro signifie « souffle » en portugais, et a été développé comme modèle TTS léger en anglais
- Architecture combinant convolutions dilatées et cross-attention au lieu d’un Transformer
- Projet personnel entraîné sur un seul GPU L40S
- Principales caractéristiques
- 169M paramètres, prise en charge du streaming, clonage vocal zero-shot
- 0,25 RTF sur CPU, avec génération de 30 secondes d’audio en 7,5 secondes
- Clonage vocal possible à partir de 3 à 12 secondes d’audio de référence
Installation et exécution
- Seules les versions minimales des dépendances sont imposées, ce qui permet l’installation sans créer d’environnement dédié
- Exemple : la version
torch==2.6.0 apporte environ 3× de performances sur un CPU M3
- Méthodes d’installation
- PyPI :
pip install sopro
- Dépôt GitHub :
git clone puis pip install -e .
Exemples d’utilisation
- Exemple d’exécution en CLI
- Possibilité de définir le texte, l’audio de référence et le fichier de sortie
- Paramètres de contrôle avancés disponibles, comme
--style_strength, --no_stop_head, --stop_threshold, --stop_patience
- Exemple d’API Python
- Chargement du modèle avec
SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")
- Compatible à la fois avec les modes non streaming et streaming
- En mode streaming, les chunks audio générés peuvent être assemblés séquentiellement
Démo interactive en streaming
- Après installation, lancement d’un serveur local avec la commande
uvicorn demo.server:app
- Possibilité également de construire et lancer avec Docker
docker build -t sopro-demo .
docker run --rm -p 8000:8000 sopro-demo
- La démo est accessible dans le navigateur via
http://localhost:8000
Précautions et limites
- Manque possible de cohérence dans la sortie, pouvant nécessiter des ajustements de paramètres
- La qualité du clonage vocal dépend fortement de la qualité du micro et du bruit ambiant
- La version non streaming offre une meilleure qualité audio
- La longueur de génération est limitée à environ 32 secondes (400 frames) ; au-delà, des sorties hallucinées peuvent apparaître
- ffmpeg est requis avec torchaudio ; l’usage de
soundfile est recommandé
- Les données d’entraînement sont sous forme pré-tokenisée ; les audios d’origine ont été supprimés pour des raisons d’espace de stockage
- Des projets futurs mentionnent la publication du code d’entraînement et l’extension du support multilingue
Données d’entraînement
- Utilisation des jeux de données Emilia YODAS, LibriTTS-R, Mozilla Common Voice 22, MLS
Références et technologies de base
- Exploite des recherches et bases de code comme Mimi Codec (Kyutai), WaveNet, Attentive Stats Pooling, AudioLM, CSM
Aucun commentaire pour le moment.