IndexTTS-2.5-mlx / README.md
yunfengwang's picture
Upload README.md with huggingface_hub
660a09b verified
|
Raw
History Blame Contribute Delete
2.99 kB
---
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.