Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
517 lines
14 KiB
JSON
517 lines
14 KiB
JSON
{
|
|
"family": "index_tts2",
|
|
"display_name": "IndexTTS2",
|
|
"description": "Zero-shot TTS system with voice cloning, emotion-speaker decoupling, text or audio emotion control, and explicit duration control. Variant v2 covers Chinese and English; variant v2.5 (config version 2.5) adds multilingual tiktoken tokenization with Japanese, Spanish and Arabic support.",
|
|
"category": "tts",
|
|
"status": "supported",
|
|
"tasks": [
|
|
"tts",
|
|
"clone"
|
|
],
|
|
"modes": [
|
|
"offline"
|
|
],
|
|
"languages": [
|
|
"zh",
|
|
"en",
|
|
"ja",
|
|
"es",
|
|
"ar"
|
|
],
|
|
"options": {
|
|
"request": [
|
|
{
|
|
"name": "text",
|
|
"type": "string",
|
|
"description": "Fallback target text when text_input is absent; prompt is also accepted.",
|
|
"required": false
|
|
},
|
|
{
|
|
"name": "language",
|
|
"type": "string",
|
|
"description": "IndexTTS2.5 text language; empty or auto selects from text.",
|
|
"required": false
|
|
},
|
|
{
|
|
"name": "emotion_alpha",
|
|
"type": "float",
|
|
"description": "Emotion conditioning blend strength.",
|
|
"required": false,
|
|
"min": 0,
|
|
"max": 1,
|
|
"default": 1
|
|
},
|
|
{
|
|
"name": "emotion_vector",
|
|
"type": "string",
|
|
"description": "Eight comma-separated finite emotion strengths.",
|
|
"required": false
|
|
},
|
|
{
|
|
"name": "use_emotion_text",
|
|
"type": "bool",
|
|
"description": "Use text-derived emotion conditioning.",
|
|
"required": false,
|
|
"default": false
|
|
},
|
|
{
|
|
"name": "emotion_text",
|
|
"type": "string",
|
|
"description": "Emotion description.",
|
|
"required": false
|
|
},
|
|
{
|
|
"name": "use_random_emotion",
|
|
"type": "bool",
|
|
"description": "Use random emotion conditioning.",
|
|
"required": false,
|
|
"default": false
|
|
},
|
|
{
|
|
"name": "interval_silence_ms",
|
|
"type": "int",
|
|
"description": "Silence between generated segments in milliseconds.",
|
|
"required": false,
|
|
"min": 0,
|
|
"default": 200
|
|
},
|
|
{
|
|
"name": "do_sample",
|
|
"type": "bool",
|
|
"description": "Enable sampling.",
|
|
"required": false,
|
|
"default": true
|
|
},
|
|
{
|
|
"name": "top_p",
|
|
"type": "float",
|
|
"description": "Nucleus sampling probability. Must be in (0, 1].",
|
|
"required": false,
|
|
"default": 0.8
|
|
},
|
|
{
|
|
"name": "top_k",
|
|
"type": "int",
|
|
"description": "Top-k sampling limit.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 30
|
|
},
|
|
{
|
|
"name": "temperature",
|
|
"type": "float",
|
|
"description": "Sampling temperature. Must be positive.",
|
|
"required": false,
|
|
"default": 0.8
|
|
},
|
|
{
|
|
"name": "length_penalty",
|
|
"type": "float",
|
|
"description": "Beam search length penalty.",
|
|
"required": false,
|
|
"default": 0
|
|
},
|
|
{
|
|
"name": "num_beams",
|
|
"type": "int",
|
|
"description": "Beam search width.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 3
|
|
},
|
|
{
|
|
"name": "repetition_penalty",
|
|
"type": "float",
|
|
"description": "Sampling repetition penalty.",
|
|
"required": false,
|
|
"default": 10
|
|
},
|
|
{
|
|
"name": "max_tokens",
|
|
"type": "int",
|
|
"description": "Maximum generated mel tokens.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 1500
|
|
},
|
|
{
|
|
"name": "duration_scale",
|
|
"type": "float",
|
|
"description": "Positive waveform duration rescaling, supported by both IndexTTS2 and IndexTTS2.5.",
|
|
"required": false,
|
|
"default": 1
|
|
},
|
|
{
|
|
"name": "seed",
|
|
"type": "int",
|
|
"description": "Sampling seed; omitted chooses a random seed.",
|
|
"required": false,
|
|
"min": 0,
|
|
"max": 4294967295
|
|
},
|
|
{
|
|
"name": "text_chunk_size",
|
|
"type": "int",
|
|
"description": "Optional framework long-form text chunk size; omitted keeps the full input together. Must be positive.",
|
|
"required": false
|
|
},
|
|
{
|
|
"name": "text_chunk_mode",
|
|
"type": "enum",
|
|
"description": "Framework text chunking mode.",
|
|
"required": false,
|
|
"values": [
|
|
"default",
|
|
"tag_aware",
|
|
"japanese",
|
|
"endline"
|
|
],
|
|
"default": "default"
|
|
}
|
|
],
|
|
"session": [
|
|
{
|
|
"name": "weight_type",
|
|
"type": "enum",
|
|
"description": "Weight storage type; defaults to native.",
|
|
"required": false,
|
|
"preset": "weight_type_full"
|
|
},
|
|
{
|
|
"name": "conv_weight_type",
|
|
"type": "enum",
|
|
"description": "Convolution weight storage; native on HIP resolves to F16.",
|
|
"required": false,
|
|
"preset": "weight_type_conv",
|
|
"default": "native"
|
|
},
|
|
{
|
|
"name": "mem_saver",
|
|
"type": "bool",
|
|
"description": "Release staged runtime graphs.",
|
|
"required": false,
|
|
"default": false
|
|
},
|
|
{
|
|
"name": "speaker_cache_slots",
|
|
"type": "int",
|
|
"description": "Reference or emotion cache slots; zero disables reuse.",
|
|
"required": false,
|
|
"min": 0,
|
|
"default": 1
|
|
},
|
|
{
|
|
"name": "emotion_cache_slots",
|
|
"type": "int",
|
|
"description": "Reference or emotion cache slots; zero disables reuse.",
|
|
"required": false,
|
|
"min": 0,
|
|
"default": 1
|
|
},
|
|
{
|
|
"name": "emotion_text_cache_slots",
|
|
"type": "int",
|
|
"description": "Reference or emotion cache slots; zero disables reuse.",
|
|
"required": false,
|
|
"min": 0,
|
|
"default": 1
|
|
},
|
|
{
|
|
"name": "gpt_graph_arena_mb",
|
|
"type": "int",
|
|
"description": "Context or graph arena size in MiB.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 32
|
|
},
|
|
{
|
|
"name": "s2mel_graph_arena_mb",
|
|
"type": "int",
|
|
"description": "Context or graph arena size in MiB.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 32
|
|
},
|
|
{
|
|
"name": "reference_graph_arena_mb",
|
|
"type": "int",
|
|
"description": "Context or graph arena size in MiB.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 512
|
|
},
|
|
{
|
|
"name": "emotion_text_prefill_graph_arena_mb",
|
|
"type": "int",
|
|
"description": "Context or graph arena size in MiB.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 2048
|
|
},
|
|
{
|
|
"name": "emotion_text_decode_graph_arena_mb",
|
|
"type": "int",
|
|
"description": "Context or graph arena size in MiB.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 512
|
|
},
|
|
{
|
|
"name": "weight_context_mb",
|
|
"type": "int",
|
|
"description": "Context or graph arena size in MiB.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 32
|
|
},
|
|
{
|
|
"name": "emotion_text_max_tokens",
|
|
"type": "int",
|
|
"description": "Emotion description generation token limit; emotion_text_max_new_tokens is also accepted.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 256
|
|
}
|
|
],
|
|
"load": []
|
|
},
|
|
"capabilities": {
|
|
"tts": [
|
|
"emotion_control"
|
|
],
|
|
"clone": [
|
|
"speaker_reference",
|
|
"emotion_control"
|
|
]
|
|
},
|
|
"runtime": {
|
|
"tags": [
|
|
"gguf"
|
|
]
|
|
},
|
|
"ui": {
|
|
"recommended_package": "index_tts2_q8_0",
|
|
"tags": [
|
|
"TTS",
|
|
"Clone",
|
|
"GGUF"
|
|
],
|
|
"docs": [
|
|
"docs/models/index_tts2.md",
|
|
"docs/tts.md",
|
|
"docs/gguf.md"
|
|
]
|
|
},
|
|
"package_defaults": {
|
|
"download": {
|
|
"kind": "huggingface_snapshot",
|
|
"repo": "audio-cpp/audio.cpp-gguf",
|
|
"revision": "main",
|
|
"gated": false
|
|
}
|
|
},
|
|
"packages": [
|
|
{
|
|
"id": "index_tts2_q8_0",
|
|
"display_name": "IndexTTS2 Q8_0 GGUF",
|
|
"default": true,
|
|
"format": "gguf",
|
|
"precision": "q8_0",
|
|
"target_directory": "IndexTTS2-GGUF",
|
|
"files": [
|
|
"IndexTTS2-GGUF/index-tts2-q8_0.gguf"
|
|
],
|
|
"strip_prefix": "IndexTTS2-GGUF"
|
|
},
|
|
{
|
|
"id": "index_tts2_f16",
|
|
"display_name": "IndexTTS2 F16 GGUF",
|
|
"format": "gguf",
|
|
"precision": "f16",
|
|
"target_directory": "IndexTTS2-GGUF",
|
|
"files": [
|
|
"IndexTTS2-GGUF/index-tts2-f16.gguf"
|
|
],
|
|
"strip_prefix": "IndexTTS2-GGUF"
|
|
},
|
|
{
|
|
"id": "index_tts2_orig",
|
|
"display_name": "IndexTTS2 Original-Dtype GGUF",
|
|
"format": "gguf",
|
|
"precision": "orig",
|
|
"target_directory": "IndexTTS2-GGUF",
|
|
"files": [
|
|
"IndexTTS2-GGUF/index-tts2-orig.gguf"
|
|
],
|
|
"strip_prefix": "IndexTTS2-GGUF"
|
|
},
|
|
{
|
|
"id": "index_tts2_safetensors",
|
|
"display_name": "IndexTTS2 Safetensors",
|
|
"format": "safetensors",
|
|
"precision": "native",
|
|
"target_directory": "IndexTTS-2",
|
|
"files": [
|
|
"config.yaml",
|
|
"bpe.model",
|
|
"gpt.safetensors",
|
|
"w2v-bert-2.0/config.json",
|
|
"w2v-bert-2.0/preprocessor_config.json",
|
|
"bigvgan/config.json",
|
|
"qwen0.6bemo4-merge/config.json",
|
|
"qwen0.6bemo4-merge/generation_config.json",
|
|
"qwen0.6bemo4-merge/tokenizer.json",
|
|
"qwen0.6bemo4-merge/tokenizer_config.json",
|
|
"qwen0.6bemo4-merge/vocab.json",
|
|
"qwen0.6bemo4-merge/merges.txt",
|
|
"s2mel.safetensors",
|
|
"feat1.safetensors",
|
|
"feat2.safetensors",
|
|
"wav2vec2bert_stats.safetensors",
|
|
"w2v-bert-2.0/model.safetensors",
|
|
"semantic_codec_model.safetensors",
|
|
"campplus.safetensors",
|
|
"bigvgan/model.safetensors",
|
|
"qwen0.6bemo4-merge/model.safetensors"
|
|
],
|
|
"download": {
|
|
"kind": "huggingface_snapshot",
|
|
"repo": "mlx-community/index-tts2-mlx"
|
|
}
|
|
},
|
|
{
|
|
"id": "index_tts2_5_q8_0",
|
|
"display_name": "IndexTTS2.5 Q8_0 GGUF",
|
|
"format": "gguf",
|
|
"precision": "q8_0",
|
|
"target_directory": "IndexTTS2.5-GGUF",
|
|
"files": [
|
|
"IndexTTS2.5-GGUF/index-tts2_5-q8_0.gguf"
|
|
],
|
|
"strip_prefix": "IndexTTS2.5-GGUF"
|
|
},
|
|
{
|
|
"id": "index_tts2_5_f16",
|
|
"display_name": "IndexTTS2.5 F16 GGUF",
|
|
"format": "gguf",
|
|
"precision": "f16",
|
|
"target_directory": "IndexTTS2.5-GGUF",
|
|
"files": [
|
|
"IndexTTS2.5-GGUF/index-tts2_5-f16.gguf"
|
|
],
|
|
"strip_prefix": "IndexTTS2.5-GGUF"
|
|
},
|
|
{
|
|
"id": "index_tts2_5_orig",
|
|
"display_name": "IndexTTS2.5 Original-Dtype GGUF",
|
|
"format": "gguf",
|
|
"precision": "orig",
|
|
"target_directory": "IndexTTS2.5-GGUF",
|
|
"files": [
|
|
"IndexTTS2.5-GGUF/index-tts2_5-orig.gguf"
|
|
],
|
|
"strip_prefix": "IndexTTS2.5-GGUF"
|
|
}
|
|
],
|
|
"sources": [
|
|
{
|
|
"format": "gguf",
|
|
"roots": {
|
|
"model": ".",
|
|
"weights": "$gguf"
|
|
},
|
|
"files": {
|
|
"config": "model:config.yaml",
|
|
"wav2vec2bert_config": "model:w2v-bert-2.0/config.json",
|
|
"wav2vec2bert_preprocessor_config": "model:w2v-bert-2.0/preprocessor_config.json",
|
|
"bigvgan_config": "model:bigvgan/config.json",
|
|
"qwen_emotion_config": "model:qwen0.6bemo4-merge/config.json",
|
|
"qwen_emotion_generation_config": "model:qwen0.6bemo4-merge/generation_config.json",
|
|
"qwen_emotion_tokenizer": "model:qwen0.6bemo4-merge/tokenizer.json",
|
|
"qwen_emotion_tokenizer_config": "model:qwen0.6bemo4-merge/tokenizer_config.json",
|
|
"qwen_emotion_vocab": "model:qwen0.6bemo4-merge/vocab.json",
|
|
"qwen_emotion_merges": "model:qwen0.6bemo4-merge/merges.txt"
|
|
},
|
|
"optional_files": {
|
|
"bpe": "model:bpe.model",
|
|
"tiktoken": "model:multilingual_zh_ja_yue_char_del.tiktoken"
|
|
},
|
|
"tensors": {
|
|
"gpt": {
|
|
"source": "weights:",
|
|
"prefix": "gpt"
|
|
},
|
|
"s2mel": {
|
|
"source": "weights:",
|
|
"prefix": "s2mel"
|
|
},
|
|
"speaker_matrix": {
|
|
"source": "weights:",
|
|
"prefix": "speaker_matrix"
|
|
},
|
|
"emotion_matrix": {
|
|
"source": "weights:",
|
|
"prefix": "emotion_matrix"
|
|
},
|
|
"wav2vec2bert_stats": {
|
|
"source": "weights:",
|
|
"prefix": "wav2vec2bert_stats"
|
|
},
|
|
"wav2vec2bert": {
|
|
"source": "weights:",
|
|
"prefix": "wav2vec2bert"
|
|
},
|
|
"semantic_codec": {
|
|
"source": "weights:",
|
|
"prefix": "semantic_codec"
|
|
},
|
|
"campplus": {
|
|
"source": "weights:",
|
|
"prefix": "campplus"
|
|
},
|
|
"bigvgan": {
|
|
"source": "weights:",
|
|
"prefix": "bigvgan"
|
|
},
|
|
"qwen_emotion": {
|
|
"source": "weights:",
|
|
"prefix": "qwen_emotion"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"format": "safetensors",
|
|
"roots": {
|
|
"model": "."
|
|
},
|
|
"files": {
|
|
"config": "model:config.yaml",
|
|
"wav2vec2bert_config": "model:w2v-bert-2.0/config.json",
|
|
"wav2vec2bert_preprocessor_config": "model:w2v-bert-2.0/preprocessor_config.json",
|
|
"bigvgan_config": "model:bigvgan/config.json",
|
|
"qwen_emotion_config": "model:qwen0.6bemo4-merge/config.json",
|
|
"qwen_emotion_generation_config": "model:qwen0.6bemo4-merge/generation_config.json",
|
|
"qwen_emotion_tokenizer": "model:qwen0.6bemo4-merge/tokenizer.json",
|
|
"qwen_emotion_tokenizer_config": "model:qwen0.6bemo4-merge/tokenizer_config.json",
|
|
"qwen_emotion_vocab": "model:qwen0.6bemo4-merge/vocab.json",
|
|
"qwen_emotion_merges": "model:qwen0.6bemo4-merge/merges.txt"
|
|
},
|
|
"optional_files": {
|
|
"bpe": "model:bpe.model",
|
|
"tiktoken": "model:multilingual_zh_ja_yue_char_del.tiktoken"
|
|
},
|
|
"tensors": {
|
|
"gpt": "model:gpt.safetensors",
|
|
"s2mel": "model:s2mel.safetensors",
|
|
"speaker_matrix": "model:feat1.safetensors",
|
|
"emotion_matrix": "model:feat2.safetensors",
|
|
"wav2vec2bert_stats": "model:wav2vec2bert_stats.safetensors",
|
|
"wav2vec2bert": "model:w2v-bert-2.0/model.safetensors",
|
|
"semantic_codec": "model:semantic_codec_model.safetensors",
|
|
"campplus": "model:campplus.safetensors",
|
|
"bigvgan": "model:bigvgan/model.safetensors",
|
|
"qwen_emotion": "model:qwen0.6bemo4-merge/model.safetensors"
|
|
}
|
|
}
|
|
]
|
|
}
|