IndexTTS2 Metal Native Bundle
This repository contains a converted native MIT2 model bundle for
IndexTTS2, prepared for the index-tts2-metal Apple Silicon runtime.
The weights are derived from IndexTeam/IndexTTS-2
and converted from the original PyTorch checkpoint layout into the MIT2 bundle
format used by the native Metal runtime. This is not a fine-tuned model and does
not change the model architecture or training data; it is a runtime-specific
conversion for local inference on Apple Silicon.
Model Details
- Model type: text-to-speech / zero-shot voice cloning
- Base model:
IndexTeam/IndexTTS-2 - Runtime:
metal-indextts2 - Target hardware: Apple Silicon Macs
- Target OS: macOS with Metal and MetalPerformanceShaders
- Bundle format: MIT2 native bundle
- Expected precision: fp16 converted weights, with runtime-specific fp32 accumulation where implemented
- Hosted inference: disabled; this bundle requires the native runtime
What Is Included
The converted bundle is expected to contain:
bin/
manifest.json
weights.bin
tokenizer/
bpe.model
pinyin.vocab
config.yaml
configuration.json
bigvgan_config.json
Depending on how the bundle was converted, it may also include optional clone-time components such as semantic codec, BigVGAN, CAMPPlus, W2V-BERT, and W2V-BERT statistics.
Voice profiles are separate from the model bundle. Use a converted voice bundle or create one from reference audio with the native runtime.
Intended Use
This bundle is intended for local text-to-speech inference with
metal-indextts2 on Apple Silicon. Typical use cases include:
- local CJK text-to-speech generation,
- voice cloning from a reference WAV file,
- running an HTTP TTS service on macOS,
- experimenting with CFM step counts and runtime performance on Metal.
This repository is not intended to be loaded directly with transformers,
diffusers, or the default Hugging Face Inference API.
Requirements
- Apple Silicon Mac
- macOS with Metal and MetalPerformanceShaders
- Xcode Command Line Tools
- CMake 3.20 or newer
- Python 3.10 or newer for optional conversion and tooling
metal-indextts2native runtime built from source
Build the runtime:
cd index-tts2-metal
./build.sh
Usage
Download this model repository so the converted bundle is available locally.
If the repository stores the bundle under bin/, pass that directory to the
runtime.
Start HTTP API
./build/mtts --server \
--host 127.0.0.1 \
--port 3456 \
--model_bundle /path/to/model-repo/bin
Start Web UI
./build/mtts --web \
--host 127.0.0.1 \
--port 3456 \
--model_bundle /path/to/model-repo/bin
Then open:
http://127.0.0.1:3456/web
Run TTS
./build/mtts --tts \
/path/to/model-repo/bin \
/path/to/voice-bundle \
"今天的天气不错,我们去划船吧。" \
out.wav
Adjust CFM Steps
--cfm_steps controls the number of CFM synthesis steps. Lower values are
faster; higher values usually preserve more acoustic quality.
./build/mtts --cfm_steps 16 --tts \
/path/to/model-repo/bin \
/path/to/voice-bundle \
"今天的天气不错,我们去划船吧。" \
out.wav
Clone a Voice
./build/mtts --clone \
/path/to/model-repo/bin \
reference.wav \
/path/to/output-voice-bundle
Conversion
The bundle can be regenerated from the original PyTorch checkpoint with:
python -m metal_indextts2.tools.convert_model \
--checkpoint-dir /path/to/IndexTTS-2 \
--output bin \
--force-dtype f16
Add optional conversion arguments if you need native voice cloning support:
python -m metal_indextts2.tools.convert_model \
--checkpoint-dir /path/to/IndexTTS-2 \
--output bin \
--force-dtype f16 \
--semantic-codec /path/to/semantic_codec/model.safetensors \
--bigvgan-checkpoint /path/to/bigvgan/generator.pth \
--bigvgan-config /path/to/bigvgan/config.json \
--campplus-checkpoint /path/to/campplus.ckpt \
--w2v-bert-dir /path/to/w2v-bert-2.0 \
--w2v-stats /path/to/wav2vec2bert_stats.pt
Limitations
- This is a runtime-specific conversion, not a new training run.
- The bundle is meant for
metal-indextts2; it is not a standardtransformerscheckpoint. - Hosted inference is disabled because the model requires the native C++/Metal runtime and local voice bundles.
- Output quality depends on the base IndexTTS2 model, the reference voice quality, text normalization, and runtime settings such as CFM steps.
- Voice cloning should only be used with audio you have the right to use.
License
The original model is distributed by Index Team / bilibili under the
bilibili Model Use License Agreement.
This converted bundle is a derivative/runtime-format conversion of the original
weights, so users should review and comply with the original license terms.
If you redistribute this converted bundle, include the original license files
from IndexTeam/IndexTTS-2 in the model repository.
Citation
If you use this model, cite the original IndexTTS2 work:
@article{zhou2025indextts2,
title={IndexTTS2: A Breakthrough in Emotionally Expressive and Duration-Controlled Auto-Regressive Zero-Shot Text-to-Speech},
author={Siyi Zhou and Yiquan Zhou and Yi He and Xun Zhou and Jinchao Wang and Wei Deng and Jingchen Shu},
journal={arXiv preprint arXiv:2506.21619},
year={2025}
}
@article{deng2025indextts,
title={IndexTTS: An Industrial-Level Controllable and Efficient Zero-Shot Text-To-Speech System},
author={Wei Deng and Siyi Zhou and Jingchen Shu and Jinchao Wang and Lu Wang},
journal={arXiv preprint arXiv:2502.05512},
year={2025},
doi={10.48550/arXiv.2502.05512},
url={https://arxiv.org/abs/2502.05512}
}
Acknowledgements
This conversion targets the Apple Silicon runtime in metal-indextts2 and is
based on the original IndexTTS2 model released by Index Team.
- Downloads last month
- 22
Model tree for raoqu/index-tts2-metal
Base model
IndexTeam/IndexTTS-2