Spaces:
Running
A newer version of the Gradio SDK is available:
5.7.1
问题汇总
目录
- 问题汇总
- 一、下载问题
- 二、环境配置问题
- 三、运行问题
- 3.1 文件找不到
- 3.2 FFMPEG问题
- 3.3 路径问题
- 3.4 GFPGANer is not defined
- 3.5 Microsoft Visual C++ 14.0 is required
- 3.6 多个服务器部署
- 3.7 GeminiPro的参数proxy代理设置
- 3.8 项目更新方向
- 3.9 version GLIBCXX_3.4.* not found
- 3.10 Gradio Connection errored out
- 3.11 gr.Error("无克隆环境或者无克隆模型权重,无法克隆声音", e)
- 3.12 OSError: [WinError 127] 找不到指定的程序
- 3.13 LLM对话步骤出现错误:“对不起,你的请求出错了,请再次尝试。”
- 3.14 启动报错 SadTalker Error: invalid load key, 'v'.
- 四、功能迭代问题
- 五、交流群问题
一、下载问题
1.1 代码下载
代码可以从Github下载 https://github.com/Kedreamix/Linly-Talker,也可以从Gitee下载 https://gitee.com/kedreamix/Linly-Talker
1.2 权重下载
提供以下三种渠道下载权重,具体可看README
- Baidu (百度云盘) (Password:
linl
) - huggingface
- modelscope
SadTalker的代码可以从 Baidu (百度云盘) (Password: linl
) 下载,也可以直接运行shell文件bash scripts/sadtalker_download_models.sh
运行自动下载(比较适用于Linux)。
Wav2Lip的代码模型也可以从One Drive下载,可以只下载第一个或者第二个:
Model | Description | Link to the model |
---|---|---|
Wav2Lip | Highly accurate lip-sync | Link |
Wav2Lip + GAN | Slightly inferior lip-sync, but better visual quality | Link |
Expert Discriminator | Weights of the expert discriminator | Link |
Visual Quality Discriminator | Weights of the visual disc trained in a GAN setup | Link |
GPT-SoVITS的代码模型可以从以下链接下载,具体可看https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/cn/README.md#预训练模型
从 GPT-SoVITS Models 下载预训练模型,并将它们放置在 GPT_SoVITS\pretrained_models
中。
中国地区用户可以进入以下链接并点击“下载副本”下载以上两个模型:
1.3 网络下载
有时候利用代码下载的时候出现网络问题,可能会有网络的问题,比如大模型的huggingface
下载,我目前已经加上了Baidu (百度云盘) (Password: linl
) ,可以考虑下载到本地以后根据文件夹放置,也可以完成对应的功能。
如果有什么文件下载有问题,也可以提建议给我,我会上传到百度网盘。
1.4 克隆语音 权重
为了保护用户隐私安全,我并未提供克隆语音的权重,因为这可能涉及版权问题,如果大家感兴趣的话,可以尝试使用相同的方法进行训练或者私聊我,感谢大家的理解
二、环境配置问题
2.1 GPU环境
我使用的是Pytorch 1.12的版本,由于Pytorch大部份是兼容的,所以我建议是使用>= 1.12的版本来进行下载,具体下载的命令可以根据pytorch官网的命令进行设置 https://pytorch.org/get-started/previous-versions/,建议有时候可以使用anaconda来安装,这样方便管理和安装其他都比较方便
conda create -n linly python=3.9
conda activate linly
# pytorch安装方式1:conda安装(推荐)
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
# pytorch安装方式2:pip 安装
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
conda install -q ffmpeg # ffmpeg==4.2.2
pip install -r requirements_app.txt
GPU环境有时候需要配置CUDA,这一部分网上有很多介绍,所以这里我就不多说了。
2.2 CPU环境
可以将GPU替换为CPU,但是这样可能会比较慢,只需要安装pytorch的时候,不安装GPU版本即可,应该也能完成对应的结果,但是可能结果会比较差,因为需要跑大模型等等,所以还是建议GPU环境
2.3 显存问题
暂时以我测试的来说,现在Sadtalker大概默认Batch Size = 1
,大模型Qwen 1.8B
大概占 2G 显存,数字人模型SadTalker
占大概4~6G,所以大概最低为6~8G显存的电脑都能正常部署,这里面针对的是GPU的环境。
建议如果在6G或者更低显存的电脑上运行的时候,可以考虑使用GeminiPro和OpenAI的API,这样可以不用在本地部署对应的大模型,可以较好的节省GPU显存
三、运行问题
3.1 文件找不到
如果出现FileNotFound
的问题,如果是权重的问题的话,那就回到1.2的问题,重新下载即可,记住看文件夹结构。
3.2 FFMPEG问题
如果正常运行在最后的生成视频出现ffmpeg
的问题,那可能安装ffmpeg
出错了,有两种方式。
第一种是使用conda安装ffmpeg
,需要ffmpeg>=4.2.2左右
conda install -q ffmpeg # ffmpeg==4.2.2
第二种就是正常安装ffmpeg
# Linux下载
sudo apt install ffmpeg
第三种就是Windows安装ffmpeg
Windows安装下载ffmpeg也是很简单的,我这里给一个链接,大家可以试一下 Windows下安装使用ffmpeg,直接去官网下载即可https://ffmpeg.org/。
3.3 路径问题
如果下载的时候没有放对位置,需要在config.py
设置对应的路径,并且可以修改端口的,默认设置为7860,也可以设置其他的端口,只要不被占用即可。
3.4 GFPGANer is not defined
如果在运行的时候出现了这个问题,这是一个增强的模块,这一部分模块如果需要运行,首先要安装gfpgan
库即可
pip install gfpgan
3.5 Microsoft Visual C++ 14.0 is required
如果遇到这个问题,是因为window需要一些依赖,可以参考这篇文章解决一下 Microsoft Visual C++ 14.0 is required解决方法
3.6 多个服务器部署
如果有多台服务器,大模型可以考虑放在另一个服务器中进行部署,我写了FastAPI的版本,可以利用部署api的方式来使用模型。
也可以其实先在本地部署,这样每次运行的时候不用一只load大模型,这样也会等待一段时间。
3.7 GeminiPro的参数proxy代理设置
对于GeminiPro的代理设置proxy_url
可以传入参数,这个参数我设置是http://127.0.0.1:7890
。
因为我用的是clash,所以开的端口是7890,这里面也可以换成自己对应的端口进行设置。
3.8 项目更新方向
如果要加入其他的模型的话和方向的话,可以在对应的文件夹ASR
,TTS
,THG
和LLM
中添加对应的算法,也可以向我提建议,我有时间也会进行更新的,欢迎大家向我提供资料。
我会一直保持更新的哈哈,有时候可能要想一些点子做好一点在放上去,也欢迎大家给我提PR,我都会加油的!!!冲冲冲!!!
3.9 version GLIBCXX_3.4.* not found
如果有遇到这样的问题,那可能是一些库的版本的问题,具体可以看,["`GLIBCXX_3.4.32' not found" error at runtime. GCC 13.2.0](https://stackoverflow.com/questions/76974555/glibcxx-3-4-32-not-found-error-at-runtime-gcc-13-2-0)
/lib/libstdc++.so.6: version `GLIBCXX_3.4.32' not found
我这里说一下我发现的问题,大概我发现有两种方式,第一种就是似乎python版本会解决问题,我用3.10居然不会出现错误,3.9出现了错误
第二个解决方法我发现,实际上这个错误是在pyopenjtalk
库的问题,我们可以降低他的版本即可,比如这样的方法
pip install pyopenjtalk==0.3.1
我们也可以看看自己机器本身含有的GLIBCXX的版本
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
3.10 Gradio Connection errored out
我还没有遇到这种问题,但是有一些人遇到了,感觉在win上不稳定的多一点,这一部分大家可以提点建议,跟我说一下有没有一些通用的解决方案,因为在网上查找的资料感觉都不是很行
3.11 gr.Error("无克隆环境或者无克隆模型权重,无法克隆声音", e)
这属于功能迭代的问题,也就是克隆环境和克隆模型权重,首先注意按照克隆环境
pip install VITS/requirements.txt
再根据4.2 克隆语音模型替换去修改模型权重即可
3.12 OSError: [WinError 127] 找不到指定的程序
这个错误通常发生在尝试在 Windows 操作系统上运行一个程序或命令时,但是系统找不到指定的可执行文件。一般来说,就是对应库的安装没安装好,可以建议根据出错的库重新安装一遍即可。
3.13 LLM对话步骤出现错误:“对不起,你的请求出错了,请再次尝试。”
大模型兼容出现错误,重新安装对应的库即可解决
pip install transformers==4.32.0 accelerate tiktoken einops scipy transformers_stream_generator==0.0.4 peft deepspeed
3.14 启动报错 SadTalker Error: invalid load key, 'v'.
在启动文件的时候,发现报错,我仔细去找这个问题,最后发现,应该是模型权重的下载有误,特别是关于mapping
的两个pth
文件有时候下载的时候没有174MB的内存,理论上大小如下。
149M checkpoints/mapping_00109-model.pth.tar
149M checkpoints/mapping_00229-model.pth.tar
所以遇到这个问题,建议重新下载这两个文件即可,提供以下三种渠道下载权重,具体可看README
- Baidu (百度云盘) (Password:
linl
) - huggingface
- modelscope
git lfs clone可能有时候会出bug,那就可以直接下载这两个文件即可,如利用wget下载即可,也可以下载后重新上传到checkpoints
wget -c https://modelscope.cn/api/v1/models/Kedreamix/Linly-Talker/repo?Revision=master&FilePath=checkpoints%2Fmapping_00109-model.pth.tar
wget -c https://modelscope.cn/api/v1/models/Kedreamix/Linly-Talker/repo?Revision=master&FilePath=checkpoints%2Fmapping_00229-model.pth.tar
四、功能迭代问题
4.1 LLM大模型更新
如果要加入新的LLM大模型,可以在LLM文件夹加入选择的大模型
我这里给出一个适用于任何大型语言模型(LLM)的中文类模板。这个模板旨在具有灵活性和易于配置,同时为不同的模型提供一致的交互接口。
from transformers import AutoModelForCausalLM, AutoTokenizer
class LLMTemplate:
def __init__(self, model_name_or_path, mode='offline'):
"""
初始化LLM模板
Args:
model_name_or_path (str): 模型名称或路径
mode (str, optional): 模式,'offline'表示离线模式,'api'表示使用API模式。默认为'offline'。
"""
self.mode = mode
# 模型初始化
self.model, self.tokenizer = self.init_model(model_name_or_path)
self.history = None
def init_model(self, model_name_or_path):
"""
初始化语言模型
Args:
model_name_or_path (str): 模型名称或路径
Returns:
model: 加载的语言模型
tokenizer: 加载的tokenizer
"""
# TODO: 模型加载
model = AutoModelForCausalLM.from_pretrained(model_name_or_path,
device_map="auto",
trust_remote_code=True).eval()
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
return model, tokenizer
def generate(self, prompt, system_prompt=""):
"""
生成对话响应
Args:
prompt (str): 对话的提示
system_prompt (str, optional): 系统提示。默认为""。
Returns:
str: 对话响应
"""
# TODO: 模型预测
# 这一块需要尤其注意,这里的模板是借鉴了HuggingFace上的一些推理模板,需要根据自己的模型进行调整
# 这里的模板主要是为了方便调试,因为模型预测的时候,会有很多不同的输入,所以可以根据自己的模型进行调整
if self.mode != 'api':
try:
response, self.history = self.model.chat(self.tokenizer, prompt, history=self.history, system = system_prompt)
return response
except Exception as e:
print(e)
return "对不起,你的请求出错了,请再次尝试。\nSorry, your request has encountered an error. Please try again.\n"
else:
return self.predict_api(prompt)
def predict_api(self, prompt):
"""
使用API预测对话响应
Args:
prompt (str): 对话的提示
Returns:
str: 对话响应
"""
'''暂时不写api版本,与Linly-api相类似,感兴趣可以实现一下'''
pass
def chat(self, system_prompt, message):
response = self.generate(message, system_prompt)
self.history.append((message, response))
return response, self.history
def clear_history(self):
self.history = []
4.2 克隆语音模型替换
克隆语音模型也可以根据自己需求和克隆好的模型进行替换,具体在webui.py
的第80行,需要调整一下权重路径,和参考音频,以及参考音频的文本。
elif voice == "克隆烟嗓音":
try:
# 设置 GPT 模型的权重路径
gpt_path = "GPT_weights权重路径"
# 设置 SoVITS 模型的权重路径
sovits_path = "SoVITS_weights权重路径"
# 加载声音克隆模型
vits.load_model(gpt_path, sovits_path)
# 设置参考音频的路径
ref_wav_path = "examples/slicer_opt/vocal_output.wav_10.wav_0000846400_0000957760.wav"
# 设置参考音频的文本
prompt_text = "你为什么要一次一次的伤我的心啊?"
# 设置要生成音频的文本
text = answer
# 设置生成音频文本的语言
text_language = "中英混合"
# 设置如何切分文本以生成音频
how_to_cut = "按标点符号切"
# 设置生成音频的保存路径
save_path = 'answer.wav'
# 使用声音克隆模型生成音频
vits.predict(ref_wav_path=ref_wav_path,
prompt_text=prompt_text,
prompt_language="中文",
text=text,
text_language=text_language,
how_to_cut=how_to_cut,
save_path=save_path)
# 返回生成的音频路径以及文本
return 'answer.wav', None, answer
except Exception as e:
# 处理异常情况
gr.Error("无克隆环境或者无克隆模型权重,无法克隆声音", e)
return None, None, None
五、交流群问题
有没有什么交流群,暂时没有,因为可能没有时间去管理,如果大家感兴趣我会搞一个,已经搞了一个,大家可以交流学习
大家有什么想法可以在视频下方留言或者私信我,我都会看的,如果交流群过期了,可以加我wx:pikachu2biubiu