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
metadata
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 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 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-switchingzh / 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.

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

uvx index-tts-2.5-mlx synth --ref voice.wav --text "大家好, this is IndexTTS." --out out.wav
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 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.