Un système de conversion vocale multilingue qui préserve le contenu original tout en convertissant le timbre vers celui d'un autre locuteur, fonctionnant sans données appariées.
Le système MulliVC se compose de plusieurs composants clés :
- Content Encoder : Encode le contenu linguistique (WavLM/ContentVec)
- Timbre Encoder : Encode le timbre global du locuteur
- Fine-grained Timbre Conformer : Capture les détails fins du timbre
- Mel Decoder : Génère les mél-spectrogrammes synthétiques
- Discriminateur (GAN) : Améliore la qualité du spectrogramme généré
# Cloner le repository
git clone <repository-url>
cd MulliVC
# Installer les dépendances
pip install -r requirements.txt
# Tester l'installation
python test_system.py# Entraînement standard
python train.py --config configs/mullivc_config.yaml
# Reprendre depuis un checkpoint
python train.py --config configs/mullivc_config.yaml --resume checkpoints/checkpoint_epoch_10.pt# Conversion vocale standard
python inference.py --checkpoint checkpoints/best_model.pt --source_audio path/to/source.wav --target_speaker_audio path/to/target.wav --output converted.wav
# Conversion cross-linguale
python inference.py --checkpoint checkpoints/best_model.pt --source_audio path/to/source.wav --target_speaker_audio path/to/target.wav --output converted.wav --source_language en --target_language fongbe# Démonstration complète
python demo.py --config configs/mullivc_config.yaml --checkpoint checkpoints/best_model.pt
# Analyse du modèle
python demo.py --config configs/mullivc_config.yaml --analyze
# Benchmark de performance
python demo.py --config configs/mullivc_config.yaml --benchmark# Évaluation standard
python evaluation/evaluate.py --config configs/mullivc_config.yaml --checkpoint checkpoints/best_model.pt --output_dir evaluation_results
# Évaluation cross-linguale
python evaluation/evaluate.py --config configs/mullivc_config.yaml --checkpoint checkpoints/best_model.pt --cross_lingual --output_dir evaluation_resultsLe système utilise :
- LibriTTS : Corpus anglais avec plusieurs locuteurs
- Fongbe Speech : Corpus Fongbe avec locuteurs masculins et féminins
Les datasets sont automatiquement téléchargés depuis HuggingFace lors du premier lancement.
- WER/CER : Évaluation de l'intelligibilité avec Whisper
- SIM : Similarité du locuteur avec ECAPA-TDNN
- Qualité audio : Métriques spectrales et temporelles
- MOS : Évaluation subjective de la qualité
- Similarité du locuteur : Évaluation humaine
- Préservation du contenu : Évaluation de l'intelligibilité
Le fichier configs/mullivc_config.yaml contient tous les paramètres du système :
- Données : Chemins, paramètres audio, batch size
- Modèle : Architecture des composants
- Entraînement : Hyperparamètres, pertes, optimiseurs
- Chemins : Dossiers de sortie
MulliVC/
├── models/ # Modèles du système
│ ├── content_encoder.py # Encodeur de contenu
│ ├── timbre_encoder.py # Encodeur de timbre
│ ├── fine_grained_conformer.py # Conformer fine-grained
│ ├── mel_decoder.py # Décodeur mél
│ ├── discriminator.py # Discriminateur GAN
│ ├── losses.py # Fonctions de perte
│ └── mullivc.py # Modèle principal
├── utils/ # Utilitaires
│ ├── audio_utils.py # Traitement audio
│ ├── data_utils.py # Chargement des données
│ └── model_utils.py # Utilitaires modèles
├── evaluation/ # Évaluation
│ ├── metrics.py # Métriques d'évaluation
│ └── evaluate.py # Script d'évaluation
├── configs/ # Configurations
│ ├── mullivc_config.yaml
│ └── wandb_config.yaml
├── train.py # Script d'entraînement
├── inference.py # Script d'inférence
├── demo.py # Script de démonstration
├── test_system.py # Tests du système
└── requirements.txt # Dépendances
- Préservation du contenu linguistique
- Conversion du timbre vers un autre locuteur
- Qualité audio élevée
- Conversion entre langues différentes
- Préservation du contenu sémantique
- Adaptation du timbre à la langue cible
- Étape 1 : Entraînement standard (monolingue)
- Étape 2 : Conversion croisée simulée
- Étape 3 : Cohérence cyclique
# 1. Tester l'installation
python test_system.py
# 2. Démonstration avec données synthétiques
python demo.py --config configs/mullivc_config.yaml
# 3. Entraînement (nécessite des données)
python train.py --config configs/mullivc_config.yaml
# 4. Inférence
python inference.py --checkpoint checkpoints/best_model.pt --source_audio source.wav --target_speaker_audio target.wav --output converted.wavLe système supporte Weights & Biases pour le monitoring :
# Activer W&B dans la configuration
wandb:
enabled: true
project: "mullivc"- Fork le repository
- Créer une branche feature
- Commiter les changements
- Pousser vers la branche
- Ouvrir une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.