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.0 et de l’omission de torchvision pour 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

  1. Audio de référence – Utilisez un enregistrement clair et calme avec un bruit de fond minimal. 3‑12 s suffisent.
  2. Ajustement des paramètres – --style_strength contrôle l'influence FiLM ; augmentez‑lui pour renforcer la similarité vocale.
  3. Arrêt précoce – Pour les phrases courtes, la tête d’arrêt peut échouer ; baissez --stop_threshold ou --stop_patience pour améliorer la fiabilité.
  4. 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.
  5. 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 !

Original Article: Voir l’original

Partager cet article