IndexTTS 2.5 German – 310-hour community fine-tune
German GPT checkpoint for IndexTTS 2.5, fine-tuned on approximately 310 hours of German speech. It adds a trained German language-conditioning row while retaining the original zero-shot reference-voice conditioning.
This repository contains the German GPT checkpoint and its matching German text
frontend. It does not duplicate the official codec, speech-to-mel model,
vocoder, tokenizer, or other auxiliary weights. Download the official
IndexTeam/IndexTTS-2.5 model separately.
Required upstream notice: Any modifications made to the original model in this Derivative Work are not endorsed, warranted, or guaranteed by the original right-holder of the original model, and the original right-holder disclaims all liability related to this Derivative Work.
Highlights
- German zero-shot voice cloning from one reference clip
- 310.005 hours of German training audio
- 105,616 source utterances and 211,226 training pairs
- balanced MLS, HUI Clean, and Emilia-YODAS mixture
- single-generation inference (
num_beams=1), with no best-of reranking - German numbers, dates, times, currency, units, and abbreviations are normalized
- input is lowercased to match training; this is important for pronunciation
- selected checkpoint: optimizer step 16,000
Files
| File | Purpose |
|---|---|
gpt.pth |
Merged German GPT checkpoint; use this alongside the official base files |
inference.py |
Recommended command-line inference entry point |
german_text.py |
Dependency-free German text normalization used during training |
training_config.yaml |
Training hyperparameters |
evaluation_summary.json |
Machine-readable evaluation results |
NOTICE.md |
Upstream license notice and training-data attribution |
LICENSE |
Original Bilibili Model Use License Agreement |
SHA256SUMS.txt |
Integrity hashes for released files |
Requirements
- Python 3.10 or 3.11
- NVIDIA GPU; approximately 6 GB VRAM for the official IndexTTS-2.5 inference path
- the official IndexTTS source repository
- the official IndexTTS-2.5 base model
Use the installation instructions from the official IndexTTS repository. This model repository intentionally does not redefine or pin the upstream runtime dependencies.
Quick start
Clone and prepare the official project, then download both sets of weights:
git clone https://github.com/index-tts/index-tts.git
cd index-tts
uv sync --all-extras
uv run hf download IndexTeam/IndexTTS-2.5 --local-dir checkpoints
uv run hf download <YOUR-HF-USERNAME>/IndexTTS-2.5-German --local-dir german-model
Run the included German inference script from the official repository directory:
uv run python german-model/inference.py \
--base-model checkpoints \
--prompt-audio /path/to/reference.wav \
--text "Dazu kommen 3 Gigabyte Speicher." \
--output output.wav
The frontend converts the example internally to dazu kommen drei gigabyte speicher.. Do not bypass german_text.prepare_german() unless your application
performs identical normalization and lowercasing.
The checkpoint is loaded after the official base model with acceleration disabled, because an acceleration snapshot created before loading the fine-tune would keep using the original GPT weights.
Python integration
The essential integration is:
from pathlib import Path
from indextts.infer_v2_5 import IndexTTS2
from indextts.utils.checkpoint import load_checkpoint
from german_text import prepare_german
base = Path("checkpoints")
tts = IndexTTS2(
cfg_path=str(base / "config.yaml"),
model_dir=str(base),
use_bf16=True,
use_accel=False,
use_qwen_emo=False,
)
load_checkpoint(tts.gpt, "german-model/gpt.pth")
tts.gpt.eval()
tts.infer(
spk_audio_prompt="reference.wav",
text=prepare_german("Heute sind es 23 Grad."),
lang="de",
output_path="output.wav",
text_normalization=False,
num_beams=1,
temperature=0.7,
top_p=0.8,
top_k=30,
repetition_penalty=10.0,
)
The stock IndexTTS-2.5 UI does not expose this new German frontend automatically.
Applications that call IndexTTS2.infer() directly must use prepare_german()
first and pass text_normalization=False.
Training
The fine-tune started from the official IndexTTS-2.5 base checkpoint, not from an earlier German model.
| Source | Selected hours | Utterances | Speakers |
|---|---|---|---|
| Multilingual LibriSpeech, German train | 150.003 | 38,782 | 175 |
| HUI-Audio-Corpus-German Clean | 140.001 | 58,390 | 112 |
| Emilia-YODAS German, filtered subset | 20.001 | 8,444 | 645 |
| Total | 310.005 | 105,616 | — |
The HUI contribution was speaker-balanced. Bernd Ungerer contributed 18.198 hours / 7,075 clips, less than 6% of the complete mixture. Speaker projection and the emotion path were preserved/frozen. LoRA rank 64 / alpha 128 was applied to all 24 GPT layers; text embeddings and output heads were trained. The merged release checkpoint is directly loadable by IndexTTS.
Evaluation
Three late checkpoints were compared with 30 fixed German sentences and two held-out reference speakers. Every checkpoint received one generation per text and speaker with the same seed. Whisper Small was used only as a consistent ASR evaluator.
| Checkpoint | Word edits | Words | WER |
|---|---|---|---|
| 16,000 (released) | 23 | 430 | 5.35% |
| 19,000 | 25 | 430 | 5.81% |
| 19,803 | 26 | 430 | 6.05% |
For the released checkpoint, 48/60 transcripts were word-perfect. Category WER: simple sentences 1.49%, questions 0%, punctuation 0%, targeted German sounds 5.77%, compounds 6.25%, names 6.67%, and numeric/date forms 15.62%.
A targeted follow-up on “Dazu kommen 3 Gigabyte Speicher.” produced the complete sentence with both held-out voices at step 16,000. This does not guarantee identical results with every reference clip or seed.
Sample
Text: “Der große fröhliche Bär trägt einen grünen Regenschirm.”
Listen to the included German voice-cloning sample
Limitations
- This is a community fine-tune, not an official IndexTeam/Bilibili release.
- It is substantially more intelligible in German, but pronunciation is not perfect.
- Numbers, dates, names, long compounds, and dense consonant clusters remain harder.
- Quality and word omissions can depend on the reference clip and sampling seed.
- The ASR metric includes recognition and text-normalization errors and is not a substitute for human listening tests.
- This release was evaluated with the included frontend and one-generation settings; other settings can change the results.
- Voice cloning requires permission from the person whose voice is used. Do not use the model for impersonation, deception, or privacy violations.
License and data provenance
This checkpoint is a Derivative Work of IndexTTS-2.5 and is distributed under the Bilibili Model Use License Agreement. Read it before using or redistributing the model; it contains usage restrictions, downstream obligations, and thresholds that require a separate license.
Training-data details and attributions are recorded in NOTICE.md. In particular, the official HUI download page does not state a separate license for the distributed audio. The public uploader must independently verify that the intended distribution satisfies all data and recording rights.
Citation
Please cite the original IndexTTS-2.5 technical report:
@misc{li2026indextts25technicalreport,
title = {IndexTTS 2.5 Technical Report},
author = {Yunpei Li and Xun Zhou and Jinchao Wang and Lu Wang and
Yong Wu and Siyi Zhou and Yiquan Zhou and Yining Wang and
Yaogen Yang and Zhetao Hu and Jiacheng Xu and Bin Xia and
Jingchen Shu},
year = {2026},
eprint = {2601.03888},
archivePrefix= {arXiv},
primaryClass = {cs.SD},
url = {https://arxiv.org/abs/2601.03888}
}
Model tree for sharrnah/IndexTTS-2.5-German
Base model
IndexTeam/IndexTTS-2.5