From bcedf6b700441c398ddf2a36beee9daa990249fe Mon Sep 17 00:00:00 2001 From: Hawk Lee Date: Mon, 29 Dec 2025 19:25:35 +0800 Subject: [PATCH] Introduce 'auto' sampling mode to fix 1.5B quality while keeping 7B expressiveness --- README.md | 19 +++++++++---------- aiia_vibevoice_nodes.py | 13 ++++++++++--- vibevoice_core/generation_config_1.5B.json | 2 +- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index c359e56..c9bb726 100644 --- a/README.md +++ b/README.md @@ -439,17 +439,16 @@ git clone https://github.com/havvk/ComfyUI_AIIA.git - **语言自动识别**: 模型会自动识别中英文文本。 - **零样本音色克隆**: 输入 `reference_audio` 即可克隆声音。参考音频会自动重采样到 24000Hz。 - **节点参数 (推荐参数建议)**: - - `cfg_scale` (默认: 1.3): CFG 引导强度。 - - **官方基准 (Official Baseline)**: **1.3** (已设为本节点默认值)。 - - **1.5B 模型**: 建议 **1.3 - 5.0**。 - - **7B 模型**: 强烈建议保持在 **1.3 - 2.0** 之间。 + - `cfg_scale` (默认: 1.3): CFG 引导强度。建议使用 **1.3**。 - `ddpm_steps` (默认: 20): 扩散步数。 - - **官方基准 (Official Baseline)**: **20** (已从原来的 10 步提升至官方高质量基准 20 步)。 - - `do_sample` (默认: True): **7B 模型强烈建议开启**。如果不开启(False),模型将使用贪婪搜索,音色会比较呆板。 - - `temperature` (默认: 0.8): 采样温度。推荐 0.7 - 1.0。 - - `top_k / top_p`: 采样约束,保持默认即可。 - - `speed` (默认: 1.0): 后处理播放速度调整。 - - `normalize_text` (默认: True): 文本预处理补丁。 + - `do_sample` (默认: "auto"): **智能采样开关**。 + - `"auto"`: 自动适配。**1.5B 模型默认关闭**(保证稳定性),**7B 模型默认开启**(释放表达力)。 + - `"true"`: 强制开启。如果 1.5B 开启后出现电音或逻辑混乱,请切换回 `"auto"`。 + - `"false"`: 强制关闭(即 Greed Search)。 + - `temperature` (默认: 0.8): 采样温度。仅在 `do_sample` 开启时有效。 + - `top_k / top_p`: 采样约束。 + - `speed` (默认: 1.0): 播放速度。 + - `normalize_text` (默认: True): 文本预处理。注意:7B 建议关闭以获得更自然的标点停顿。 - **1.5B**: 强烈建议开启。 - **7B**: 建议关闭(False)观察效果,7B 应对标点能力更强。 diff --git a/aiia_vibevoice_nodes.py b/aiia_vibevoice_nodes.py index 7b97d9f..c912766 100644 --- a/aiia_vibevoice_nodes.py +++ b/aiia_vibevoice_nodes.py @@ -421,8 +421,8 @@ class AIIA_VibeVoice_TTS: "ddpm_steps": ("INT", {"default": 20, "min": 10, "max": 100, "step": 1, "tooltip": "Diffusion steps. Official baseline is 20."}), "speed": ("FLOAT", {"default": 1.0, "min": 0.5, "max": 2.0, "step": 0.1, "tooltip": "Playback speed. >1 = faster, <1 = slower (post-process time-stretch)."}), "normalize_text": ("BOOLEAN", {"default": True, "tooltip": "Apply text normalization (year ranges → 至, remove quotes). Disable for 7B model or custom text."}), - "do_sample": ("BOOLEAN", {"default": True, "tooltip": "Enable sampling for more expressive audio. Highly recommended for 7B model."}), - "temperature": ("FLOAT", {"default": 0.8, "min": 0.1, "max": 2.0, "step": 0.1, "tooltip": "Sampling temperature. Higher = more diversity/expressiveness, lower = more stable."}), + "do_sample": (["auto", "true", "false"], {"default": "auto", "tooltip": "Enable sampling. 'auto' uses model-specific defaults (OFF for 1.5B, ON for 7B)."}), + "temperature": ("FLOAT", {"default": 0.8, "min": 0.1, "max": 2.0, "step": 0.1, "tooltip": "Sampling temperature. Only used if sampling is enabled."}), "top_k": ("INT", {"default": 20, "min": 0, "max": 100, "step": 1, "tooltip": "Top-k sampling. 0 to disable."}), "top_p": ("FLOAT", {"default": 0.95, "min": 0.0, "max": 1.0, "step": 0.05, "tooltip": "Top-p (nucleus) sampling."}), }, @@ -538,6 +538,13 @@ class AIIA_VibeVoice_TTS: # ~20 tokens per character is a safe estimation for smooth progress. expected_steps = len(text) * 20 + # Handle do_sample resolution + final_do_sample = do_sample + if do_sample == "auto": + final_do_sample = getattr(model.generation_config, "do_sample", False) + else: + final_do_sample = (do_sample == "true") + # Prepare generation kwargs generation_kwargs = { "max_new_tokens": max_new_tokens, @@ -547,7 +554,7 @@ class AIIA_VibeVoice_TTS: "pad_token_id": tokenizer.eos_token_id, "cfg_scale": cfg_scale, # User-controlled CFG scale for speech generation "max_length_times": max_length_times, # Safety budget - "do_sample": do_sample, + "do_sample": final_do_sample, "temperature": temperature, "top_k": top_k, "top_p": top_p, diff --git a/vibevoice_core/generation_config_1.5B.json b/vibevoice_core/generation_config_1.5B.json index 373b31c..0299e44 100644 --- a/vibevoice_core/generation_config_1.5B.json +++ b/vibevoice_core/generation_config_1.5B.json @@ -4,7 +4,7 @@ "max_new_tokens": 40500, "max_length": 65536, "n_diffusion_steps": 20, - "do_sample": true, + "do_sample": false, "temperature": 1.0, "top_p": 1.0, "noise_scheduler_class": "DPMSolverMultistepScheduler",