Introduce 'auto' sampling mode to fix 1.5B quality while keeping 7B expressiveness
This commit is contained in:
@@ -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 应对标点能力更强。
|
||||
|
||||
|
||||
+10
-3
@@ -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,
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user