Skip to main content

F5 TTS diagram

F5 TTS — MLX

Implementation of F5-TTS, with the MLX framework.

F5 TTS is a non-autoregressive, zero-shot text-to-speech system using a flow-matching mel spectrogram generator with a diffusion transformer (DiT).

You can listen to a sample here that was generated in ~4 seconds on an M3 Max MacBook Pro.

F5 is an evolution of E2 TTS and improves performance with ConvNeXT v2 blocks for the learned text alignment. This repository is based on the original Pytorch implementation available here.

Installation

pip install f5-tts-mlx

Basic Usage

python -m f5_tts_mlx.generate --text "The quick brown fox jumped over the lazy dog."

You can also use a pipe to generate speech from the output of another process, for instance from a language model:

mlx_lm.generate --model mlx-community/Llama-3.2-1B-Instruct-4bit --verbose false \
 --temp 0 --max-tokens 512 --prompt "Write a concise paragraph explaining wavelets." \
| python -m f5_tts_mlx.generate

Voice Matching

If you want to use your own reference audio sample, make sure it's a mono, 24kHz wav file of around 5-10 seconds:

python -m f5_tts_mlx.generate \
--text "The quick brown fox jumped over the lazy dog." \
--ref-audio /path/to/audio.wav \
--ref-text "This is the caption for the reference audio."

You can convert an audio file to the correct format with ffmpeg like this:

ffmpeg -i /path/to/audio.wav -ac 1 -ar 24000 -sample_fmt s16 -t 10 /path/to/output_audio.wav

See here for more options to customize generation.

Quantized Models

If you're in a bandwidth or memory-limited environment, you can use the --q option to load a quantized version of the model. 4-bit and 8-bit variants are supported.

python -m f5_tts_mlx.generate --text "The quick brown fox jumped over the lazy dog." --q 4

From Python

You can load a pretrained model from Python:

from f5_tts_mlx.generate import generate

audio = generate(text = "Hello world.", ...)

Pretrained model weights are also available on Hugging Face.

Appreciation

Yushen Chen for the original Pytorch implementation of F5 TTS and pretrained model.

Phil Wang for the E2 TTS implementation that this model is based on.

Citations

@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},
}
@inproceedings{Eskimez2024E2TE,
    title   = {E2 TTS: Embarrassingly Easy Fully Non-Autoregressive Zero-Shot TTS},
    author  = {Sefik Emre Eskimez and Xiaofei Wang and Manthan Thakker and Canrun Li and Chung-Hsien Tsai and Zhen Xiao and Hemin Yang and Zirun Zhu and Min Tang and Xu Tan and Yanqing Liu and Sheng Zhao and Naoyuki Kanda},
    year    = {2024},
    url     = {https://api.semanticscholar.org/CorpusID:270738197}
}

License

The code in this repository is released under the MIT license as found in the LICENSE file.

Metadata

Release files for f5-tts-mlx 0.2.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for f5-tts-mlx 0.2.6
File Size Uploaded Provenance Actions
f5_tts_mlx-0.2.6.tar.gz 237.1 kB Without provenance Details for f5_tts_mlx-0.2.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for f5-tts-mlx 0.2.6
File Interpreter ABI Platform Actions
f5_tts_mlx-0.2.6-py3-none-any.whl Python 3 none any Details for f5_tts_mlx-0.2.6-py3-none-any.whl

Total release size: 474.8 kB

Release files / f5_tts_mlx-0.2.6.tar.gz

Download URL f5_tts_mlx-0.2.6.tar.gz
Size 237.1 kB
Tags Source
SHA-256 checksum
How to use checksums
de94f7ba838cce4b44c4c926335a820b93bd629a5ad0f9f8ac98fc65c166529d
BLAKE2b-256 checksum
How to use checksums
98be37627863ed8c2ab7fdd09123c3b2299d637a9153f639b2c1bb84b4a065ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.21

Release files / f5_tts_mlx-0.2.6-py3-none-any.whl

Download URL f5_tts_mlx-0.2.6-py3-none-any.whl
Size 237.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bfb7d4c5c9020436f8bb16a8051d8a42c8a83b940b634a71a127024bb6554ec4
BLAKE2b-256 checksum
How to use checksums
e50418740971b4602651c4caf3dfd44062df0a93aa345e4f40e10863df8c8111
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.21

Security for f5-tts-mlx 0.2.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page