TTS sans fine-tuning : Installation de MOSS-TTS (avec NVIDIA DGX Spark)
Dans cet article, je partage mon expérience de déploiement de MOSS-TTS, un modèle de synthèse vocale (TTS) haute performance, sur le tout dernier poste de travail IA de NVIDIA, le DGX Spark (Grace-Blackwell). Sa particularité ? Une capacité de clonage vocal époustouflante, et ce, sans nécessiter de fine-tuning.

Résumé de l'environnement système
Ce guide d'installation a été rédigé en se basant sur l'environnement suivant :
| Catégorie | Spécification | Remarque |
|---|---|---|
| Hardware | NVIDIA DGX Spark (Grace-Blackwell) | Poste de travail IA basse consommation / silencieux |
| GPU | GB10 (CUDA Capability 12.1) | Architecture Blackwell |
| OS | Basé sur Ubuntu 22.04 LTS | - |
| CUDA / Driver | CUDA 13.0 | Environnement de pilote Spark par défaut |
| Python | 3.10+ (utilisation de venv) | venv choisi pour sa légèreté par rapport à Conda |
| Occupation VRAM | Environ 23.8 GB | Au repos et pendant l'inférence |
1. Cloner le dépôt
git clone https://github.com/OpenMOSS/MOSS-TTS.github
2. Création et activation de l'environnement virtuel (venv)
Bien que le guide GitHub recommande Conda, j'ai opté pour un environnement virtuel Python (venv) afin de faciliter le packaging Docker ou l'enregistrement en tant que service systemd à l'avenir.
python3 -m venv myvenv
source myvenv/bin/activate
3. Mise à jour des outils de build de base
pip install -U pip setuptools wheel
4. Configuration clé : Modification de pyproject.toml
Il est impératif d'ajuster manuellement les versions des dépendances pour les adapter à l'environnement CUDA 13.0 du DGX Spark. Il est crucial que les versions de torch et torchaudio soient parfaitement identiques afin d'éviter les conflits lors de l'installation.
- Modifications à apporter :
"torch==2.10.0+cu130""torchaudio==2.10.0+cu130""torchcodec==0.10.0+cu130"
5. Installation des paquets de dépendances
pip install --extra-index-url https://download.pytorch.org/whl/cu130 -e .
6. Installation de FFmpeg sur l'hôte
FFmpeg est indispensable pour éviter les erreurs lors de l'inférence. Il doit être installé au préalable, ainsi que ses bibliothèques.
sudo apt update && sudo apt install -y ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev
sudo ldconfig
7. Téléchargement du modèle et précautions d'exécution
- Ne pas télécharger directement depuis HuggingFace : Si vous téléchargez manuellement le modèle depuis HuggingFace et que vous le liez via
--model_path, des erreurs peuvent survenir en raison d'une incompatibilité de noms de variables avec le fichier d'exécution (moss_tts_app.py). - Téléchargement automatique recommandé : En exécutant l'application avec les paramètres par défaut, le modèle de poids (environ 17 Go) et le Tokenizer (7 Go) seront automatiquement téléchargés dans le répertoire de cache.
- Script d'exécution :
python clis/moss_tts_app.py --device cuda --attn_implementation auto --host 0.0.0.0 --port 7860
Remarque : Un avertissement concernant
GB10 (cuda capability 12.1)peut apparaître lors de l'exécution, mais il a été confirmé que cela n'affecte pas les performances d'inférence réelles. Le chargement initial prend environ 30 à 60 secondes.
8. Retour d'expérience : "Le fine-tuning n'est plus nécessaire"
- Performance de clonage : Avec un seul échantillon de ma voix, MOSS-TTS reproduit parfaitement l'intonation et les habitudes vocales en coréen, anglais et japonais.
- Rapidité : Les phrases courtes sont générées en 7 à 8 secondes, tandis que les textes plus longs (3-4 phrases) prennent environ 30 secondes.
- Spécificités linguistiques : La qualité est presque parfaite en anglais. Pour le japonais, les erreurs de lecture des kanji peuvent être facilement corrigées en utilisant l'écriture hiragana.
- Efficacité énergétique : Même pendant l'inférence, la consommation reste faible, autour de 36W, et l'absence totale de bruit de ventilateur est un atout majeur du DGX Spark.
9. Dépannage : Pourquoi ne pas avoir utilisé l'image officielle de NVIDIA ?
L'image nvcr.io/nvidia/pytorch:26.01-py3 fournie par NVIDIA ne permet pas la compilation de torchaudio et torchcodec, pourtant essentiels au fonctionnement de la synthèse vocale. Il semble que la version de PyTorch incluse dans l'image par NVIDIA soit une version spécialement compilée pour les produits NVIDIA. Cette incompatibilité de version entre PyTorch, torchaudio et torchcodec a causé des problèmes. Par conséquent, l'environnement venv standard reste, malheureusement, la solution la plus stable pour le Spark à l'heure actuelle.
🚀 Plans futurs
- Implémentation de FlashAttention 2 : Je prévois de tester l'impact sur la vitesse d'inférence après son installation.
- MOSS-VoiceGenerator : J'explorerai également ce modèle qui permet de générer de nouvelles voix virtuelles sans référence.
Articles connexes