SD中的插件一般安装比较简单,但也有一些插件安装会比较难。比如我在安装SadTalker时,就遇到很多问题,一度放弃了,后来查了一些网上攻略,自己也反复查看日志,终于解决,不吐不快。
一、在Stable Diffusion webui中安装SadTalker插件后,重启Stable Diffusion WebUI,在界面中没有出现SadTalker标签。
查绘世启动器中的运行提示,在运行到SadTalker插件时,系统出现很多错误提示,某个文件 某行代码有什么问题之类,最后为:
SadTalker module 'numpy' has no attribute 'complex'.
大意是说complex在numpy.py某个版本会已取消,可以退回以前版本之类。
退回原来的版本容易,但其他一些插件又会因为numpy.py版本过低引发新的问题。经网上搜索,找到“高斯小哥”的文章:已解决Error:AttributeError: module ‘numpy‘ has no attribute ‘complex‘_attributeerror: module 'numpy' has no attribute 'c-CSDN博客
因此,结合本人电脑的错误提示:File "D:\SD\sd-webui-aki-v4.9\python\lib\site-packages\librosa\core\constantq.py", line 1058, in <module>
dtype=np.complex,
解决方法是:将该文件的1058行进行修改:
# wn_freqs_mul = np.zeros(treal.shape, dtype=np.complex) # 修改前wn_freqs_mul = np.zeros(treal.shape, dtype=np.complex_) # 修改后
经过修改后,再次启动WebUI,终于能看到SadTalker标签了,
选择图像,选择声音文件,调整参数,生成,程序终于欢快地跑起来了。
且慢,
二、插件运行过程中,前端视频生成框中提示Error(错误),过程中止。
WHY?是声音文件太长?格式不标准?在扩展文件夹中找到示例声音文件,也不行。查看控制台中输出的日志,显示:
File "D:\SD\sd-webui-aki-v4.9/extensions/SadTalker\src\gradio_demo.py", line 96, in test
first_coeff_path, crop_pic_path, crop_info = self.preprocess_model.generate(pic_path, first_frame_dir, preprocess, True, size)
File "D:\SD\sd-webui-aki-v4.9/extensions/SadTalker\src\utils\preprocess.py", line 96, in generate
x_full_frames, crop, quad = self.propress.crop(x_full_frames, still=True if 'ext' in crop_or_resize.lower() else False, xsize=512)
File "D:\SD\sd-webui-aki-v4.9/extensions/SadTalker\src\utils\croper.py", line 128, in crop
lm = self.get_landmark(img_np)
File "D:\SD\sd-webui-aki-v4.9/extensions/SadTalker\src\utils\croper.py", line 35, in get_landmark
lm = landmark_98_to_68(self.predictor.detector.get_landmarks(img)) # [0]
File "D:\SD\sd-webui-aki-v4.9/extensions/SadTalker\src\face3d\util\my_awing_arch.py", line 373, in get_landmarks
pred = calculate_points(heatmaps).reshape(-1, 2)
File "D:\SD\sd-webui-aki-v4.9/extensions/SadTalker\src\face3d\util\my_awing_arch.py", line 18, in calculate_points
preds = preds.astype(np.float, copy=False)
File "D:\SD\sd-webui-aki-v4.9\python\lib\site-packages\numpy\__init__.py", line 338, in __getattr__
raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'float'.
`np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
大意是说程序使用了 numpy 包中不存在的属性 float,np.float 是一个过期的别名。
还是一样的毛病,numpy.py版本过低引发的问题。
解决方法是:
1、找到图中位置的两个文件(注意保留副本)
2、将my_awing_arch.py中的第18行
preds = preds.astype(np.float, copy=False)
改为
preds = preds.astype(float, copy=False)
如下图:
3、将preprocess.py中的101行
trans_params = np.array([w0, h0, s, t[0], t[1]])
改为:
trans_params = np.array([w0, h0, s, t[0][0], t[1][0]])
如下图:
第2点的解决根据错误提示很好解决。但第3点的解决很长一段时间都不知怎么办?几经试验查找,几乎准备放弃了。一次偶然,搜到了修复 SadTalker 无法在新版本 Stable Diffusion WebUI 中运行的问题!_sadtalker will not support download all the files -CSDN博客
才终于找到解决方法。
4、再次运行SadTalker,生成初步时仍提示错误。
AttributeError: module 'numpy' has no attribute 'float'.
`np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
File "D:\SD\sd-webui-aki-v4.9\python\lib\site-packages\librosa\util\utils.py", line 2099, in dtype_r2c
np.dtype(np.float): np.complex,
看来还有漏网之鱼。找到该文件,修改之。
再重启运行之,经过几分钟的等待,终于成功了。试验作品在视频区,大家可观看下。
视频区有试验作品:邓丽君小姐播新闻,赫本小姐播音《三峡》
极域电子教室座位表程序下载链接:链接:https://pan.baidu.com/s/1X0WUTtXmr1EhFg9CNgoIKA?pwd=odvs
提取码:odvs
考试指令系统下载链接:https://pan.baidu.com/s/11x9fS1gUEPCd6w15KHCxSw?pwd=zvw3
提取码:zvw3
照片插入电子表格程序链接:https://pan.baidu.com/s/1dvW5q9G53prkUDVcO6uffA?pwd=w3jp
提取码:w3jp