对于一个医学生来说,经常访问 github 能帮助他开阔计算机视野。前几天在 github 找到了一个 AI 语音合成项目,截止目前已经有了 7.7kstar, 后来知道是 b 站 up 主 “花儿不哭” 大佬和他的团队做的开源免费项目,并在 b 站发了专门的视频。up 讲的比较快我最先也没看懂,推荐看这个视频

这门技术制作出的语音,效果堪比真人,有 AI 毕导解说红警的、有 AI 东雪莲的,我用来做 gal 杂谈视频。效果堪比真人,隔壁毕导的话:我真以为是我在解说!!!我心想我什么时候解说过!!!


先放一键整合包链接:
https://pan.baidu.com/s/1OE5qL0KreO-ASHwm6Zl9gA?pwd=mqpi(度盘要氪超级会员才能满速下载)
https://www.123pan.com/s/5tIqVv-GVRcv.html(可满速下载但是要注册账号),接下来写一写使用方法。


分以下情况:

我是小白,我的电脑显卡配置很好,我用的windows系统

直接下载楼上的一键整合包,按[视频](https://www.bilibili.com/video/BV1P541117yn/?spm_id_from=333.337.search-card.all.click)讲解操作。值得注意的是,在人声和背景音乐分离的步骤,我不清楚是不是bug会报错,如果你也报错的话可以试试这个[在线人声背景音乐分离网站](https://vocalremover.org/zh/)。按着视频讲解走就好

我有一定代码知识,我会用git,我会用github

直接克隆项目地址:
1
git clone https://github.com/RVC-Boss/GPT-SoVITS.git

创建环境

1
2
3
4
conda create -n gpt-sovits python=3.9
conda activate gpt-sovits
pip install -r requirements.txt
conda install ffmpeg

下载以下两个文件到 GPT-SoVITS 项目根目录

https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe

https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe


下载模型

在 GPT_SoVITS\pretrained_models 打开终端输入

1
git clone https://huggingface.co/lj1995/GPT-SoVITS

因为 huggingface 是国外的,所以可能会克隆失败,那么我们换用国内的镜像

1
2
git lfs install
git clone https://www.modelscope.cn/models/AI-ModelScope/GPT-SoVITS

下载完模型后,将模型文件拷到 GPT_SoVITS\pretrained_models 目录下。
接着到 modelscope 下载以下模型

1
2
3
4
5
git clone https://www.modelscope.cn/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch.git

git clone https://www.modelscope.cn/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch.git

git clone https://www.modelscope.cn/iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch.git

将以上模型文件放到 tools/damo_asr/models 目录下。

如果训练的音频数据有杂音的话,还需要下载 UVR5 模型对音频先进行去噪处理,放到 tools/uvr5/uvr5_weights 目录下

1
git clone https://huggingface.co/lj1995/VoiceConversionWebUI

配置好环境和模型后,在终端输入

1
python webui.py

关于报错,如果是 “AssertionError: Torch not compiled with CUDA enabled”,说明装的 Torch 不是 CUDA 版本的,需要重装对应的 CUDA 版本的 pytorch。

如果在离线批量 ASR 时报错 “KeyError: ‘funasr-pipeline is not in the pipelines registry group auto-speech-recognition. Please make sure the correct version of ModelScope library is used.’”,
改 “tools\damo_asr\cmd-asr.py” 的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
path_asr='tools/damo_asr/models/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch'
path_vad='tools/damo_asr/models/speech_fsmn_vad_zh-cn-16k-common-pytorch'
path_punc='tools/damo_asr/models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch'
path_asr=path_asr if os.path.exists(path_asr)else "damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch"
path_vad=path_vad if os.path.exists(path_vad)else "damo/speech_fsmn_vad_zh-cn-16k-common-pytorch"
path_punc=path_punc if os.path.exists(path_punc)else "damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch"
model = AutoModel(model=path_asr,
vad_model=path_vad,
punc_model=path_punc,
#spk_model="damo/speech_campplus_sv_zh-cn_16k-common",
#spk_model_revision="v2.0.0"
)
opt=[]
for name in os.listdir(dir):
try:
text = model.generate(input="%s/%s"%(dir,name),
batch_size_s=300,
hotword='魔搭')
print(f"asr text:{text}")
opt.append("%s/%s|%s|ZH|%s"%(dir,name,opt_name,text))
except:
print(traceback.format_exc())
...

接下来和整合包用法一模一样了(累死我了


# 我的显卡太垃圾了,我想云端训练怎么办?

参考视频
给你们两个镜像:镜像一
镜像二


# 我是 linux 系统用户或者 macOS 用户,想要本地训练

参考官方文档,在 CSDN 逛一逛、知乎逛一逛,b 站逛一逛,写教程的人一大堆。


# 我不管,我就想白嫖,直接玩

拿走不谢:

https://www.modelscope.cn/studios/xzjosh/Bert-VITS2/summary

https://www.modelscope.cn/studios/xzjosh/GPT-SoVITS/summary


训练出的所有的模型请在法律范围内使用。花儿不哭大佬在视频结尾说的一番话,很耐人寻味。思考这种技术,如果落在某讯某飞手里,我们平常人估计很难接触这项技术,使用的话估计也是收费使用的。而开源项目则让这些技术更能服务于大家,而不是掌握在 “少数人手里”—— 开源项目也可以做得很好。背后咬牙切齿的,就是那批赚不到钱、割不到韭菜的人了。