f5 tts : parole fluide et fidèle avec le flow matching
F5-TTS: un transformeur de diffusion utilisant ConvNeXt V2 pour la recherche sur la synthèse vocale.
E2 TTS: un transformeur Flat-UNet étudié parallèlement à l’approche F5-TTS.
Sway Sampling: une stratégie d’échantillonnage des étapes de flux lors de l’inférence.
Merci à toutes les personnes qui ont contribué !
Actualités
- 2025/03/12: Un modèle de base F5-TTS v1 plus récent a apporté des améliorations à l’entraînement et à l’inférence. Explorer l’inférence.
- 2024/10/08: Des ressources pour les modèles de base F5-TTS et E2 TTS ont été publiées à l’intention de la communauté scientifique. Voir l’installation.
Installation
Créez un environnement distinct si nécessaire
# Create a conda environment with Python 3.10 or newer conda create -n f5-tts python=3.11 conda activate f5-tts # Install FFmpeg if needed conda install ffmpeg
Installez PyTorch avec la prise en charge du matériel adapté
GPU NVIDIA
# Select a PyTorch build matched to your CUDA version
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128GPU AMD
# Select a PyTorch build matched to your ROCm version
pip install torch torchaudio --index-url https://download.pytorch.org/whl/rocm7.2GPU Intel
# Check the current PyTorch XPU installation guidance
pip install torch torchaudio --index-url https://download.pytorch.org/whl/test/xpuApple Silicon
pip install torch torchaudio
Choisissez ensuite l’une des options ci-dessous :
1. En tant que paquet pip (si c’est uniquement pour l’inférence)
pip install f5-tts2. Installation locale modifiable (si vous faites également de l’entraînement ou du fine-tuning)
git clone https://github.com/SWivid/F5-TTS.git cd F5-TTS # Optional when using BigVGAN as a vocoder: # git submodule update --init --recursive pip install -e .
L’utilisation avec Docker est également disponible
# Build from the Dockerfile docker build -t f5tts:v1 . # Run the published container with a GPU docker container run --rm -it --gpus=all -p 7860:7860 ghcr.io/swivid/f5-tts:main # Launch its web interface docker container run --rm -it --gpus=all -p 7860:7860 ghcr.io/swivid/f5-tts:main f5-tts_infer-gradio --host 0.0.0.0
Exécution
Le projet documente également le déploiement avec Triton et TensorRT-LLM.
Résultats des benchmarks
Le benchmark publié décrit le décodage sur un seul GPU L20 avec 26 paires audio d’invite et de texte cible à 16 NFE.
| Modèle | Concurrence | Latence moyenne | RTF | Mode |
|---|---|---|---|---|
| F5-TTS Base (Vocos) | 2 | 253 ms | 0.0394 | Client-serveur |
| F5-TTS Base (Vocos) | 1 (taille du lot) | — | 0.0402 | TRT-LLM hors ligne |
| F5-TTS Base (Vocos) | 1 (taille du lot) | — | 0.1467 | PyTorch hors ligne |
Consultez la documentation du projet sur l’exécution pour obtenir des détails sur le benchmark et les conditions de configuration.
Inférence
- Lisez les instructions d’inférence avant d’évaluer les performances du modèle.
- Recherchez dans les discussions existantes du projet lorsque vous tentez de résoudre un problème spécifique.
1. Application Gradio
Les fonctionnalités documentées incluent :
- TTS de base avec inférence par segments
- Génération multi-style et multi-locuteur
- Conversation vocale avec Qwen2.5-3B-Instruct
- Inférence personnalisée avec prise en charge de langues supplémentaires
# Launch the Gradio web interface f5-tts_infer-gradio # Specify a port and host f5-tts_infer-gradio --port 7860 --host 0.0.0.0 # Request a share link f5-tts_infer-gradio --share
Exemple de fichier Docker Compose pour les appareils NVIDIA
services:
f5-tts:
image: ghcr.io/swivid/f5-tts:main
ports:
- "7860:7860"
environment:
GRADIO_SERVER_PORT: 78602. Inférence CLI
# Run with a reference recording and a new text prompt f5-tts_infer-cli --model F5TTS_v1_Base \ --ref_audio "provide_prompt_wav_path_here.wav" \ --ref_text "The words spoken in the reference audio." \ --gen_text "The words to generate." # Run with the project's default settings f5-tts_infer-cli # Or provide your own TOML settings f5-tts_infer-cli -c custom.toml # A multi-voice example f5-tts_infer-cli -c src/f5_tts/infer/examples/multi/story.toml
Entraînement
1. Avec Hugging Face Accelerate
Consultez les recommandations du projet concernant l’entraînement et l’affinage pour connaître les pratiques recommandées.
2. Avec l’application Gradio
# Start the finetuning web interface
f5-tts_finetune-gradioConsultez les instructions d’entraînement pour la configuration et les indications relatives aux jeux de données.
Évaluation
Développement
Pre-commit peut exécuter les formateurs et les contrôles qualité du projet :
pip install pre-commit pre-commit install
Avant de soumettre des modifications, exécutez les contrôles sur l’ensemble des fichiers :
pre-commit run --all-files
Certains composants du modèle bénéficient d’exceptions de linting pour la notation des tenseurs.
Remerciements
- E2-TTS pour ses travaux de recherche connexes sur le flow matching
- Les jeux de données Emilia, WenetSpeech4TTS, LibriTTS et LJSpeech
- Lucidrains et ses collaborateurs pour les premières structures CFM et les discussions
- Stable Diffusion 3 et Hugging Face Diffusers pour les références de code des transformeurs
- Torchdiffeq, Vocos et BigVGAN pour les travaux sur les solveurs et les vocodeurs
- FunASR, faster-whisper, UniSpeech et SpeechMOS pour les outils d’évaluation
- Aligneur forcé CTC pour l’évaluation de l’édition vocale
- Membres de la communauté ayant créé des démonstrations vocales
- L’implémentation MLX et ses mainteneurs
- L’implémentation ONNX Runtime et ses mainteneurs
- Contributeurs à la prise en charge de Triton et TensorRT-LLM
Citation
Si la recherche et la base de code vous sont utiles, veuillez citer l’article original :
@article{chen-etal-2024-f5tts,
title={F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching},
author={Yushen Chen and Zhikang Niu and Ziyang Ma and Keqi Deng
and Chunhui Wang and Jian Zhao and Kai Yu and Xie Chen},
journal={arXiv preprint arXiv:2410.06885},
year={2024}
}Licence
Le code du projet original est publié sous licence MIT. Ses modèles préentraînés sont soumis à une licence CC-BY-NC distincte, associée à leurs données d’entraînement. Consultez les conditions du projet original avant d’utiliser l’un ou l’autre dans vos propres travaux.