voice_audio_multi/model_specs/kitten_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

505 lines
12 KiB
JSON

{
"schema_version": 1,
"family": "kitten_tts2",
"display_name": "Kitten TTS 2",
"description": "Native multilingual Kitten TTS 2 Qwen3 speech generation, S3 meanflow decoder, and reference-audio voice cloning.",
"category": "tts",
"status": "experimental",
"tasks": [
"tts",
"clone"
],
"modes": [
"offline"
],
"languages": [
"en",
"ar",
"zh",
"fr",
"de",
"hi",
"it",
"pt",
"ru",
"es",
"nl",
"id",
"ja",
"ko",
"pl",
"tr"
],
"runtime": {
"tags": [
"gguf",
"cpu"
]
},
"capabilities": {
"tts": [
"built_in_voices",
"long_form"
],
"clone": [
"speaker_reference"
]
},
"options": {
"request": [
{
"name": "voice_id",
"type": "enum",
"values": [
"Bella",
"Jasper",
"Luna",
"Bruno",
"Rosie",
"Hugo",
"Kiki",
"Leo",
"Matthew",
"Elliot",
"Willow",
"Dolores",
"Victor",
"Dante",
"Alfred",
"Saoirse",
"Claire",
"Raven",
"Marcus",
"Herbert",
"Diana",
"Laurence",
"Maeve",
"Walter",
"Edith",
"Miles",
"Grace",
"Reginald",
"Iris",
"Frank",
"Serena",
"Julian",
"Eleanor",
"Otis",
"Vincent",
"Martha",
"Sable",
"Victoria",
"PreparedBruno",
"Arabic",
"Chinese",
"French",
"German",
"Hindi",
"Italian",
"Portuguese",
"Russian",
"Spanish",
"AirportAnnouncer",
"ArabicChildSchool",
"ArabicFalconer",
"ArabicMother",
"ArabicNews",
"AudiobookNarratorFemale",
"BoredTeenager",
"CalmHostageNegotiator",
"ChineseKidSpringFestival",
"ChineseLivestreamSeller",
"ChineseNewsCctv",
"ChineseXianxiaMaster",
"DutchBaker",
"DutchGrandpaStory",
"DutchWeatherPresenter",
"FairytaleNarratorWhimsical",
"FrenchDocumentary",
"FrenchGrandmereRecette",
"FrenchTeacher",
"FrenchWaiter",
"GermanKidBirthday",
"GermanKneipe",
"GermanProfessor",
"GermanTrainAnnouncement",
"GrandmaBedtimeStory",
"GriefEulogy",
"HindiBollywoodDrama",
"HindiCollegeFriends",
"HindiDadiKahani",
"HindiYogaTeacher",
"IndonesianNewsAnchor",
"IndonesianTourGuide",
"ItalianChildSchool",
"ItalianFashionDesigner",
"ItalianFootballFan",
"ItalianGondolier",
"ItalianNonnaKitchen",
"ItalianOperaTenor",
"JapaneseAnimeHeroine",
"JapaneseGrandma",
"JapaneseSalarymanApology",
"JapaneseTrainConductor",
"KoreanGrandpaAdvice",
"KoreanKdramaConfession",
"KoreanNewsAnchor",
"LittleGirlExplaining",
"NervousFirstDate",
"NewsAnchorFemale",
"PilotCabinAnnouncement",
"PolishBabciaPierogi",
"PolishMountainGuide",
"PolishNewsAnchor",
"PolishPoetryStudent",
"PortugueseBeach",
"PortugueseBusiness",
"PortugueseFado",
"PortugueseGrandpaFarm",
"PortugueseKidFutebol",
"PortugueseNewsAnchor",
"RussianBabushka",
"RussianFairyTale",
"RussianHockeyCheer",
"RussianLiteratureTeacher",
"RussianSpaceControl",
"RussianTaxiDriver",
"SarcasticCoworker",
"SchoolboyPresentation",
"SpanishAbuela",
"SpanishBreakupSad",
"SpanishChildCuento",
"SpanishNews",
"SpanishTango",
"TurkishFisherman",
"TurkishGrandmaCooking",
"TurkishNewsAnchor",
"WeatherPresenterCheerful"
],
"required": false,
"default": "Bruno",
"description": "Prepared voice name available in the loaded package. A supplied reference clip takes precedence."
},
{
"name": "preset",
"type": "enum",
"values": [
"stable",
"expressive"
],
"required": false,
"default": "stable",
"description": "Upstream sampling preset."
},
{
"name": "temperature",
"type": "float",
"min": 0,
"required": false,
"description": "Sampling temperature; zero selects greedy decoding. Otherwise defaults to the preset."
},
{
"name": "top_k",
"type": "int",
"min": 0,
"required": false,
"description": "Top-k sampling cutoff; defaults to the preset."
},
{
"name": "top_p",
"type": "float",
"max": 1,
"required": false,
"description": "Nucleus sampling cutoff; defaults to the preset. Must be in (0, 1]."
},
{
"name": "min_p",
"type": "float",
"min": 0,
"max": 1,
"required": false,
"description": "Minimum relative probability; defaults to the preset."
},
{
"name": "repetition_penalty",
"type": "float",
"min": 1,
"required": false,
"default": 1.1,
"description": "Penalty over the last 50 generated tokens; silence and ending tokens are exempt."
},
{
"name": "max_tokens",
"type": "int",
"min": 1,
"max": 8192,
"required": false,
"description": "Speech-token budget per text chunk. Omitted budgets scale with text length, with a minimum of 200."
},
{
"name": "seed",
"type": "int",
"min": 0,
"required": false,
"description": "Seed for sampling and waveform decoding."
},
{
"name": "text_chunk_size",
"type": "int",
"min": 32,
"max": 1000,
"required": false,
"default": 380,
"description": "Maximum Unicode codepoints per framework text chunk."
},
{
"name": "text_chunk_mode",
"type": "enum",
"values": [
"default",
"tag_aware",
"japanese",
"endline"
],
"required": false,
"default": "tag_aware",
"description": "Framework long-form text chunking mode."
},
{
"name": "reference_text",
"type": "string",
"required": false,
"description": "Transcript of the reference audio; required when cloning from a 1\u201330 second clip."
}
],
"load": [],
"session": [
{
"name": "exec_plan",
"type": "string",
"required": false,
"default": "{}",
"description": "Component execution plan JSON. vocoder accepts impl=ggml (default) or neon with backend=cpu. NEON requires ENGINE_ENABLE_NEON=ON and an AArch64 NEON CPU, and replaces only the HiFT neural convolution stack."
},
{
"name": "weight_type",
"type": "enum",
"values": [
"native",
"f32",
"f16",
"bf16",
"q4_0",
"q8_0"
],
"required": false,
"default": "native",
"description": "Qwen projection storage. native preserves the GGUF's intended tensor types. An explicit override changes projection storage only."
}
]
},
"package_defaults": {
"download": {
"kind": "huggingface_snapshot",
"repo": "dignome/kitten_tts2",
"revision": "main",
"gated": false
}
},
"packages": [
{
"id": "kitten_tts2_bf16",
"display_name": "Kitten TTS 2 BF16 GGUF (Previous Checkpoint)",
"default": false,
"format": "gguf",
"precision": "bf16",
"target_directory": "kitten-tts2-v2",
"files": [
"kitten-tts2-bf16-multilingual.gguf",
"LICENSE",
"NOTICE",
"native/LICENSE",
"speaker/LICENSE",
"SHA256SUMS"
]
},
{
"id": "kitten_tts2_q8_v2",
"display_name": "Kitten TTS 2 Q8 GGUF (Previous Checkpoint)",
"default": false,
"format": "gguf",
"precision": "q8_0",
"target_directory": "kitten-tts2-v2",
"files": [
"kitten-tts2-q8-v2-multilingual.gguf",
"LICENSE",
"NOTICE",
"native/LICENSE",
"speaker/LICENSE",
"SHA256SUMS"
]
},
{
"id": "kitten_tts2_q4",
"display_name": "Kitten TTS 2 Hybrid Q4 GGUF (Previous Checkpoint, Experimental)",
"default": false,
"format": "gguf",
"precision": "q4_0",
"target_directory": "kitten-tts2-v2",
"files": [
"kitten-tts2-q4-multilingual.gguf",
"LICENSE",
"NOTICE",
"native/LICENSE",
"speaker/LICENSE",
"SHA256SUMS"
]
},
{
"id": "kitten_tts2_20261021_q8_0",
"display_name": "Kitten TTS 2 2026-10-21 Q8 GGUF",
"default": true,
"format": "gguf",
"precision": "q8_0",
"target_directory": "KittenTTS2-GGUF",
"download": {
"kind": "huggingface_snapshot",
"repo": "audio-cpp/audio.cpp-gguf",
"revision": "main",
"gated": false
},
"files": [
"KittenTTS2-GGUF/kitten-tts2-20261021-q8_0.gguf"
],
"strip_prefix": "KittenTTS2-GGUF"
},
{
"id": "kitten_tts2_20261021_q4_0",
"display_name": "Kitten TTS 2 2026-10-21 Q4 GGUF (BF16 Embedding)",
"default": false,
"format": "gguf",
"precision": "q4_0",
"target_directory": "KittenTTS2-GGUF",
"download": {
"kind": "huggingface_snapshot",
"repo": "audio-cpp/audio.cpp-gguf",
"revision": "main",
"gated": false
},
"files": [
"KittenTTS2-GGUF/kitten-tts2-20261021-q4_0.gguf"
],
"strip_prefix": "KittenTTS2-GGUF"
}
],
"dependencies": [],
"ui": {
"recommended_package": "kitten_tts2_20261021_q8_0",
"min_vram_gb": 7,
"tags": [
"TTS",
"GGUF"
],
"builtin_voices": [
"Bella",
"Jasper",
"Luna",
"Bruno",
"Rosie",
"Hugo",
"Kiki",
"Leo",
"Matthew",
"Elliot",
"Willow",
"Dolores",
"Victor",
"Dante",
"Alfred",
"Saoirse",
"Claire",
"Raven",
"Marcus",
"Herbert",
"Diana",
"Laurence",
"Maeve",
"Walter",
"Edith",
"Miles",
"Grace",
"Reginald",
"Iris",
"Frank",
"Serena",
"Julian",
"Eleanor",
"Otis",
"Vincent",
"Martha",
"Sable",
"Victoria",
"Arabic",
"Chinese",
"French",
"German",
"Hindi",
"Italian",
"Portuguese",
"Russian",
"Spanish"
],
"default_voice": "Bruno",
"docs": [
"docs/models/kitten_tts2.md"
]
},
"sources": [
{
"format": "gguf",
"roots": {
"model": ".",
"weights": "$gguf"
},
"files": {
"config": "model:config.json",
"lm_config": "model:lm/config.json",
"tokenizer_config": "model:lm/tokenizer_config.json",
"tokenizer_json": "model:lm/tokenizer.json",
"default_voices": "model:cpp/default/voices.json"
},
"tensors": {
"language_model": {
"source": "weights:",
"prefix": "language_model"
},
"s3gen": {
"source": "weights:",
"prefix": "s3gen"
},
"speaker": {
"source": "weights:",
"prefix": "speaker"
}
}
},
{
"format": "safetensors",
"roots": {
"model": "."
},
"files": {
"config": "model:config.json",
"lm_config": "model:lm/config.json",
"tokenizer_config": "model:lm/tokenizer_config.json",
"tokenizer_json": "model:lm/tokenizer.json",
"default_voices": "model:cpp/default/voices.json"
},
"tensors": {
"language_model": "model:lm/model.safetensors",
"s3gen": "model:native/s3gen_meanflow.safetensors",
"speaker": "model:speaker/model.safetensors"
}
}
]
}