voice_audio_multi/model_specs/index_tts2.json
Fabio c36510c21e
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
Initial import: audio.cpp with Orange Pi documentation
2026-11-04 19:05:22 +01:00

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"
}
}
]
}