ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

把 SadTalker 装进 Blender:三步做出语音驱动人脸动画插件完整指南

把 SadTalker 装进 Blender:三步做出语音驱动人脸动画插件完整指南 把 SadTalker 装进 Blender三步做出语音驱动人脸动画插件完整指南【免费下载链接】SadTalker[CVPR 2023] SadTalkerLearning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation项目地址: https://gitcode.com/GitHub_Trending/sa/SadTalker配音录完却还要逐帧去调角色口型这滋味你肯定懂。这篇带你把开源项目 SadTalker 封装成一个 Blender 插件选一张人物图、一段音频自动生成口型同步的语音驱动人脸动画视频并写回时间线。先看效果插件前后差在哪先看一条流程对比左边是纯手工右边是装了插件之后左边的每一步都靠人关键帧、比对、导出一分钟的音频折腾一下午不奇怪。右边的中间环节全部交给模型完成——你只负责指一张图、一段音频点一下。单分钟音频的出片时间从小时级缩到分钟级GPU 上更快纯 CPU 会慢一些而且口型准不准由模型说了算不会因为你累了就崩。备料检查环境、装依赖先把代码拿下来git clone https://gitcode.com/GitHub_Trending/sa/SadTalker cd SadTalker然后三步走pip install torch torchvision torchaudio pip install -r requirements.txt bash scripts/download_models.sh第一条装 PyTorch第二条按仓库的requirements.txt补齐音频、人脸、渲染相关依赖第三条执行仓库自带的模型下载脚本会把全部模型权重放进checkpoints/目录这一步最耗时之后每次都能直接复用另外记得装好系统ffmpeg输出视频时离不开它素材方面你要备两样一张清晰的正脸照片和一段音频。仓库的examples/source_image/、examples/driven_audio/里就有现成的示例图和示例语音可以先拿它们跑通全流程。上面这张就是仓库里的示例人物图脸部在画面中占比大、光线干净这种素材拿来直接就能用。动手插件要做的三件事整个插件其实就三段代码一个触发按钮Operator、一个参数面板Panel、一次结果回写Sequence。把模型包进 OperatorOperator 是 Blender 里用户能一键触发的标准机制相当于给模型配了个按钮。核心只是四行调用from src.gradio_demo import SadTalker talker SadTalker(checkpoint_pathcheckpoints, config_pathsrc/config) video_path talker.test(source_imagepic, driven_audiowav, preprocesscrop, still_modeFalse, exp_scale1.0)这段做了什么它实例化仓库现成的 SadTalker 类官方 WebUI 用的就是同一个入口调用test()一口气完成检测裁剪人脸 → 音频转系数 → 系数渲染出视频最后返回视频文件路径。这里有两个名词值得认识一下3DMM是用一组数字形状 表情描述人脸的三维模型SadTalker 会先从你的图片里估出这组数字然后 src/test_audio2coeff.py 里的 audio2pose 模块把波形逐帧换算成头部姿态数字——也就是音频驱动的系数最后 src/facerender/ 的渲染引擎把数字还原成视频帧。把参数摆上面板Panel 是 Blender 侧边栏里的小窗口职责是把用户要填的字段摆出来。做法很直白layout.prop(context.scene, image_path) # 角色图片路径 layout.prop(context.scene, audio_path) # 语音音频路径 layout.prop(context.scene, still_mode) # 静态模式开关 layout.operator(object.sadtalker_animate) # 生成按钮在此之前你只需要把这些字段声明为场景属性每个一行定义然后在 Panel 的draw方法里按上面几行摆好文件末尾用register()把 Operator 和 Panel 一起注册插件就跑起来了。想要一份更完整的骨架可以直接参考仓库里已有的 WebUI 扩展脚本 scripts/extension.py它模型检测、参数定义的流程和你写的插件几乎同构。把视频写回时间线Sequence 是 Blender 视频序列编辑器VSE里的合成时间线视频片段像轨道一样排上去。生成结束后只需两步把结果铺上去context.scene.sequence_editor_create() seq context.scene.sequence_editor.sequences.new_movie( SadTalker_Result, video_path, channel1, frame_start1)这几行在时间线开头新建了一个视频片段起名 SadTalker_Result。如果你还想让角色回到三维场景里也可以把片段换成平面 帧序列的形式摆进相机视野——做法很多先跑通这一行再说。让动画更自然调参与提速建议生成的视频味儿不对时调下面几个数字通常就够了项目控制什么建议起点exp_scale表情幅度的放大倍数从 1.0 起步觉得含蓄往 1.2~1.5 调夸张就往 0.8 压pose_style头部晃动的风格0 最安静想要活泼感逐步加到 45still_mode头部锁住、只动表情正式人像开动态场景关size输出分辨率先 256 预览定稿再上 512use_enhancer是否过一遍人脸增强原图偏糊时打开提速方面三个习惯最管用先用 256 分辨率跑几秒确认效果再上 512 渲染完整版别一上来就出成片同一次会话里复用同一个 SadTalker 实例别每点一次按钮就重建模型多段音频时用仓库里的批处理入口src/generate_batch.py一次跑完比在面板里一张张点快得多卡住了怎么办高频的坑基本就这四个对号入座报No face is detected图片里脸太小、角度太刁或光线太暗。换成脸部占满画面的正面照并把preprocess设为crop让模型自己裁剪对齐。像上面这种单一、清晰、正脸的示例仓库示例图之一基本都能顺利通过检测。音频报错或成片没声只认wav和mp3mp3 会被代码自动转成 16000Hz 的 wav仍失败的话先用普通播放器确认这个文件本身能播。慢、或者显存不够纯 CPU 只是慢能出结果GPU 显存吃紧就先降到size256、batch_size1并关掉其他占显存的程序。提示找不到 ffmpeg缺的是系统级 ffmpeg装好后在终端跑ffmpeg -version确认能输出版本号再重试。让角色自己开口之后回头看看这个插件并没有做什么神秘的事它只是把对口型这件手工作业变成了一次模型计算再用 Operator、Panel、Sequence 这三样 Blender 的标准件把它接了进去。跑通之后还有大把方向可以走接上参考视频让整个头部跟着动、连一个文本转语音模块让输入台词、角色就开口、或者扩展成多角色对话场景。完整可运行的代码就在仓库里——最直接的参考是 scripts/extension.py底层调用流程看 src/gradio_demo.py参数手感多读几遍docs/里的使用文档就熟了。【免费下载链接】SadTalker[CVPR 2023] SadTalkerLearning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation项目地址: https://gitcode.com/GitHub_Trending/sa/SadTalker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表