Instructions to use yunfengwang/IndexTTS-2.5-mlx with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use yunfengwang/IndexTTS-2.5-mlx with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] huggingface-cli download --local-dir IndexTTS-2.5-mlx yunfengwang/IndexTTS-2.5-mlx
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
| license: other | |
| license_name: bilibili-indextts | |
| license_link: https://modelscope.cn/models/IndexTeam/IndexTTS-2.5 | |
| tags: | |
| - tts | |
| - voice-cloning | |
| - mlx | |
| - apple-silicon | |
| - indextts | |
| library_name: mlx | |
| # IndexTTS-2.5 — MLX (int8) | |
| [IndexTTS-2.5](https://modelscope.cn/models/IndexTeam/IndexTTS-2.5) ported to **MLX** for Apple Silicon, with an **int8-quantized GPT** decoder. Torch-free. This repo holds the weights consumed by the [`index-tts-2.5-mlx`](https://pypi.org/project/index-tts-2.5-mlx/) Python package (one-click `uvx`, auto-download). | |
| Only the **int8** variant is published: the GPT decode loop is the bottleneck and the only module where weight-only quantization gives a real GPU speedup; the remaining modules are compute-bound or fidelity-critical and stay fp32. | |
| ## Features | |
| - **Zero-shot voice cloning** from a ≤15 s reference; build the speaker once, reuse across unlimited lines. | |
| - **Multilingual + code-switching** — `zh` / `en` / `ja` / `yue`, mixed in one sentence. | |
| - **Text normalization** (`wetext`) reads numbers/abbreviations correctly. | |
| - **Rich decoding controls** — greedy or sampling, repetition penalty, speech-rate, flow-matching solver knobs. | |
| - **Faster than real-time** on Apple Silicon — see Performance below. | |
| Full CLI/API options, quality metrics (ASR / speaker-similarity / numeric-fidelity), and the PyTorch→MLX conversion notes are on the [PyPI page](https://pypi.org/project/index-tts-2.5-mlx/). | |
| ## Layout | |
| ``` | |
| gpt_int8.safetensors # int8 GPT (weight + scales + biases), embeddings fp32 | |
| cfm_estimator.safetensors # flow-matching DiT (fp32) | |
| raw/semantic_model.safetensors # w2v-bert semantic encoder | |
| raw/emo.safetensors # emotion vector | |
| raw/campplus.safetensors # speaker embedding | |
| raw/length_regulator.safetensors | |
| raw/semantic_codec.safetensors # codec decoder | |
| raw/bigvgan.safetensors # vocoder | |
| multilingual_zh_ja_yue_char_del.tiktoken | |
| spk_proj.npz | |
| hf_cache/w2v-bert-2.0/{config.json,preprocessor_config.json} # feature extractor only (no weights) | |
| ``` | |
| ## Usage | |
| ```bash | |
| uvx index-tts-2.5-mlx synth --ref voice.wav --text "大家好, this is IndexTTS." --out out.wav | |
| ``` | |
| ```python | |
| from index_tts_2_5_mlx import IndexTTS | |
| tts = IndexTTS() # downloads this repo on first use | |
| sr, pcm = tts.clone("AI 模型在 2025 年处理了 100 万条数据。", ref_audio_path="voice.wav", out="out.wav") | |
| ``` | |
| ## Performance (Apple M5 Pro, warm) | |
| | Backend | RTF | vs PyTorch MPS | | |
| |---|---|---| | |
| | PyTorch MPS (official) | 1.11–1.17 | 1.0× | | |
| | MLX fp32 | 0.67–0.71 | ~1.7× | | |
| | **MLX int8** | **0.45–0.47** | **~2.4×** | | |
| RTF < 1 = faster than real-time. See the [PyPI page](https://pypi.org/project/index-tts-2.5-mlx/) for full quality (ASR / speaker-similarity / numeric-fidelity) and usage details. | |
| ## License | |
| Weights are subject to the original **Bilibili IndexTTS** license (see the upstream model card). Use voice cloning responsibly and only with the voice owner's consent. | |