项目链接:https://github.com/OpenTalker/SadTalker/tree/main
一、python依赖包下载
如下图所示,根据步骤一步一步执行即可,接下来说明一下我碰到了哪些问题及解决方法;
1、pip install torch==1.12.1+cu113报错找不到对应版本的pytorch
解决方法:因为我没有GPU,所以直接执行pip install torch==1.12.1,有GPU的需要下载跟cuda版本对应的pytorch。
2、执行pip install -r requirements.txt报错:ERROR: No matching distribution found for tb-nightly
解决方法:
pip install tb_nightly==2.14.0a20230808 -i https://mirrors.aliyun.com/pypi/simple
因为我的conda只加了清华的镜像,里面找不到tb_nightly这个包,所以需要额外下载。执行完上述命令后重新执行
pip install -r requirements.txt。
3、MAC需要额外执行一个命令:
pip install dlib
执行时碰到以下报错:
ERROR: CMake must be installed to build dlib
解决方法:根据其报错信息可通过执行以下命令解决:
brew install cmake
二、checkpoints和gfpgan下载
这个项目很贴心,readme里面给出了网盘地址,下载后记得在项目主目录下解压,主要用到的就是checkpoints文件夹和gfpgan/weights文件夹。
三、运行
我是采用命令行形式运行的:
python inference.py --driven ./sing.wav --source_image ./sadmouse.jpeg
1、出现如下报错:
OMP: Error #15: Initializing libomp.dylib, but found libomp.dylib already initialized.
解决方法:因为numpy库和torch库中有重复的libomp.dylib导致,如果要永久解决的话可以删去其中一个,我这边采用临时解决方法,即在inference.py中添加如下代码:
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
注意该行代码一定在放在import torch前面。
2、landmark报错:
raise 'can not detect the landmark from source image'
TypeError: exceptions must derive from BaseException
是因为我放的source_image是一张老鼠的图片,而下载的模型是基于人脸训练的,无法识别老鼠,所以报错,替换人脸图片可解决。
3、warnings.warn('resource_tracker: There appear to be %d ’
这个不是一个报错,只是一个warning,但它会导致程序一直卡在这儿,碰到这个warning一定要终止程序。
解决方法:
pip install librosa==0.10.1
总结:以上就是我跑通SadTalker碰到的所有坑和解决方法,但是因为我没有GPU生成视频的速度特别慢,而且效果看起来也不太理想,接下来看看有没有优化的方法。