Add support for VibeVoice-Realtime-0.5B (Multi-language & Low latency)

This commit is contained in:
Hawk Lee
2025-12-29 19:29:21 +08:00
parent bcedf6b700
commit d4f560cdbb
3 changed files with 34 additions and 11 deletions
+3 -1
View File
@@ -432,9 +432,11 @@ git clone https://github.com/havvk/ComfyUI_AIIA.git
- **当前状态**: ✅ 可用(已通过测试)
- **支持语言**: **英文 (en) 和 中文 (zh)**(官方仅在这两种语言数据集上训练)
- **可选模型**:
- `microsoft/VibeVoice-1.5B`: 轻量版,64K 上下文(~3GB 显存)。注:可能对某些标点(如连字符、引号)处理不佳。
- `microsoft/VibeVoice-Realtime-0.5B`: **最新实时版**,极致速度,支持多种语言(如日、韩、英、中等),上下文 8K。推荐用于低延迟对话场景。
- `microsoft/VibeVoice-1.5B`: 轻量版,64K 上下文(~3GB 显存)。
- `vibevoice/VibeVoice-7B`: 高质量版,32K 上下文(~14GB 显存)。推荐用于生产环境。
- **特点**:
- **多语言支持**: 0.5B 版本支持比 1.5B/7B 更多的语言种类。
- **即时启动**: 无需预热或编译,首次运行即可使用(CosyVoice 首次需 ~1 分钟编译)。
- **语言自动识别**: 模型会自动识别中英文文本。
- **零样本音色克隆**: 输入 `reference_audio` 即可克隆声音。参考音频会自动重采样到 24000Hz。
+10 -10
View File
@@ -291,27 +291,27 @@ class AIIA_VibeVoice_Loader:
model.generation_config = final_gen_config
else:
# Fallback to internal presets
is_7b = False
preset_name = "generation_config.json" # Default
if hasattr(config, "decoder_config") and hasattr(config.decoder_config, "hidden_size"):
is_7b = config.decoder_config.hidden_size > 2048
h_size = config.decoder_config.hidden_size
if h_size > 2048:
preset_name = "generation_config_7B.json"
elif h_size < 1000:
preset_name = "generation_config_0.5B.json"
else:
preset_name = "generation_config_1.5B.json"
preset_name = "generation_config_7B.json" if is_7b else "generation_config_1.5B.json"
preset_path = os.path.join(core_path, preset_name)
if os.path.exists(preset_path):
print(f"[AIIA] Model-specific config not found. Using internal preset: {preset_name}")
# We need to load it manually or use from_pretrained on the file path if possible
import json
with open(preset_path, "r") as f:
gen_dict = json.load(f)
model.generation_config = GenerationConfig.from_dict(gen_dict)
else:
bundled_gen_config_path = os.path.join(core_path, "generation_config.json")
if os.path.exists(bundled_gen_config_path):
print(f"[AIIA] Using generic bundled fallback: generation_config.json")
model.generation_config = GenerationConfig.from_pretrained(core_path)
else:
print("[AIIA WARNING] No generation_config.json found (local or bundled).")
print(f"[AIIA WARNING] Preset {preset_name} not found, using generic fallback.")
model.generation_config = GenerationConfig.from_pretrained(core_path)
except Exception as ge:
print(f"[AIIA WARNING] Failed to load generation config: {ge}")
@@ -0,0 +1,21 @@
{
"cfg_scale": 1.3,
"eos_token_id": 151643,
"max_new_tokens": 8192,
"max_length": 8192,
"n_diffusion_steps": 20,
"do_sample": false,
"temperature": 1.0,
"top_p": 1.0,
"noise_scheduler_class": "DPMSolverMultistepScheduler",
"noise_scheduler_config": {
"beta_schedule": "squaredcos_cap_v2",
"num_train_timesteps": 1000,
"prediction_type": "v_prediction"
},
"pad_token_id": 151643,
"speech_diffusion_id": 151654,
"speech_end_id": 151653,
"speech_start_id": 151652,
"transformers_version": "4.57.0.dev0"
}