{ "schema_version": 1, "family": "sopro_tts", "display_name": "Sopro V2 Turbo", "description": "Community Sopro V2 Turbo (samuel-vitorino/sopro-v2-turbo): a 120M zero-shot voice-cloning TTS. SentencePiece text tokenizer, style-prefix conditioned autoregressive semantic LM over FSQ tokens, rectified-flow acoustic DiT and a Vocos ISTFT vocoder at 24 kHz.", "category": "tts", "status": "community", "tasks": [ "tts", "clone" ], "modes": [ "offline", "streaming" ], "languages": [ "en", "pt", "fr", "de" ], "runtime": { "tags": [ "server" ] }, "capabilities": { "clone": [ "speaker_reference" ] }, "options": { "request": [ { "name": "language", "type": "string", "description": "Language tag (en, pt, fr, de); omitted inherits transcript language, then the session default.", "required": false }, { "name": "temperature", "type": "float", "description": "Semantic sampling temperature; nonpositive selects greedy decoding. Omitted uses checkpoint generation.temperature.", "required": false }, { "name": "top_p", "type": "float", "description": "Semantic nucleus cutoff; values outside [0,1] are disabled/clamped by the sampler. Omitted uses checkpoint generation.top_p.", "required": false }, { "name": "top_k", "type": "int", "description": "Semantic top-k; nonpositive disables filtering. Omitted uses checkpoint generation.top_k.", "required": false }, { "name": "num_inference_steps", "type": "int", "description": "Positive acoustic sampling steps; omitted uses checkpoint generation.steps.", "required": false, "min": 1 }, { "name": "max_duration_sec", "type": "float", "description": "Positive maximum segment duration; must be >= min_duration_sec. Omitted uses checkpoint generation.max_seconds.", "required": false }, { "name": "min_duration_sec", "type": "float", "description": "Nonnegative minimum duration; must be <= max_duration_sec. Omitted uses checkpoint generation.min_seconds.", "required": false, "min": 0 }, { "name": "reference_duration_sec", "type": "float", "description": "Positive reference window in seconds; omitted uses checkpoint generation.ref_seconds.", "required": false }, { "name": "text_chunk_size", "type": "int", "description": "Positive codepoint budget per segment; omitted uses checkpoint generation.max_segment_chars.", "required": false, "min": 1 }, { "name": "seed", "type": "int", "description": "Non-negative seed for semantic sampling and the acoustic noise prior; omit for a random seed.", "required": false, "min": 0 } ], "session": [ { "name": "language", "type": "string", "description": "Default language tag for requests that do not set one.", "required": false, "default": "" }, { "name": "voice_cache_slots", "type": "int", "description": "Reference voices kept prepared between requests, so a repeated voice skips the encoders and, when streaming, the prompt solve. Output is identical with or without it. A streamed 10 s voice holds about 60 MB. Default 0 (off).", "required": false, "min": 0, "default": 0 }, { "name": "matmul_weight_type", "type": "enum", "preset": "weight_type_full", "description": "Storage type for the matmul weights of every stage (semantic LM, acoustic DiT, encoders, vocoder head).", "required": false, "default": "f32" }, { "name": "conv_weight_type", "type": "enum", "preset": "weight_type_conv", "description": "Storage type for convolution weights (speaker/semantic encoders and the Vocos backbone).", "required": false, "default": "f32" } ], "load": [] }, "packages": [ { "id": "sopro_v2_turbo_f16", "display_name": "Sopro V2 Turbo F16 GGUF", "description": "Single-file GGUF of all four stages with the config and tokenizer embedded: f16 weights, mel front ends kept in f32.", "default": true, "format": "gguf", "precision": "f16", "target_directory": "sopro-v2-turbo-GGUF", "files": [ "sopro-v2-turbo-f16.gguf" ], "download": { "kind": "huggingface_snapshot", "repo": "samuel-vitorino/sopro-v2-turbo", "revision": "main", "gated": false } }, { "id": "sopro_v2_turbo_safetensors", "display_name": "Sopro V2 Turbo (upstream safetensors)", "description": "Upstream checkpoint from samuel-vitorino/sopro-v2-turbo: config.json, tokenizer.model and the four safetensors stages. Runs directly, no conversion needed.", "format": "safetensors", "precision": "orig", "target_directory": "sopro-v2-turbo", "files": [ "config.json", "tokenizer.model", "model.safetensors", "semantic_encoder.safetensors", "speaker_encoder.safetensors", "vocoder.safetensors" ], "download": { "kind": "huggingface_snapshot", "repo": "samuel-vitorino/sopro-v2-turbo", "revision": "main", "gated": false } } ], "dependencies": [], "ui": { "recommended_package": "sopro_v2_turbo_safetensors", "tags": [ "TTS", "Clone" ], "docs": [ "docs/models/sopro_tts.md" ] }, "sources": [ { "format": "gguf", "roots": { "model": ".", "weights": "$gguf" }, "files": { "config": "model:config.json", "tokenizer": "model:tokenizer.model" }, "tensors": { "model": { "source": "weights:", "prefix": "model" }, "semantic_encoder": { "source": "weights:", "prefix": "semantic_encoder" }, "speaker_encoder": { "source": "weights:", "prefix": "speaker_encoder" }, "vocoder": { "source": "weights:", "prefix": "vocoder" } } }, { "format": "safetensors", "roots": { "model": "." }, "files": { "config": "model:config.json", "tokenizer": "model:tokenizer.model" }, "tensors": { "model": { "source": "model:model.safetensors" }, "semantic_encoder": { "source": "model:semantic_encoder.safetensors" }, "speaker_encoder": { "source": "model:speaker_encoder.safetensors" }, "vocoder": { "source": "model:vocoder.safetensors" } } } ] }