f5 tts: voz fluida y fiel con coincidencia de flujo
F5-TTS: Un transformador de difusión que utiliza ConvNeXt V2 para la investigación de texto a voz.
E2 TTS: Un transformador Flat-UNet explorado junto con el enfoque F5-TTS.
Muestreo Sway: Una estrategia de muestreo de pasos de flujo durante la inferencia.
¡Gracias a todos los colaboradores!
Novedades
- 2025/03/12: Un modelo base F5-TTS v1 más reciente introdujo actualizaciones en el entrenamiento y la inferencia. Explorar la inferencia.
- 2024/10/08: Los recursos de los modelos base F5-TTS y E2 TTS se publicaron para la comunidad investigadora. Ver la instalación.
Instalación
Crea un entorno independiente si es necesario
# 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
Instala PyTorch con el dispositivo correspondiente
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
Luego puedes elegir uno de los siguientes:
1. Como paquete pip (si solo se usará para inferencia)
pip install f5-tts2. Local editable (si también se realizará entrenamiento o ajuste fino)
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 .
También está disponible el uso con Docker
# 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
Entorno de ejecución
El proyecto también documenta el despliegue con Triton y TensorRT-LLM.
Resultados de referencia
El benchmark publicado describe la decodificación en una sola GPU L20 con 26 pares de audio de entrada y texto objetivo a 16 NFE.
| Modelo | Concurrencia | Latencia promedio | RTF | Modo |
|---|---|---|---|---|
| F5-TTS Base (Vocos) | 2 | 253 ms | 0.0394 | Cliente-servidor |
| F5-TTS Base (Vocos) | 1 (tamaño del lote) | — | 0.0402 | TRT-LLM sin conexión |
| F5-TTS Base (Vocos) | 1 (tamaño del lote) | — | 0.1467 | PyTorch sin conexión |
Consulta la documentación del entorno de ejecución del proyecto para obtener detalles del benchmark y las condiciones de configuración.
Inferencia
- Lee las instrucciones de inferencia antes de evaluar el rendimiento del modelo.
- Busca en los debates existentes del proyecto cuando estés solucionando un problema específico.
1. Aplicación de Gradio
Las funciones documentadas incluyen:
- TTS básico con inferencia por fragmentos
- Generación multies estilo y multihablante
- Chat de voz mediante Qwen2.5-3B-Instruct
- Inferencia personalizada con compatibilidad adicional con idiomas
# 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
Ejemplo de archivo de Docker Compose para dispositivos NVIDIA
services:
f5-tts:
image: ghcr.io/swivid/f5-tts:main
ports:
- "7860:7860"
environment:
GRADIO_SERVER_PORT: 78602. Inferencia mediante 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
Entrenamiento
1. Con Hugging Face Accelerate
Consulta las directrices de entrenamiento y ajuste fino del proyecto para conocer las prácticas recomendadas.
2. Con la aplicación de Gradio
# Start the finetuning web interface
f5-tts_finetune-gradioConsulta las directrices de entrenamiento para obtener instrucciones sobre la configuración y los conjuntos de datos.
Evaluación
Desarrollo
Pre-commit puede ejecutar los formateadores y las comprobaciones de calidad del proyecto:
pip install pre-commit pre-commit install
Antes de enviar cambios, ejecuta las comprobaciones en todos los archivos:
pre-commit run --all-files
Algunos componentes del modelo tienen excepciones de linting para la notación de tensores.
Agradecimientos
- A E2-TTS por su investigación relacionada sobre el flujo de correspondencia
- A los conjuntos de datos Emilia, WenetSpeech4TTS, LibriTTS y LJSpeech
- A Lucidrains y sus colaboradores por las primeras estructuras de CFM y los debates
- A Stable Diffusion 3 y Hugging Face Diffusers por las referencias de código de transformadores
- A Torchdiffeq, Vocos y BigVGAN por su trabajo en solucionadores y vocoders
- A FunASR, faster-whisper, UniSpeech y SpeechMOS por las herramientas de evaluación
- Alineador forzado CTC para la evaluación de edición de voz
- Miembros de la comunidad que crearon demostraciones de voz
- La implementación de MLX y sus mantenedores
- La implementación de ONNX Runtime y sus mantenedores
- Colaboradores del soporte para Triton y TensorRT-LLM
Cita
Si la investigación y el código base te resultan útiles, cita el artículo 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}
}Licencia
El código del proyecto original se distribuye bajo la licencia MIT. Sus modelos preentrenados tienen una licencia CC-BY-NC independiente asociada a sus datos de entrenamiento. Consulta los términos del proyecto original antes de utilizar cualquiera de ellos en tu propio trabajo.