{
  "family": "vevo2",
  "display_name": "Vevo2",
  "description": "Unified controllable framework for English and Chinese speech and singing voice generation, voice conversion, and editing, with tokenizers that disentangle content, prosody, melody, style, and timbre.",
  "category": "voice_conversion",
  "status": "supported",
  "tasks": [
    "tts",
    "music",
    "vc",
    "edit",
    "svc",
    "s2s"
  ],
  "modes": [
    "offline"
  ],
  "languages": [
    "en",
    "zh"
  ],
  "capabilities": {
    "music": [
      "lyrics"
    ],
    "vc": [
      "speaker_reference"
    ],
    "svc": [
      "speaker_reference",
      "singing"
    ],
    "s2s": [
      "speaker_reference"
    ],
    "edit": [
      "prompt_editing"
    ]
  },
  "options": {
    "request": [
      {
        "name": "route",
        "type": "enum",
        "description": "Select the VeVo2 generation or conversion operation.",
        "values": [
          "zero_shot_tts",
          "text_to_singing",
          "svs",
          "style_preserved_vc",
          "style_preserved_svc",
          "style_converted_vc",
          "style_converted_svc",
          "editing",
          "singing_style_conversion",
          "humming_to_singing",
          "instrument_to_singing"
        ],
        "required": false
      },
      {
        "name": "source_audio",
        "type": "audio_path",
        "description": "Source speech or singing audio for conversion/editing routes.",
        "required": false
      },
      {
        "name": "target_voice",
        "type": "audio_path",
        "description": "Target timbre reference audio.",
        "required": false
      },
      {
        "name": "prosody_ref",
        "type": "audio_path",
        "description": "Prosody or melody reference audio.",
        "required": false
      },
      {
        "name": "style_ref",
        "type": "audio_path",
        "description": "Style reference audio.",
        "required": false
      },
      {
        "name": "target_text",
        "type": "string",
        "description": "Text or lyrics to vocalize.",
        "required": false
      },
      {
        "name": "style_ref_text",
        "type": "string",
        "description": "Transcript for the style reference when text conditioning is used.",
        "required": false
      },
      {
        "name": "use_prosody_code",
        "type": "bool",
        "description": "Enable explicit prosody-code conditioning; default is route-specific.",
        "required": false
      },
      {
        "name": "predict_target_prosody",
        "type": "bool",
        "description": "Predict target prosody during AR generation; default is route-specific.",
        "required": false
      },
      {
        "name": "use_pitch_shift",
        "type": "bool",
        "description": "Pitch-align source/prosody/style references to the target voice; default is route-specific.",
        "required": false
      },
      {
        "name": "source_shift_steps",
        "type": "int",
        "description": "Manual pitch-shift semitone steps for source audio.",
        "required": false
      },
      {
        "name": "prosody_shift_steps",
        "type": "int",
        "description": "Manual pitch-shift semitone steps for prosody reference audio.",
        "required": false
      },
      {
        "name": "style_shift_steps",
        "type": "int",
        "description": "Manual pitch-shift semitone steps for style reference audio.",
        "required": false
      },
      {
        "name": "target_duration_sec",
        "type": "float",
        "description": "Target output duration hint for flow matching, in seconds.",
        "required": false,
        "min": 0.0
      },
      {
        "name": "reference_duration_sec",
        "type": "float",
        "description": "Trim target voice reference duration before conditioning, in seconds.",
        "required": false,
        "min": 0.0
      },
      {
        "name": "temperature",
        "type": "float",
        "description": "AR sampling temperature; defaults to model config.",
        "required": false,
        "min": 0.0
      },
      {
        "name": "top_k",
        "type": "int",
        "description": "AR top-k sampling limit; defaults to model config.",
        "required": false,
        "min": 0
      },
      {
        "name": "top_p",
        "type": "float",
        "description": "AR nucleus sampling threshold; defaults to model config.",
        "required": false,
        "min": 0.0,
        "max": 1.0
      },
      {
        "name": "repetition_penalty",
        "type": "float",
        "description": "AR repetition penalty; defaults to model config.",
        "required": false,
        "min": 0.0
      },
      {
        "name": "max_tokens",
        "type": "int",
        "description": "Maximum generated AR content/style tokens; default 500.",
        "required": false,
        "min": 0,
        "default": 500
      },
      {
        "name": "num_inference_steps",
        "type": "int",
        "description": "Flow-matching denoising steps; default 32.",
        "required": false,
        "min": 1,
        "default": 32
      },
      {
        "name": "seed",
        "type": "int",
        "description": "Request seed for reproducible output; omitted uses a random seed.",
        "required": false,
        "min": 0
      }
    ],
    "session": [],
    "load": []
  },
  "runtime": {
    "tags": [
      "gguf"
    ]
  },
  "sources": [
    {
      "format": "gguf",
      "roots": {
        "model": ".",
        "weights": "$gguf"
      },
      "files": {
        "ar_config": "model:contentstyle_modeling/posttrained/config.json",
        "ar_amphion_config": "model:contentstyle_modeling/posttrained/amphion_config.json",
        "ar_generation_config": "model:contentstyle_modeling/posttrained/generation_config.json",
        "ar_tokenizer_config": "model:contentstyle_modeling/posttrained/tokenizer_config.json",
        "ar_tokenizer_json": "model:contentstyle_modeling/posttrained/tokenizer.json",
        "ar_vocab": "model:contentstyle_modeling/posttrained/vocab.json",
        "ar_merges": "model:contentstyle_modeling/posttrained/merges.txt",
        "ar_added_tokens": "model:contentstyle_modeling/posttrained/added_tokens.json",
        "ar_special_tokens": "model:contentstyle_modeling/posttrained/special_tokens_map.json",
        "fm_config": "model:acoustic_modeling/fm_emilia101k_singnet7k_repa/config.json",
        "fm_text_config": "model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/config.json",
        "vocoder_config": "model:vocoder/config.json",
        "whisper_config": "model:whisper-medium/config.json"
      },
      "tensors": {
        "content_style_tokenizer_weights": {
          "source": "weights:",
          "prefix": "content_style_tokenizer_weights"
        },
        "prosody_tokenizer_weights": {
          "source": "weights:",
          "prefix": "prosody_tokenizer_weights"
        },
        "ar_weights": {
          "source": "weights:",
          "prefix": "ar_weights"
        },
        "fm_weights": {
          "source": "weights:",
          "prefix": "fm_weights"
        },
        "fm_whisper_stats": {
          "source": "weights:",
          "prefix": "fm_whisper_stats"
        },
        "fm_text_weights": {
          "source": "weights:",
          "prefix": "fm_text_weights"
        },
        "fm_text_whisper_stats": {
          "source": "weights:",
          "prefix": "fm_text_whisper_stats"
        },
        "vocoder_weights_0": {
          "source": "weights:",
          "prefix": "vocoder_weights_0"
        },
        "vocoder_weights_1": {
          "source": "weights:",
          "prefix": "vocoder_weights_1"
        },
        "vocoder_weights_2": {
          "source": "weights:",
          "prefix": "vocoder_weights_2"
        },
        "whisper_weights": {
          "source": "weights:",
          "prefix": "whisper_weights"
        }
      }
    },
    {
      "format": "safetensors",
      "roots": {
        "model": ".",
        "whisper": "../whisper-medium"
      },
      "files": {
        "ar_config": "model:contentstyle_modeling/posttrained/config.json",
        "ar_amphion_config": "model:contentstyle_modeling/posttrained/amphion_config.json",
        "ar_generation_config": "model:contentstyle_modeling/posttrained/generation_config.json",
        "ar_tokenizer_config": "model:contentstyle_modeling/posttrained/tokenizer_config.json",
        "ar_tokenizer_json": "model:contentstyle_modeling/posttrained/tokenizer.json",
        "ar_vocab": "model:contentstyle_modeling/posttrained/vocab.json",
        "ar_merges": "model:contentstyle_modeling/posttrained/merges.txt",
        "ar_added_tokens": "model:contentstyle_modeling/posttrained/added_tokens.json",
        "ar_special_tokens": "model:contentstyle_modeling/posttrained/special_tokens_map.json",
        "fm_config": "model:acoustic_modeling/fm_emilia101k_singnet7k_repa/config.json",
        "fm_text_config": "model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/config.json",
        "vocoder_config": "model:vocoder/config.json",
        "whisper_config": "whisper:config.json"
      },
      "tensors": {
        "content_style_tokenizer_weights": "model:tokenizer/contentstyle_fvq16384_12.5hz/model.safetensors",
        "prosody_tokenizer_weights": "model:tokenizer/prosody_fvq512_6.25hz/model.safetensors",
        "ar_weights": "model:contentstyle_modeling/posttrained/model.safetensors",
        "fm_weights": "model:acoustic_modeling/fm_emilia101k_singnet7k_repa/model.safetensors",
        "fm_whisper_stats": "model:acoustic_modeling/fm_emilia101k_singnet7k_repa/whisper_stats.safetensors",
        "fm_text_weights": "model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/model.safetensors",
        "fm_text_whisper_stats": "model:acoustic_modeling/fm_emilia101k_singnet7k_repa_text/whisper_stats.safetensors",
        "vocoder_weights_0": "model:vocoder/model.safetensors",
        "vocoder_weights_1": "model:vocoder/model_1.safetensors",
        "vocoder_weights_2": "model:vocoder/model_2.safetensors",
        "whisper_weights": "whisper:model.safetensors"
      }
    }
  ],
  "package_defaults": {
    "download": {
      "kind": "huggingface_snapshot",
      "repo": "audio-cpp/audio.cpp-gguf",
      "revision": "main",
      "gated": false
    }
  },
  "packages": [
    {
      "id": "vevo2_q8_0",
      "display_name": "Vevo2 Q8_0 GGUF",
      "default": true,
      "format": "gguf",
      "precision": "q8_0",
      "target_directory": "Vevo2-GGUF",
      "files": [
        "Vevo2-GGUF/vevo2-q8_0.gguf"
      ],
      "strip_prefix": "Vevo2-GGUF"
    },
    {
      "id": "vevo2_f16",
      "display_name": "Vevo2 F16 GGUF",
      "format": "gguf",
      "precision": "f16",
      "target_directory": "Vevo2-GGUF",
      "files": [
        "Vevo2-GGUF/vevo2-f16.gguf"
      ],
      "strip_prefix": "Vevo2-GGUF"
    },
    {
      "id": "vevo2_orig",
      "display_name": "Vevo2 Original-Dtype GGUF",
      "format": "gguf",
      "precision": "orig",
      "target_directory": "Vevo2-GGUF",
      "files": [
        "Vevo2-GGUF/vevo2-orig.gguf"
      ],
      "strip_prefix": "Vevo2-GGUF"
    }
  ]
}
