UnboundLocalError: cannot access local variable ‘multitalk_audio_stride’ when using WanVideoSampler without multitalk

这个报错通常出现在使用 WanVideoSampler 但没有连接 multitalk_embeds 的普通 I2V/T2V 工作流中,属于采样器里 multitalk_audio_stride 变量未初始化就被引用导致的 UnboundLocalError 。优先排查 nodes_sampler.

快速结论:这个报错通常出现在使用 WanVideoSampler 但没有连接 multitalk_embeds 的普通 I2V/T2V 工作流中,属于采样器里 multitalk_audio_stride 变量未初始化就被引用导致的 UnboundLocalError。优先排查 nodes_sampler.py 中该变量是否有默认初始化,或代码是否已包含修复提交。

适用环境:Issue 中确认的环境包括:ComfyUI WanVideoWrapper(main / latest main)、ComfyUI v0.22.2、Windows 10 / Python 3.13,以及 Windows 11 / Python 3.12;模型为 Wan2.2 I2V 14B,且同样影响其他模型变体。

最快修复方案:Issue 中明确验证过的修复是更新到提交 8f1804b,评论确认“Fixed in commit 8f1804b, confirmed working”。如果暂时不能更新,可按 Issue 讨论中的替代改法修改 nodes_sampler.py:在第 566 行补上 multitalk_audio_stride = None,或把第 822 行改为 if 'multitalk_audio_stride' in locals() and multitalk_audio_stride is not None:。这些手工修改在 Issue 评论中被报告为有效,但属于用户操作,需自行承担风险。

注意事项:手工修改 Python 源文件会带来与后续版本冲突、覆盖更新丢失等风险;修改前建议备份文件或确认版本。提交 8f1804b 是 Issue 中明确确认有效的修复,其他改法虽在评论中报告有效,但未在 Issue 中作为官方统一方案声明。

问题场景

用户在 ComfyUI 中运行基于 WanVideoWrapper 的普通 I2V 或 T2V 工作流,使用 WanVideoSampler 节点时,没有连接 multitalk_embeds 输入。工作流执行到采样器 process 方法时触发报错,导致采样无法继续。Issue 描述中给出的复现步骤如下:创建任意使用 WanVideoSampler 的 I2V/T2V 工作流,保持 multitalk_embeds 输入未连接,然后运行工作流。

报错原文

UnboundLocalError: cannot access local variable 'multitalk_audio_stride' where it is not associated with a value

Issue 指出堆栈指向 nodes_sampler.py:822 的 process 方法。

原因分析

在 nodes_sampler.py 中,multitalk_audio_stride 只在 if multitalk_embeds is not None: 代码块内部(Issue 引用为第 587 行)被赋值:

multitalk_audio_stride = multitalk_embeds.get("audio_stride", None)

但后面第 822 行无条件引用了它:

if multitalk_audio_stride is not None:

当没有连接 multitalk 输入时,multitalk_embeds 为 None,上面的 if 块被跳过,multitalk_audio_stride 从未被初始化,因此触发 UnboundLocalError。Issue 还特别指出,其他相关变量(multitalk_audio_embeds、audio_scale、audio_emb_slice、audio_features_in)在该 if 块之前都有默认初始化,唯独 multitalk_audio_stride 缺少默认值。

环境排查

  • 确认 ComfyUI-WanVideoWrapper 是否为 Issue 所对应的 main/latest main 版本,并检查是否已包含提交 8f1804b。
  • 确认 ComfyUI 版本,Issue 中报告为 v0.22.2。
  • 确认操作系统与 Python 版本,Issue 中涉及 Windows 10 / Python 3.13 以及 Windows 11 / Python 3.12。
  • 确认使用的模型,Issue 中为 Wan2.2 I2V 14B,且说明也影响其他模型变体。
  • 检查工作流中 WanVideoSampler 节点的 multitalk_embeds 输入是否未连接;这是触发问题的直接场景。

解决步骤

  1. 优先更新 ComfyUI-WanVideoWrapper 到包含提交 8f1804b 的版本;Issue 评论已确认该提交可修复并正常工作。
  2. 如果暂时无法更新,可参考 Issue 中的建议修复:在 nodes_sampler.py 第 566 行附近,将默认初始化从 multitalk_audio_embeds = audio_emb_slice = audio_features_in = None 改为 multitalk_audio_embeds = audio_emb_slice = audio_features_in = multitalk_audio_stride = None,确保变量在未连接 multitalk 时也有默认值。
  3. 或者参考 Issue 评论中的另一种改法:将第 822 行的 if multitalk_audio_stride is not None: 改为 if 'multitalk_audio_stride' in locals() and multitalk_audio_stride is not None:。
  4. 如果选择手工修改,修改后保存文件并重启 ComfyUI,确保代码重新加载。

验证方法

重新运行之前触发报错的普通 I2V/T2V 工作流,保持 multitalk_embeds 输入不连接,观察 WanVideoSampler 是否能够正常执行并完成采样,不再出现 UnboundLocalError: cannot access local variable 'multitalk_audio_stride'。Issue 评论确认在应用提交 8f1804b 后问题已解决。

参考来源

kijai/ComfyUI-WanVideoWrapper #2019

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25518

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注