ComfyUI-AniPortrait 插件完全教程
1. 插件简介
插件地址: https://github.com/chaojie/ComfyUI-AniPortrait
这个插件是一个超级厉害的"人像动画制作器"!简单来说,就是能让静态的人物照片变成会说话、会动的视频。想象一下,你有一张朋友的照片,通过这个插件,你可以让照片里的人跟着音频说话,嘴巴会动,头部会转动,就像真的在说话一样!
能给我们带来什么效果?
- 让静态照片变成会说话的视频(就像哈利波特里的魔法照片)
- 根据音频文件让人物嘴巴同步说话
- 让人物头部跟随姿势视频做动作
- 制作虚拟主播、数字人视频
- 让已故亲人的照片"重新说话"
这个插件特别适合制作:
- 虚拟主播视频
- 纪念视频
- 教学视频
- 娱乐搞笑视频
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI
- 点击 Manager 按钮
- 搜索 "ComfyUI-AniPortrait"
- 点击安装
- 重启 ComfyUI
方法二:手动安装
- 进入 ComfyUI 的
custom_nodes文件夹 - 运行命令:
git clone https://github.com/chaojie/ComfyUI-AniPortrait.git - 进入插件文件夹:
cd ComfyUI-AniPortrait - 安装依赖:
pip install -r requirements.txt - 重启 ComfyUI
下载必要的模型文件
这个插件需要下载一些"大脑文件"才能工作:
-
AniPortrait专用模型(从 HuggingFace 下载):
denoising_unet.pth- 降噪处理器reference_unet.pth- 参考图像处理器pose_guider.pth- 姿势引导器motion_module.pth- 动作模块audio2mesh.pt- 音频转面部模型
-
基础模型:
- Stable Diffusion V1.5
- sd-vae-ft-mse
- image_encoder
- wav2vec2-base-960h
3. 节点详细解析
本插件总共包含 5 个节点,本教程将逐一详细解释每个节点的用途和参数。
3.1 AniPortraitLoader 节点 - 模型加载器
这个节点就像一个"工具箱管理员",负责把所有需要的AI模型加载到内存里,为后续的动画制作做准备。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| SD路径 | sd_path | 文本路径 | /home/admin/ComfyUI/models/diffusers/stable-diffusion-v1-5 | 指定Stable Diffusion模型的位置 | Stable Diffusion基础模型路径 | 填入你下载的SD1.5模型文件夹路径 |
| VAE路径 | vae_path | 文本路径 | /home/admin/ComfyUI/models/diffusers/sd-vae-ft-mse | 指定图像编码解码器的位置 | VAE模型路径 | 填入sd-vae-ft-mse模型文件夹路径 |
| 图像编码器路径 | image_encoder_path | 文本路径 | /home/admin/ComfyUI/models/diffusers/sd-image-variations-diffusers/image_encoder | 指定图像理解器的位置 | 图像编码器模型路径 | 填入image_encoder模型文件夹路径 |
| 音频模型路径 | wav2vec2_path | 文本路径 | /home/admin/ComfyUI/models/diffusers/facebook/wav2vec2-base-960h | 指定音频理解器的位置 | Wav2Vec2音频模型路径 | 填入wav2vec2-base-960h模型文件夹路径 |
| 音频转网格模型 | a2m_ckpt | 文本路径 | /home/admin/ComfyUI/models/diffusers/ZJYang/AniPortrait/audio2mesh.pt | 指定音频转面部动作模型的位置 | Audio2Mesh检查点文件路径 | 填入audio2mesh.pt文件的完整路径 |
| 动作模块路径 | motion_module_path | 文本路径 | /home/admin/ComfyUI/models/diffusers/ZJYang/AniPortrait/motion_module.pth | 指定动作生成器的位置 | 动作模块权重文件路径 | 填入motion_module.pth文件的完整路径 |
| 降噪网络路径 | denoising_unet_path | 文本路径 | /home/admin/ComfyUI/models/diffusers/ZJYang/AniPortrait/denoising_unet.pth | 指定图像降噪器的位置 | 降噪UNet权重文件路径 | 填入denoising_unet.pth文件的完整路径 |
| 参考网络路径 | reference_unet_path | 文本路径 | /home/admin/ComfyUI/models/diffusers/ZJYang/AniPortrait/reference_unet.pth | 指定参考图像处理器的位置 | 参考UNet权重文件路径 | 填入reference_unet.pth文件的完整路径 |
| 姿势引导器路径 | pose_guider_path | 文本路径 | /home/admin/ComfyUI/models/diffusers/ZJYang/AniPortrait/pose_guider.pth | 指定姿势控制器的位置 | 姿势引导器权重文件路径 | 填入pose_guider.pth文件的完整路径 |
| 权重精度 | weight_dtype | fp16/fp32 | fp16 | 选择计算精度,影响速度和显存占用 | 模型权重数据类型 | fp16更快省显存,fp32更精确但慢 |
3.2 AniPortraitRun 节点 - 动画生成器
这是整个插件的"核心大脑",负责把静态照片、姿势视频和音频文件组合成最终的说话视频。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 管道 | pipe | Pose2VideoPipeline类型 | - | 接收加载好的AI模型管道 | 视频生成管道对象 | 连接AniPortraitLoader的pipe输出 |
| 音频模型路径 | wav2vec2_path | 文本路径 | /home/admin/ComfyUI/models/diffusers/facebook/wav2vec2-base-960h | 音频理解器的位置 | Wav2Vec2模型路径 | 与Loader中保持一致 |
| 音频转网格模型 | a2m_model | Audio2MeshModel类型 | - | 接收音频转面部动作的模型 | Audio2Mesh模型对象 | 连接AniPortraitLoader的a2m_model输出 |
| 参考图像 | image | IMAGE类型 | - | 要制作动画的人物照片 | 输入参考图像 | 连接加载的人物照片 |
| 姿势序列 | pose | IMAGE类型 | - | 控制头部动作的姿势图像序列 | 姿势控制图像序列 | 连接姿势视频的帧序列 |
| 音频路径 | audio_path | 文本路径 | 默认音频文件路径 | 要同步的音频文件位置 | 音频文件路径 | 填入.wav音频文件的完整路径 |
| 宽度 | width | 整数 | 512 | 生成视频的宽度像素 | 输出视频宽度 | 建议512或768,太大会很慢 |
| 高度 | height | 整数 | 512 | 生成视频的高度像素 | 输出视频高度 | 建议512或768,保持与宽度一致 |
| 视频长度 | video_length | 整数 | 16 | 一次生成多少帧 | 单次生成的帧数 | 16帧约0.5秒,可根据需要调整 |
| 步数 | steps | 整数 | 25 | AI生成的精细程度 | 扩散模型推理步数 | 25步平衡质量和速度,可调至50提高质量 |
| 引导强度 | cfg | 小数 | 3.5 | 控制生成结果与输入的相似度 | 分类器自由引导强度 | 3.5较平衡,增大更像原图但可能僵硬 |
| 随机种子 | seed | 整数 | 1234 | 控制随机性,相同种子产生相同结果 | 随机数种子 | 固定种子可复现结果,-1为随机 |
| 权重精度 | weight_dtype | fp16/fp32 | fp16 | 计算精度选择 | 模型权重数据类型 | fp16更快省显存 |
| 最小人脸检测置信度 | min_face_detection_confidence | 小数 | 0.5 | 人脸识别的敏感度 | 人脸检测置信度阈值 | 0.5中等敏感,降低可检测更多人脸 |
3.3 MaskList2Video 节点 - 蒙版转视频
这个节点就像一个"智能剪刀",能根据蒙版自动裁剪出人脸区域,并计算出边界框。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图像 | image | IMAGE类型 | - | 要处理的原始图像 | 输入图像数据 | 连接需要裁剪的图像 |
| 蒙版 | mask | MASK类型 | - | 标记要保留区域的蒙版 | 输入蒙版数据 | 连接人脸分割的蒙版 |
| 边距 | padding | 整数 | 10 | 在裁剪区域周围额外保留的像素 | 边界框扩展像素数 | 10像素给人脸留点边缘,避免太紧 |
3.4 Box2Video 节点 - 边界框裁剪
这个节点就像一个"精确裁剪器",根据指定的边界框坐标裁剪图像。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图像 | image | IMAGE类型 | - | 要裁剪的原始图像 | 输入图像数据 | 连接需要按框裁剪的图像 |
| 边界框 | box | BOX类型 | - | 裁剪区域的坐标信息 | 边界框坐标数据 | 连接MaskList2Video输出的box |
3.5 CoverVideo 节点 - 视频覆盖合成
这个节点就像一个"贴纸工具",把小图像贴到大图像的指定位置上。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 背景图像 | bgimage | IMAGE类型 | - | 作为背景的大图像 | 背景图像数据 | 连接原始完整图像 |
| 覆盖图像 | coverimage | IMAGE类型 | - | 要贴上去的小图像 | 前景覆盖图像数据 | 连接处理后的人脸区域图像 |
| 边界框 | box | BOX类型 | - | 指定贴图位置的坐标 | 覆盖位置坐标数据 | 连接之前计算的边界框坐标 |
4. 使用技巧和建议
4.1 图片准备技巧
- 最佳人像要求:使用清晰的正面人像照片,五官清楚可见
- 分辨率建议:建议使用512x512或768x768的图片
- 光线要求:避免过暗或过亮的照片,光线均匀最佳
- 背景处理:简单背景效果更好,复杂背景可能影响效果
4.2 音频准备技巧
- 格式要求:使用WAV格式的音频文件
- 时长控制:音频时长决定最终视频时长
- 音质要求:清晰的人声效果最佳,避免背景噪音
- 语言支持:支持多种语言,中文效果也很好
4.3 姿势视频准备
- 帧率建议:30fps的视频效果最佳
- 动作幅度:适中的头部动作,避免过于剧烈
- 时长匹配:姿势视频时长应与音频时长匹配
- 质量要求:清晰的姿势视频能提供更好的动作引导
4.4 参数调优建议
- 新手设置:width=512, height=512, steps=25, cfg=3.5
- 高质量设置:width=768, height=768, steps=50, cfg=4.0
- 快速预览:width=256, height=256, steps=15, cfg=2.5
- 显存不足:使用fp16精度,减小分辨率
5. 常见问题解答
5.1 安装相关问题
Q: 提示缺少某个Python包怎么办?
A: 运行 pip install -r requirements.txt 安装所有依赖包。如果还有问题,可以单独安装提示缺少的包。
Q: 模型下载太慢怎么办?
A: 可以使用国内镜像站下载,或者使用下载工具如迅雷等加速下载。
Q: 显存不够用怎么办?
A:
- 使用fp16精度
- 减小输出分辨率(如256x256)
- 减少video_length参数
- 关闭其他占用显存的程序
5.2 使用相关问题
Q: 生成的视频人物不像原图怎么办?
A:
- 检查参考图像是否清晰
- 适当增加cfg参数值
- 确保人脸在图像中占比适中
- 尝试不同的随机种子
Q: 嘴型同步效果不好怎么办?
A:
- 确保音频文件清晰无噪音
- 检查音频格式是否为WAV
- 适当调整min_face_detection_confidence参数
- 确保参考图像中人脸清晰可见
Q: 生成速度太慢怎么办?
A:
- 使用fp16精度
- 减少steps参数(如15-20)
- 减小输出分辨率
- 减少video_length参数
Q: 姿势动作不自然怎么办?
A:
- 使用动作幅度适中的姿势视频
- 确保姿势视频帧率为30fps
- 检查姿势视频中人脸是否清晰
- 尝试使用不同的姿势视频
5.3 高级使用问题
Q: 如何制作长视频?
A: 可以分段生成,然后使用视频编辑软件拼接。每段建议不超过5-10秒。
Q: 如何提高生成质量?
A:
- 增加steps参数到50
- 使用更高分辨率(768x768)
- 使用高质量的参考图像和音频
- 适当调整cfg参数
Q: 能否批量处理多个人物?
A: 目前需要为每个人物单独运行工作流程,但可以通过脚本自动化处理。
6. 工作流程示例
6.1 基础工作流程
- 准备素材:人物照片 + 音频文件 + 姿势视频
- 加载模型:使用AniPortraitLoader加载所有必要模型
- 生成动画:使用AniPortraitRun生成说话视频
- 后处理:根据需要使用其他节点进行裁剪和合成
6.2 高级工作流程
- 素材预处理:使用MaskList2Video提取人脸区域
- 精确裁剪:使用Box2Video精确裁剪人脸
- 生成动画:在裁剪后的区域生成动画
- 合成回原图:使用CoverVideo将动画合成回原始图像
7. 总结
ComfyUI-AniPortrait插件是一个功能强大的人像动画制作工具,通过本教程的详细介绍,你应该已经掌握了:
- 插件的基本概念:从静态照片到动态说话视频的转换原理
- 所有节点的用法:5个节点的详细参数说明和使用方法
- 实用技巧:如何准备素材和调优参数
- 问题解决:常见问题的解决方案
节点统计总结:
- 本教程共详细解析了 5个节点
- 涵盖了模型加载、动画生成、图像处理等完整流程
- 每个节点都提供了通俗易懂的解释和实用建议
记住,制作好的说话视频需要耐心和练习。建议从简单的短音频开始,逐步掌握各种参数的调节技巧。随着经验的积累,你将能够创造出越来越逼真的数字人视频!
最后提醒:这个插件需要较高的硬件配置,特别是显存要求。如果遇到显存不足的问题,可以通过调整参数来优化。同时要注意合理使用,尊重他人肖像权。