type
status
date
slug
summary
tags
category
icon
password

CosyVoice-ComfyUI 中的张量类型错误问题解决指南

RuntimeError: expected scalar type Float but found Half RuntimeError: torch.cat(): expected a non-empty list of Tensors

问题描述

在使用 CosyVoice-ComfyUI 进行语音合成时,可能会遇到以下错误:
  1. expected scalar type Float but found Half(期望浮点类型但收到半精度类型)
  1. torch.cat(): expected a non-empty list of Tensors(张量列表为空)
notion image
``

原因分析

这个问题的核心在于数据类型不匹配:
  • 模型期望使用半精度(FP16)格式
  • 但输入数据是以单精度(FP32)格式传入
  • 这种不匹配导致模型处理失败

解决方案(推荐)

按照 @qy8502 提供的修复方案,需要修改模型文件:
  1. 进入模型目录:
  1. 解压模型文件:
  1. 修改编码器文件,添加类型转换:
  • 打开文件:llm.text_encoder.fp16/code/__torch__/cosyvoice/transformer/encoder/___torch_mangle_5.py
  • 在第24行左右,找到 input = torch.layer_norm(_0, [1024], CONSTANTS.c2, CONSTANTS.c3) 这行
  • 在其后添加:input = input.half()
  • 这行代码的作用是将输入数据转换为半精度格式
  1. 重新打包模型:
Doiiars批注:注意,flow层同理。共有两个文件需要修改
notion image

其他可能的解决方法(不推荐)

根据 @nancygd 的经验,有时这个问题也可能与环境有关。如果修改模型文件不起作用,可以尝试:
  1. 创建新的虚拟环境
  1. 重新安装依赖
  1. 重新部署模型

确认修复

修复成功后,模型应该能够正常处理中文文本并生成语音输出。
注意:这个解决方案已经得到多个用户的验证,包括 @flamingol1 确认修复成功。

技术说明

  • FP32(单精度):32位浮点数,精度更高
  • FP16(半精度):16位浮点数,占用内存更少,但精度较低
  • 这个修复本质上是确保了数据类型的一致性,让输入数据与模型期望的格式相匹配
现在您应该能够顺利运行 CosyVoice-ComfyUI 了。

参考资料

torch.cat(): expected a non-empty list of Tensors
Updated Oct 6, 2024

技术支持社群

如果还有问题,欢迎继续提问!由Doiiars维护的个人QQ综合交流群反馈交流群:491708665 (一键加群)
 
相关文章
Rimworld中改变殖民者文化的方法
Lazy loaded image
最全免费 ASR 服务合集!(阿里云系列模型)
Lazy loaded image
大模型基准测试的详细介绍
Lazy loaded image
DeepSeek-V3-0324更新了什么?
Lazy loaded image
自定义 Modelfile 方案实现 Ollama Gemma 3 函数调用指南
Lazy loaded image
Ollama 版本 Gemma 3 缺少函数调用的解决方案
Lazy loaded image
Follow认证GraphRAG 和 LazyGraphRAG 的区别
Loading...
Doiiars
Doiiars
一个低调的技术Geek
最新发布
Rimworld中改变殖民者文化的方法
2025-4-1
最全免费 ASR 服务合集!(阿里云系列模型)
2025-3-28
大模型基准测试的详细介绍
2025-3-28
Ollama 中 Gemma3 的 Function Calling 无法使用的问题
2025-3-28
自定义 Modelfile 方案实现 Ollama Gemma 3 函数调用指南
2025-3-28
Ollama 版本 Gemma 3 缺少函数调用的解决方案
2025-3-28