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-indextts2 native 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 standard transformers checkpoint.
  • 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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for raoqu/index-tts2-metal

Quantized
(1)
this model

Papers for raoqu/index-tts2-metal