ComfyUI Mixlab 插件 Whisper.available False 报错修复
在 ComfyUI 中安装 Mixlab Nodes 插件后,如果控制台显示其他节点正常,唯独出现 Whisper.available False,即使环境里已经安装了 openai-whisper 和 faster-whisper,问题可能依然存在。这通常不是依赖缺失,而是路径检测逻辑过于严格导致的。
深度排查:让报错'开口说话'
Mixlab 的默认日志往往只提示 False,不显示具体原因。为了抓出真凶,我们需要先修改插件的入口文件,把隐藏的异常堆栈打印出来。
找到你的 ComfyUI 目录下的 custom_nodes\comfyui-mixlab-nodes\__init__.py 文件。定位到约第 1455-1456 行附近的 Whisper 检测块,将原本沉默的 except 块改为打印完整信息。
# 修改前
except Exception as e: logging.info('Whisper.available False')
# 修改后(增加 Traceback 打印)
except Exception as e:
import traceback
logging.info(f'Whisper.available False. Reason: {e}')
traceback.print_exc()
重启 ComfyUI 后,控制台通常会暴露真实原因,比如:FileNotFoundError: [WinError 3] 系统找不到指定的路径。: '...\\models\\whisper'。这说明代码试图扫描一个不存在的文件夹。
核心原因:路径初始化崩溃
问题的根源在于 nodes/Whisper.py 的代码健壮性不足。初始化时,它强制扫描 models/whisper 文件夹。如果用户尚未创建该目录,os.listdir() 会直接抛出异常,导致模块加载失败。
终极解决方案
第一步:手动创建目录
最简单的临时方案是在 ComfyUI 的 models 目录下,手动新建一个名为 whisper 的文件夹。
第二步:修复源码逻辑漏洞
更稳妥的方法是修改源码,加入自动创建目录的判断。打开 custom_nodes\comfyui-mixlab-nodes\nodes\Whisper.py,在 model_sizes 扫描逻辑前插入以下代码:
# 确保目录存在,防止 os.listdir 报错抛出 WinError 3
if not os.path.exists(whisper_model_path):
os.makedirs(whisper_model_path)
# 此时再执行扫描逻辑,即使文件夹为空也只会返回空列表,不会导致加载失败
model_sizes = [
d for d in os.listdir(whisper_model_path)
if os.path.isdir(os.path.join(whisper_model_path, d))
os.path.isfile(os.path.join(os.path.join(whisper_model_path, d), ))
]


