{ "schema_version": 1, "family": "sanotts", "display_name": "sanoTTS Nano", "description": "Very small multilingual text-to-speech across fourteen languages. Two graphs: the nano lineage (duration student, contextual acoustic student to mel-100, noise-fed ConvNeXt-1D decoder with an iSTFT head; voices heart 2.27M and heart-nano 294k, English, 24 kHz) and the deterministic piperlite lineage (duration student, acoustic student to a 192-channel latent, optionally through a calibration adapter, then a 3-stage ConvTranspose1d decoder with dilated residual banks; voices amy, hfc and kristin for English, vi, id, cs, de, es, fr, it, pt, ro, ru, tr, ne and hi at 1.1-1.8M parameters, 22.05 kHz). Uses an external eSpeak-ng phonemizer.", "category": "tts", "status": "community", "tasks": [ "tts" ], "modes": [ "offline" ], "languages": [ "en", "vi", "id", "cs", "de", "es", "fr", "it", "pt", "ro", "ru", "tr", "ne", "hi" ], "runtime": { "tags": [ "gguf" ] }, "capabilities": { "tts": [ "long_form" ] }, "options": { "request": [ { "name": "speed", "type": "float", "description": "Speech speed multiplier; larger is faster. Its reciprocal scales the voice's tuned length scale before the per-token clamp.", "required": false, "min": 0.5, "max": 2.0, "default": 1.0 }, { "name": "seed", "type": "int", "description": "Decoder noise seed. The decoder is noise-fed, so a given seed picks one of many valid renderings; 0 derives it from the text as sha256(text)[:8], which is what the reference implementations do. Piperlite voices are deterministic and ignore the seed.", "required": false, "min": 0, "default": 0 }, { "name": "text_chunk_mode", "type": "enum", "description": "Long-form text chunking mode.", "values": [ "word_budget" ], "required": false, "default": "word_budget" }, { "name": "text_chunk_size", "type": "int", "description": "Maximum Unicode codepoints per long-form text chunk; default 280.", "required": false, "min": 1, "default": 280 } ], "session": [ { "name": "espeak_library_path", "type": "path", "description": "Optional explicit path to the eSpeak-ng shared library.", "required": false }, { "name": "espeak_data_path", "type": "path", "description": "Optional explicit path to the directory containing espeak-ng-data.", "required": false }, { "name": "exec_plan", "type": "string", "description": "JSON object of component execution plans. Component: decoder. Each plan accepts impl, backend, artifacts, and params. impl is default/ggml/neon; no artifacts or params are used. Default retains automatic NEON selection on supported Nano-lineage AArch64 CPU sessions. GGML supports the session backend; explicit NEON requires a Nano-lineage model, AArch64 NEON, and a CPU session.", "required": false, "default": "{}" } ], "load": [] }, "package_defaults": { "download": { "kind": "huggingface_snapshot", "repo": "ampixa/sanoTTS", "revision": "main", "gated": false } }, "packages": [ { "id": "sanotts_heart_nano_orig", "display_name": "sanoTTS heart-nano 294k FP32 GGUF", "default": true, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-heart-nano-GGUF", "files": [ "gguf/heart-nano-f32.gguf", "gguf/config.json" ], "strip_prefix": "gguf" }, { "id": "sanotts_heart_orig", "display_name": "sanoTTS heart 2.27M FP32 GGUF", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-heart-GGUF", "files": [ "gguf/heart/heart-f32.gguf", "gguf/heart/config.json" ], "strip_prefix": "gguf/heart" }, { "id": "sanotts_amy_orig", "display_name": "sanoTTS amy 1.46M FP32 GGUF (English, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-amy-GGUF", "files": [ "gguf/amy/amy-f32.gguf", "gguf/amy/config.json" ], "strip_prefix": "gguf/amy" }, { "id": "sanotts_hfc_orig", "display_name": "sanoTTS hfc 1.83M FP32 GGUF (English, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-hfc-GGUF", "files": [ "gguf/hfc/hfc-f32.gguf", "gguf/hfc/config.json" ], "strip_prefix": "gguf/hfc" }, { "id": "sanotts_kristin_orig", "display_name": "sanoTTS kristin 1.40M FP32 GGUF (English, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-kristin-GGUF", "files": [ "gguf/kristin/kristin-f32.gguf", "gguf/kristin/config.json" ], "strip_prefix": "gguf/kristin" }, { "id": "sanotts_vi_orig", "display_name": "sanoTTS vi 1.57M FP32 GGUF (Vietnamese, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-vi-GGUF", "files": [ "gguf/vi/vi-f32.gguf", "gguf/vi/config.json" ], "strip_prefix": "gguf/vi" }, { "id": "sanotts_id_orig", "display_name": "sanoTTS id 1.56M FP32 GGUF (Indonesian, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-id-GGUF", "files": [ "gguf/id/id-f32.gguf", "gguf/id/config.json" ], "strip_prefix": "gguf/id" }, { "id": "sanotts_cs_orig", "display_name": "sanoTTS cs 1.57M FP32 GGUF (Czech, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-cs-GGUF", "files": [ "gguf/cs/cs-f32.gguf", "gguf/cs/config.json" ], "strip_prefix": "gguf/cs" }, { "id": "sanotts_de_orig", "display_name": "sanoTTS de 1.57M FP32 GGUF (German, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-de-GGUF", "files": [ "gguf/de/de-f32.gguf", "gguf/de/config.json" ], "strip_prefix": "gguf/de" }, { "id": "sanotts_es_orig", "display_name": "sanoTTS es 1.56M FP32 GGUF (Spanish, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-es-GGUF", "files": [ "gguf/es/es-f32.gguf", "gguf/es/config.json" ], "strip_prefix": "gguf/es" }, { "id": "sanotts_fr_orig", "display_name": "sanoTTS fr 1.57M FP32 GGUF (French, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-fr-GGUF", "files": [ "gguf/fr/fr-f32.gguf", "gguf/fr/config.json" ], "strip_prefix": "gguf/fr" }, { "id": "sanotts_it_orig", "display_name": "sanoTTS it 1.57M FP32 GGUF (Italian, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-it-GGUF", "files": [ "gguf/it/it-f32.gguf", "gguf/it/config.json" ], "strip_prefix": "gguf/it" }, { "id": "sanotts_pt_orig", "display_name": "sanoTTS pt 1.57M FP32 GGUF (Portuguese (Brazil), piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-pt-GGUF", "files": [ "gguf/pt/pt-f32.gguf", "gguf/pt/config.json" ], "strip_prefix": "gguf/pt" }, { "id": "sanotts_ro_orig", "display_name": "sanoTTS ro 1.57M FP32 GGUF (Romanian, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-ro-GGUF", "files": [ "gguf/ro/ro-f32.gguf", "gguf/ro/config.json" ], "strip_prefix": "gguf/ro" }, { "id": "sanotts_ru_orig", "display_name": "sanoTTS ru 1.57M FP32 GGUF (Russian, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-ru-GGUF", "files": [ "gguf/ru/ru-f32.gguf", "gguf/ru/config.json" ], "strip_prefix": "gguf/ru" }, { "id": "sanotts_tr_orig", "display_name": "sanoTTS tr 1.56M FP32 GGUF (Turkish, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-tr-GGUF", "files": [ "gguf/tr/tr-f32.gguf", "gguf/tr/config.json" ], "strip_prefix": "gguf/tr" }, { "id": "sanotts_ne_orig", "display_name": "sanoTTS ne 1.47M FP32 GGUF (Nepali, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-ne-GGUF", "files": [ "gguf/ne/ne-f32.gguf", "gguf/ne/config.json" ], "strip_prefix": "gguf/ne" }, { "id": "sanotts_hi_orig", "display_name": "sanoTTS hi 1.50M FP32 GGUF (Hindi, piperlite)", "default": false, "format": "gguf", "precision": "orig", "target_directory": "sanoTTS-hi-GGUF", "files": [ "gguf/hi/hi-f32.gguf", "gguf/hi/config.json" ], "strip_prefix": "gguf/hi" } ], "dependencies": [], "ui": { "recommended_package": "sanotts_heart_nano_orig", "tags": [ "TTS", "GGUF" ], "docs": [ "docs/tts.md", "docs/models/sanotts.md", "docs/gguf.md" ] }, "sources": [ { "format": "gguf", "roots": { "model": ".", "weights": "$gguf" }, "files": { "config": "model:config.json" }, "tensors": { "weights": "weights:" } } ] }