这几天闲着无聊,偶然刷到大佬JackCui的视频,里面介绍了一个LSP算法(此LSP非彼lsp),主要功能是根据声音驱动人的头像讲话,满足实时性要求,处于对知识的好奇,自己捣鼓了下,顺便记录下,希望能帮到想要尝试却没有基础的兄弟们。
首先到github上搜索LiveSpeechPortraits下载算法代码(登不上的可以私我要代码),然后还需要下载作者训练好的数据,这个可以关注JackCui的公众号回复lsp获取,然后将下载到的数据复制到代码的data文件夹下,再根据requirements.txt下载相关包,这里还有一个套娃依赖过程,如果你下载的是librosa的0.7.0版本,运行时可能会报错,需要将numba退回0.48.0版本。如果你任性,什么都要最新的版本紧跟潮流,那么你需要将librosa更新到最新版本,但是比较坑的一点是在0.8.0版本之后librosa不再支持output方法,这里选择在demo.py中直接注释掉相关代码(暂时不知道这行代码有什么作用):
还有在保存生成视频是会出现找不到路径问题,这里直接手动设置路径:
.\results\May\00083\00083.wav
其中May为使用的人物(data里面五选一),00083为.\data\input下要测试的音频名,要在这个路径下再复制一份测试音频,否则无法音画合成视频。
接着需要修改face_dataset.py,其实就是将坐标值转换成int类型,具体修改如下:
然后对于没有gpu的同学,需要修改demo.py和losses.py两个文件,首先加上一行:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
然后将所有的cuda()替换成to(device),删除losses.py中的gpu_id。
最后控制台输入:
python demo.py --id May --driving_audio ./data/Input/00083.wav --device cuda
运行代码,如果使用cpu的同学需要把后面的device改成cpu,然后耐心等待算法运行。
以上。