File size: 18,826 Bytes
bc3753a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
# 问题汇总

<details open=True>
<summary>目录</summary>

- [问题汇总](#问题汇总)
  - [一、下载问题](#一下载问题)
    - [1.1 代码下载](#11-代码下载)
    - [1.2 权重下载](#12-权重下载)
    - [1.3 网络下载](#13-网络下载)
    - [1.4 克隆语音 权重](#14-克隆语音-权重)
  - [二、环境配置问题](#二环境配置问题)
    - [2.1 GPU环境](#21-gpu环境)
    - [2.2 CPU环境](#22-cpu环境)
    - [2.3 显存问题](#23-显存问题)
  - [三、运行问题](#三运行问题)
    - [3.1 文件找不到](#31-文件找不到)
    - [3.2 FFMPEG问题](#32-ffmpeg问题)
    - [3.3 路径问题](#33-路径问题)
    - [3.4 GFPGANer is not defined](#34-gfpganer-is-not-defined)
    - [3.5 Microsoft Visual C++ 14.0 is required](#35-microsoft-visual-c-140-is-required)
    - [3.6 多个服务器部署](#36-多个服务器部署)
    - [3.7 GeminiPro的参数proxy代理设置](#37-geminipro的参数proxy代理设置)
    - [3.8 项目更新方向](#38-项目更新方向)
    - [3.9 version GLIBCXX\_3.4.\* not found](#39-version-glibcxx_34-not-found)
    - [3.10 Gradio Connection errored out](#310-gradio-connection-errored-out)
    - [3.11 gr.Error("无克隆环境或者无克隆模型权重,无法克隆声音", e)](#311-grerror无克隆环境或者无克隆模型权重无法克隆声音-e)
    - [3.12 OSError: \[WinError 127\] 找不到指定的程序](#312-oserror-winerror-127-找不到指定的程序)
    - [3.13 LLM对话步骤出现错误:“对不起,你的请求出错了,请再次尝试。”](#313-llm对话步骤出现错误对不起你的请求出错了请再次尝试)
    - [3.14 启动报错 SadTalker Error: invalid load key, 'v'.](#314-启动报错-sadtalker-error-invalid-load-key-v)
  - [四、功能迭代问题](#四功能迭代问题)
    - [4.1 LLM大模型更新](#41-llm大模型更新)
    - [4.2 克隆语音模型替换](#42-克隆语音模型替换)
  - [五、交流群问题](#五交流群问题)

</details>

## 一、下载问题

### 1.1 代码下载

代码可以从Github下载 [https://github.com/Kedreamix/Linly-Talker](https://github.com/Kedreamix/Linly-Talker),也可以从Gitee下载 [https://gitee.com/kedreamix/Linly-Talker](https://gitee.com/kedreamix/Linly-Talker)



### 1.2 权重下载

提供以下三种渠道下载权重,具体可看README

- [Baidu (百度云盘)](https://pan.baidu.com/s/1eF13O-8wyw4B3MtesctQyg?pwd=linl) (Password: `linl`)
- [huggingface](https://huggingface.co/Kedreamix/Linly-Talker)
- [modelscope](https://www.modelscope.cn/models/Kedreamix/Linly-Talker/summary) 

SadTalker的代码可以从 [Baidu (百度云盘)](https://pan.baidu.com/s/1eF13O-8wyw4B3MtesctQyg?pwd=linl) (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](https://iiitaphyd-my.sharepoint.com/:u:/g/personal/radrabha_m_research_iiit_ac_in/Eb3LEzbfuKlJiR600lQWRxgBIY27JZg80f7V9jtMfbNDaQ?e=TBFBVW) |
| Wav2Lip + GAN                | Slightly inferior lip-sync, but better visual quality | [Link](https://iiitaphyd-my.sharepoint.com/:u:/g/personal/radrabha_m_research_iiit_ac_in/EdjI7bZlgApMqsVoEUUXpLsBxqXbn5z8VTmoxp55YNDcIA?e=n9ljGW) |
| Expert Discriminator         | Weights of the expert discriminator                   | [Link](https://iiitaphyd-my.sharepoint.com/:u:/g/personal/radrabha_m_research_iiit_ac_in/EQRvmiZg-HRAjvI6zqN9eTEBP74KefynCwPWVmF57l-AYA?e=ZRPHKP) |
| Visual Quality Discriminator | Weights of the visual disc trained in a GAN setup     | [Link](https://iiitaphyd-my.sharepoint.com/:u:/g/personal/radrabha_m_research_iiit_ac_in/EQVqH88dTm1HjlK11eNba5gBbn15WMS0B0EZbDBttqrqkg?e=ic0ljo) |

GPT-SoVITS的代码模型可以从以下链接下载,具体可看[https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/cn/README.md#预训练模型](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/cn/README.md#预训练模型)

从 [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) 下载预训练模型,并将它们放置在 `GPT_SoVITS\pretrained_models` 中。

中国地区用户可以进入以下链接并点击“下载副本”下载以上两个模型:

- [GPT-SoVITS Models](https://www.icloud.com.cn/iclouddrive/056y_Xog_HXpALuVUjscIwTtg#GPT-SoVITS_Models)




### 1.3 网络下载

有时候利用代码下载的时候出现网络问题,可能会有网络的问题,比如大模型的`huggingface`下载,我目前已经加上了[Baidu (百度云盘)](https://pan.baidu.com/s/1eF13O-8wyw4B3MtesctQyg?pwd=linl) (Password: `linl`) ,可以考虑下载到本地以后根据文件夹放置,也可以完成对应的功能。

> 如果有什么文件下载有问题,也可以提建议给我,我会上传到百度网盘。



### 1.4 克隆语音 权重

为了保护用户隐私安全,我并未提供克隆语音的权重,因为这可能涉及版权问题,如果大家感兴趣的话,可以尝试使用相同的方法进行训练或者私聊我,感谢大家的理解



## 二、环境配置问题

### 2.1 GPU环境

我使用的是Pytorch 1.12的版本,由于Pytorch大部份是兼容的,所以我建议是使用>=  1.12的版本来进行下载,具体下载的命令可以根据pytorch官网的命令进行设置 [https://pytorch.org/get-started/previous-versions/](https://pytorch.org/get-started/previous-versions/),建议有时候可以使用anaconda来安装,这样方便管理和安装其他都比较方便

```bash
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左右

```bash
conda install -q ffmpeg # ffmpeg==4.2.2
```

第二种就是正常安装`ffmpeg`

```bash
# Linux下载
sudo apt install ffmpeg
```

第三种就是Windows安装`ffmpeg`

Windows安装下载ffmpeg也是很简单的,我这里给一个链接,大家可以试一下 [Windows下安装使用ffmpeg](https://zhuanlan.zhihu.com/p/118362010),直接去官网下载即可[https://ffmpeg.org/](https://ffmpeg.org/)。



### 3.3 路径问题

如果下载的时候没有放对位置,需要在`config.py`设置对应的路径,并且可以修改端口的,默认设置为7860,也可以设置其他的端口,只要不被占用即可。



### 3.4 GFPGANer is not defined

如果在运行的时候出现了这个问题,这是一个增强的模块,这一部分模块如果需要运行,首先要安装`gfpgan`库即可

```bash
pip install gfpgan
```



### 3.5 Microsoft Visual C++ 14.0 is required

如果遇到这个问题,是因为window需要一些依赖,可以参考这篇文章解决一下 [Microsoft Visual C++ 14.0 is required解决方法](https://zhuanlan.zhihu.com/p/126669852)

![](https://picx.zhimg.com/80/v2-d25b289827fc989f419df70f650b44e9.png)



### 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)

```bash
/lib/libstdc++.so.6: version `GLIBCXX_3.4.32' not found
```

我这里说一下我发现的问题,大概我发现有两种方式,第一种就是似乎python版本会解决问题,我用3.10居然不会出现错误,3.9出现了错误

第二个解决方法我发现,实际上这个错误是在`pyopenjtalk`库的问题,我们可以降低他的版本即可,比如这样的方法

```bash
pip install pyopenjtalk==0.3.1
```

我们也可以看看自己机器本身含有的GLIBCXX的版本

```bash
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
```



### 3.10 Gradio Connection errored out

我还没有遇到这种问题,但是有一些人遇到了,感觉在win上不稳定的多一点,这一部分大家可以提点建议,跟我说一下有没有一些通用的解决方案,因为在网上查找的资料感觉都不是很行



### 3.11 gr.Error("无克隆环境或者无克隆模型权重,无法克隆声音", e) 

这属于功能迭代的问题,也就是克隆环境和克隆模型权重,首先注意按照克隆环境

```bash
pip install VITS/requirements.txt
```

再根据[4.2 克隆语音模型替换](https://github.com/Kedreamix/Linly-Talker/blob/main/常见问题汇总.md#42-克隆语音模型替换)去修改模型权重即可



### 3.12 OSError: [WinError 127] 找不到指定的程序

这个错误通常发生在尝试在 Windows 操作系统上运行一个程序或命令时,但是系统找不到指定的可执行文件。一般来说,就是对应库的安装没安装好,可以建议根据出错的库重新安装一遍即可。



### 3.13 LLM对话步骤出现错误:“对不起,你的请求出错了,请再次尝试。” 

大模型兼容出现错误,重新安装对应的库即可解决

```bash
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的内存,理论上大小如下。

```bash
149M	checkpoints/mapping_00109-model.pth.tar
149M	checkpoints/mapping_00229-model.pth.tar
```

所以遇到这个问题,建议重新下载这两个文件即可,提供以下三种渠道下载权重,具体可看`README`

- [Baidu (百度云盘)](https://pan.baidu.com/s/1eF13O-8wyw4B3MtesctQyg?pwd=linl) (Password: `linl`)
- [huggingface](https://huggingface.co/Kedreamix/Linly-Talker)
- [modelscope](https://www.modelscope.cn/models/Kedreamix/Linly-Talker/summary) 

git lfs clone可能有时候会出bug,那就可以直接下载这两个文件即可,如利用wget下载即可,也可以下载后重新上传到`checkpoints`

```bash
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)的中文类模板。这个模板旨在具有灵活性和易于配置,同时为不同的模型提供一致的交互接口。

```python
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行,需要调整一下权重路径,和参考音频,以及参考音频的文本。

```bash
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`

<img src="docs/QR.jpg#pic_center" style="zoom:50%;" />