261 lines
7.5 KiB
JSON
261 lines
7.5 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"family": "glm_tts",
|
|
"display_name": "GLM-TTS",
|
|
"description": "Community Chinese-English zero-shot speech synthesis and voice cloning with native Llama, Whisper-VQ, Flow/DiT, CAMPPlus, and HiFT execution.",
|
|
"category": "tts",
|
|
"status": "community",
|
|
"tasks": [
|
|
"tts",
|
|
"clone"
|
|
],
|
|
"modes": [
|
|
"offline"
|
|
],
|
|
"languages": [
|
|
"zh",
|
|
"en"
|
|
],
|
|
"capabilities": {
|
|
"clone": [
|
|
"speaker_reference"
|
|
]
|
|
},
|
|
"options": {
|
|
"request": [
|
|
{
|
|
"name": "reference_text",
|
|
"type": "string",
|
|
"description": "Transcript matching the reference voice audio; required by GLM-TTS zero-shot synthesis.",
|
|
"required": true
|
|
},
|
|
{
|
|
"name": "max_tokens",
|
|
"type": "int",
|
|
"description": "Maximum generated speech tokens; otherwise the official 2x-to-20x text-token bounds are used.",
|
|
"required": false,
|
|
"min": 0,
|
|
"default": 0
|
|
},
|
|
{
|
|
"name": "temperature",
|
|
"type": "float",
|
|
"description": "Speech-token temperature; official default 1.0.",
|
|
"required": false,
|
|
"min": 0.0,
|
|
"default": 1.0
|
|
},
|
|
{
|
|
"name": "top_k",
|
|
"type": "int",
|
|
"description": "Speech-token top-k; official default 25.",
|
|
"required": false,
|
|
"min": 0,
|
|
"default": 25
|
|
},
|
|
{
|
|
"name": "top_p",
|
|
"type": "float",
|
|
"description": "Speech-token nucleus threshold; official default 0.8.",
|
|
"required": false,
|
|
"min": 0.0,
|
|
"max": 1.0,
|
|
"default": 0.8
|
|
},
|
|
{
|
|
"name": "seed",
|
|
"type": "int",
|
|
"description": "Speech-token, Flow-noise, and HiFT seed.",
|
|
"required": false,
|
|
"min": 0,
|
|
"default": 0
|
|
},
|
|
{
|
|
"name": "num_inference_steps",
|
|
"type": "int",
|
|
"description": "Flow Euler steps; defaults to model config, usually official default 10.",
|
|
"required": false,
|
|
"min": 1
|
|
},
|
|
{
|
|
"name": "flow_guidance_scale",
|
|
"type": "float",
|
|
"description": "Flow classifier-free guidance rate; defaults to model config, usually official default 0.7.",
|
|
"required": false,
|
|
"min": 0.0
|
|
},
|
|
{
|
|
"name": "flow_noise_path",
|
|
"type": "path",
|
|
"description": "Optional raw float32 initial Flow noise for parity tests.",
|
|
"required": false
|
|
},
|
|
{
|
|
"name": "hift_source_random_path",
|
|
"type": "path",
|
|
"description": "Optional raw float32 HiFT phase-uniform and Gaussian values for parity tests.",
|
|
"required": false
|
|
},
|
|
{
|
|
"name": "hift_prior_noise_count",
|
|
"type": "int",
|
|
"description": "Torch RNG value offset used before HiFT source generation; default 0.",
|
|
"required": false,
|
|
"min": 0,
|
|
"default": 0
|
|
}
|
|
],
|
|
"session": [
|
|
{
|
|
"name": "weight_type",
|
|
"type": "enum",
|
|
"description": "Requested component weight storage type; default native.",
|
|
"preset": "weight_type_full",
|
|
"required": false,
|
|
"default": "native"
|
|
},
|
|
{
|
|
"name": "mem_saver",
|
|
"type": "bool",
|
|
"description": "Release reference-only encoders after caching the voice while keeping the generation path warm; default false.",
|
|
"required": false,
|
|
"default": false
|
|
},
|
|
{
|
|
"name": "aggressive_mem_saver",
|
|
"type": "bool",
|
|
"description": "Also release Llama, Flow, and HiFT after every stage. Minimizes VRAM but reloads the generation path on every request; default false.",
|
|
"required": false,
|
|
"default": false
|
|
},
|
|
{
|
|
"name": "reference_cache_slots",
|
|
"type": "int",
|
|
"description": "Prepared reference-audio cache slots; default 1. Use 0 to disable.",
|
|
"required": false,
|
|
"min": 0,
|
|
"default": 1
|
|
},
|
|
{
|
|
"name": "llama_weight_context_mb",
|
|
"type": "int",
|
|
"description": "Llama weight metadata context in MiB; default 8192.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 8192
|
|
},
|
|
{
|
|
"name": "constant_context_mb",
|
|
"type": "int",
|
|
"description": "Llama constant tensor context in MiB; default 256.",
|
|
"required": false,
|
|
"min": 1,
|
|
"default": 256
|
|
}
|
|
],
|
|
"load": []
|
|
},
|
|
"runtime": {
|
|
"tags": [
|
|
"gguf"
|
|
]
|
|
},
|
|
"sources": [
|
|
{
|
|
"format": "gguf",
|
|
"roots": {
|
|
"model": ".",
|
|
"weights": "$gguf"
|
|
},
|
|
"files": {
|
|
"llama_config": "model:llm/config.json",
|
|
"llama_generation_config": "model:llm/generation_config.json",
|
|
"speech_tokenizer_config": "model:speech_tokenizer/config.json",
|
|
"speech_tokenizer_preprocessor": "model:speech_tokenizer/preprocessor_config.json",
|
|
"tokenizer_config": "model:vq32k-phoneme-tokenizer/tokenizer_config.json",
|
|
"tokenizer_vocab": "model:vq32k-phoneme-tokenizer/tokenizer_vocab.json",
|
|
"tokenizer_merges": "model:vq32k-phoneme-tokenizer/tokenizer_merges.txt",
|
|
"flow_config": "model:flow/config.yaml",
|
|
"audio_cpp_config": "model:audio_cpp_config.json"
|
|
},
|
|
"tensors": {
|
|
"llama_weights": {
|
|
"source": "weights:",
|
|
"prefix": "llama_weights"
|
|
},
|
|
"speech_tokenizer_weights": {
|
|
"source": "weights:",
|
|
"prefix": "speech_tokenizer_weights"
|
|
},
|
|
"flow_weights": {
|
|
"source": "weights:",
|
|
"prefix": "flow_weights"
|
|
},
|
|
"hift_weights": {
|
|
"source": "weights:",
|
|
"prefix": "hift_weights"
|
|
},
|
|
"campplus_weights": {
|
|
"source": "weights:",
|
|
"prefix": "campplus_weights"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"format": "safetensors",
|
|
"roots": {
|
|
"model": "."
|
|
},
|
|
"files": {
|
|
"llama_config": "model:llm/config.json",
|
|
"llama_generation_config": "model:llm/generation_config.json",
|
|
"speech_tokenizer_config": "model:speech_tokenizer/config.json",
|
|
"speech_tokenizer_preprocessor": "model:speech_tokenizer/preprocessor_config.json",
|
|
"tokenizer_config": "model:vq32k-phoneme-tokenizer/tokenizer_config.json",
|
|
"tokenizer_vocab": "model:vq32k-phoneme-tokenizer/tokenizer_vocab.json",
|
|
"tokenizer_merges": "model:vq32k-phoneme-tokenizer/tokenizer_merges.txt",
|
|
"flow_config": "model:flow/config.yaml",
|
|
"audio_cpp_config": "model:audio_cpp_config.json"
|
|
},
|
|
"tensors": {
|
|
"llama_weights": "model:llm/model.safetensors.index.json",
|
|
"speech_tokenizer_weights": "model:speech_tokenizer/model.safetensors",
|
|
"flow_weights": "model:flow/model.safetensors",
|
|
"hift_weights": "model:hift/model.safetensors",
|
|
"campplus_weights": "model:frontend/campplus.safetensors"
|
|
}
|
|
}
|
|
],
|
|
"packages": [
|
|
{
|
|
"id": "glm_tts_q8_0",
|
|
"display_name": "GLM-TTS mixed Q8_0/F16 GGUF",
|
|
"default": true,
|
|
"format": "gguf",
|
|
"precision": "q8_0",
|
|
"target_directory": "GLM-TTS-Q8",
|
|
"files": [
|
|
"Text to audio (TTS)/GLM-TTS_Q8.gguf"
|
|
],
|
|
"download": {
|
|
"kind": "huggingface_snapshot",
|
|
"repo": "mirek190/audio.cpp"
|
|
}
|
|
}
|
|
],
|
|
"dependencies": [],
|
|
"ui": {
|
|
"recommended_package": "glm_tts_q8_0",
|
|
"tags": [
|
|
"TTS",
|
|
"Clone",
|
|
"GGUF"
|
|
],
|
|
"docs": [
|
|
"docs/community_models/glm_tts.md",
|
|
"docs/reports/glm_tts_validation.md",
|
|
"docs/gguf.md"
|
|
]
|
|
}
|
|
}
|