voice_audio_multi/model_specs/voxcpm2.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

491 lines
13 KiB
JSON

{
"family": "voxcpm2",
"display_name": "VoxCPM2",
"description": "OpenBMB tokenizer-free TTS model supporting 30 languages and 9 Chinese dialects, with 48 kHz output, natural-language voice design, controllable short-reference voice cloning, and expressive style guidance.",
"category": "tts",
"status": "supported",
"tasks": [
"tts",
"clone",
"design"
],
"modes": [
"offline",
"streaming"
],
"languages": [
"ar",
"my",
"zh",
"zh dialects",
"da",
"nl",
"en",
"fi",
"fr",
"de",
"el",
"he",
"hi",
"id",
"it",
"ja",
"km",
"ko",
"lo",
"ms",
"no",
"pl",
"pt",
"ru",
"es",
"sw",
"sv",
"tl",
"th",
"tr",
"vi"
],
"options": {
"request": [
{
"name": "min_tokens",
"type": "int",
"description": "Minimum generated audio tokens.",
"required": false,
"min": 0,
"default": 2
},
{
"name": "max_tokens",
"type": "int",
"description": "Maximum generated audio tokens. Zero resolves to model max_length; requires min_tokens <= resolved max_tokens <= model limit.",
"required": false,
"min": 0,
"default": 4096
},
{
"name": "num_inference_steps",
"type": "int",
"description": "Flow sampling steps. Must be positive.",
"required": false,
"default": 10
},
{
"name": "guidance_scale",
"type": "float",
"description": "Classifier-free guidance scale. Must be nonnegative.",
"required": false,
"default": 2
},
{
"name": "retry_badcase",
"type": "bool",
"description": "Retry detected bad generations. Offline only; streaming requires false.",
"required": false,
"default": true
},
{
"name": "retry_badcase_max_times",
"type": "int",
"description": "Total attempts including the initial attempt, not extra retries; must be positive.",
"required": false,
"default": 3
},
{
"name": "retry_badcase_ratio_threshold",
"type": "float",
"description": "Bad-case audio/text length ratio threshold. Must be positive.",
"required": false,
"default": 6
},
{
"name": "seed",
"type": "int",
"description": "Sampling seed.",
"required": false,
"min": 0,
"max": 4294967295,
"default": 1234
},
{
"name": "cfm_noise_file",
"type": "path",
"description": "Precomputed flow noise file.",
"required": false
},
{
"name": "stream_chunk_policy",
"type": "enum",
"description": "Streaming decoder cadence: grow emits one patch first, then doubles toward stream_frames_per_event; fixed uses the configured size. Ignored offline.",
"required": false,
"values": [
"grow",
"fixed"
],
"default": "grow"
},
{
"name": "stream_frames_per_event",
"type": "int",
"description": "Maximum generated latent patches per streaming decoder event. Set to 1 for one-patch emission. Ignored offline.",
"required": false,
"min": 1,
"default": 4
},
{
"name": "stream_left_context",
"type": "int",
"description": "Previous patches decoded as streaming left context.",
"required": false,
"min": 0,
"max": 8,
"default": 3
},
{
"name": "ultimate_clone",
"type": "bool",
"description": "Use the voice reference itself as the continuation prompt. Requires reference audio and reference_text or prompt_text; cannot be combined with explicit prompt audio.",
"required": false,
"default": false
},
{
"name": "prompt_text",
"type": "string",
"description": "Transcript for continuation prompt audio, distinct from the base voice reference.",
"required": false
},
{
"name": "chunk_strategy",
"type": "enum",
"description": "Long-form continuation or independent generation per chunk. Offline only.",
"required": false,
"values": [
"continuation",
"stateless"
],
"default": "continuation"
},
{
"name": "text_chunk_size",
"type": "int",
"description": "Framework long-form text chunk size. Offline only.",
"required": false,
"default": 2048
},
{
"name": "text_chunk_mode",
"type": "enum",
"description": "Framework text chunking mode. Offline only.",
"required": false,
"values": [
"default",
"tag_aware",
"japanese",
"endline"
],
"default": "tag_aware"
}
],
"session": [
{
"name": "audiovae_tile_frames",
"type": "int",
"description": "Opt-in causal AudioVAE tiling. Maximum new latent frames per tile; zero preserves full decoding.",
"required": false,
"default": 0,
"min": 0
},
{
"name": "perf_mode",
"type": "enum",
"description": "Opt-in packed attention and MLP projections. May change numerical results; off preserves standard execution.",
"required": false,
"values": [
"off",
"cuda_perf"
],
"default": "off"
},
{
"name": "lora",
"type": "path",
"description": "Native LoRA directory or checkpoint file with adjacent lora_config.json; merged into generator weights at session creation.",
"required": false
},
{
"name": "lora_scale",
"type": "float",
"description": "Multiplier for the adapter's configured alpha/r scaling; default 1.",
"required": false,
"default": 1.0
},
{
"name": "weight_type",
"type": "enum",
"description": "Language-model weight storage; does not override AudioVAE storage.",
"required": false,
"preset": "weight_type_full"
},
{
"name": "audiovae_weight_type",
"type": "enum",
"description": "AudioVAE weight storage; defaults independently to native, not the shared weight_type.",
"required": false,
"preset": "weight_type_full"
},
{
"name": "prompt_cache_slots",
"type": "int",
"description": "Cached encoded prompt slots; zero disables reuse.",
"required": false,
"min": 0,
"default": 1
},
{
"name": "mem_saver",
"type": "bool",
"description": "Release staged runtime graphs.",
"required": false,
"default": true
},
{
"name": "weight_context_mb",
"type": "int",
"description": "Context or graph arena size in MiB.",
"required": false,
"min": 1,
"default": 3072
},
{
"name": "text_embedding_graph_arena_mb",
"type": "int",
"description": "Text embedding host graph-metadata arena size in MiB, not device workspace.",
"required": false,
"min": 1,
"default": 64
},
{
"name": "lm_step_graph_arena_mb",
"type": "int",
"description": "LM step host graph-metadata arena size in MiB, not device workspace.",
"required": false,
"min": 1,
"default": 1024
},
{
"name": "projection_graph_arena_mb",
"type": "int",
"description": "Projection host graph-metadata arena size in MiB, not device workspace.",
"required": false,
"min": 1,
"default": 256
},
{
"name": "local_encoder_graph_arena_mb",
"type": "int",
"description": "Local encoder host graph-metadata arena size in MiB, not device workspace.",
"required": false,
"min": 1,
"default": 512
},
{
"name": "dit_graph_arena_mb",
"type": "int",
"description": "DiT estimator host graph-metadata arena size in MiB, not device workspace.",
"required": false,
"min": 1,
"default": 1024
},
{
"name": "audiovae_weight_context_mb",
"type": "int",
"description": "Context or graph arena size in MiB.",
"required": false,
"min": 1,
"default": 768
},
{
"name": "audiovae_graph_arena_mb",
"type": "int",
"description": "AudioVAE decoder host graph-metadata arena size in MiB, not device workspace.",
"required": false,
"min": 1,
"default": 1024
},
{
"name": "audiovae_encoder_graph_arena_mb",
"type": "int",
"description": "AudioVAE encoder host graph-metadata arena size in MiB, not device workspace.",
"required": false,
"min": 1,
"default": 1024
},
{
"name": "audiovae_latent_capacity",
"type": "int",
"description": "Optional decoder graph reservation in latent frames, reused by shorter requests and doubled when exceeded; omitted builds the graph at each request's own frame count.",
"required": false,
"min": 1
},
{
"name": "exec_plan",
"type": "string",
"description": "JSON component execution plans. audiovae: impl=default/ggml; backend must match the session; no artifacts. params.threads is a nonnegative int: positive values require a CPU session and enable a dedicated AudioVAE backend with streaming decode overlap; also controls offline decoding and prompt encoding threads. Omitted/0 shares the session backend.",
"required": false,
"default": "{}"
},
{
"name": "audiovae_encoder_sample_capacity",
"type": "int",
"description": "Reserved encoder sample capacity.",
"required": false,
"min": 1,
"default": 240000
}
],
"load": []
},
"capabilities": {
"clone": [
"speaker_reference"
],
"design": [
"voice_design"
]
},
"runtime": {
"tags": [
"gguf",
"stream"
]
},
"ui": {
"recommended_package": "voxcpm2_q8_0",
"tags": [
"TTS",
"Clone",
"Design",
"GGUF",
"Stream"
],
"docs": [
"docs/tts.md",
"docs/gguf.md",
"docs/models/vocalrender.md"
]
},
"package_defaults": {
"download": {
"kind": "huggingface_snapshot",
"repo": "audio-cpp/audio.cpp-gguf",
"revision": "main",
"gated": false
}
},
"packages": [
{
"id": "voxcpm2_q8_0",
"display_name": "VoxCPM2 Q8_0 GGUF",
"default": true,
"format": "gguf",
"precision": "q8_0",
"target_directory": "VoxCPM2-GGUF",
"files": [
"VoxCPM2-GGUF/voxcpm2-q8_0.gguf"
],
"strip_prefix": "VoxCPM2-GGUF"
},
{
"id": "voxcpm2_bf16",
"display_name": "VoxCPM2 BF16 GGUF",
"format": "gguf",
"precision": "bf16",
"target_directory": "VoxCPM2-GGUF",
"files": [
"VoxCPM2-GGUF/voxcpm2-bf16.gguf"
],
"strip_prefix": "VoxCPM2-GGUF"
},
{
"id": "voxcpm2_orig",
"display_name": "VoxCPM2 Original-Dtype GGUF",
"format": "gguf",
"precision": "orig",
"target_directory": "VoxCPM2-GGUF",
"files": [
"VoxCPM2-GGUF/voxcpm2-orig.gguf"
],
"strip_prefix": "VoxCPM2-GGUF"
},
{
"id": "voxcpm2_vocalrender_pro",
"display_name": "VocalRender-Pro (VoxCPM2) Original-Dtype GGUF",
"format": "gguf",
"precision": "orig",
"target_directory": "VoxCPM2-GGUF",
"files": [
"VoxCPM2-GGUF/finetune/vocalrender-pro-orig.gguf"
],
"strip_prefix": "VoxCPM2-GGUF"
},
{
"id": "voxcpm2_safetensors",
"display_name": "VoxCPM2 Safetensors",
"format": "safetensors",
"precision": "native",
"target_directory": "VoxCPM2",
"files": [
"config.json",
"model.safetensors",
"tokenizer.json",
"tokenizer_config.json"
],
"download": {
"kind": "huggingface_snapshot",
"repo": "OpenBMB/VoxCPM2"
}
}
],
"sources": [
{
"format": "gguf",
"roots": {
"model": ".",
"weights": "$gguf"
},
"files": {
"config": "model:config.json",
"tokenizer_config": "model:tokenizer_config.json",
"tokenizer_json": "model:tokenizer.json",
"special_tokens_map": "model:special_tokens_map.json"
},
"tensors": {
"weights": {
"source": "weights:",
"prefix": "weights"
},
"audiovae_weights": {
"source": "weights:",
"prefix": "audiovae_weights"
}
}
},
{
"format": "safetensors",
"roots": {
"model": "."
},
"files": {
"config": "model:config.json",
"tokenizer_config": "model:tokenizer_config.json",
"tokenizer_json": "model:tokenizer.json",
"special_tokens_map": "model:special_tokens_map.json"
},
"tensors": {
"weights": "model:model.safetensors",
"audiovae_weights": "model:audiovae.safetensors"
}
}
]
}