GPT-SoVITS 使用教程(训练《中国》纪录片配音)
本教程由 THEAI 教程 Rainy 原创,作者微信号:cntheai。
声明:纪录片音频训练只作为教程所用,相关训练模型不会分享,也不会进行其它用途。
1. GPT-SoVITS介绍
Github 项目地址:https://github.com/RVC-Boss/GPT-SoVITS
GPT-SoVITS 是一个强大的少样本语音转换与语音合成工具。它具有以下功能:
-
- 零样本文本到语音(TTS): 输入 5 秒的声音样本,即刻体验文本到语音转换。
-
- 少样本 TTS: 仅需 1 分钟的训练数据即可微调模型,提升声音相似度和真实感。
-
- 跨语言支持: 支持与训练数据集不同语言的推理,目前支持英语、日语和中文。
-
- WebUI 工具: 集成工具包括声音伴奏分离、自动训练集分割、中文自动语音识别(ASR)和文本标注,协助初学者创建训练数据集和 GPT/SoVITS 模型。
对于显卡是 RTX 3080 显卡以上用户,建议直接使用 Windows 系统整合包 运行;对于显卡是 RTX 3080 显卡以下用户,推荐租用 AutoDL算力云 显卡去训练模型,训练完成后,将模型下载到本地用 Windows/macOS 系统计算机本地运行即可。
2. 创建开发环境
AutoDL 网址:https://www.autodl.com/
训练费用预估花费为几块钱,充值时可以选择其他金额
进行小额充值,接着选择算力市场
租用显卡。 建议:追求性能选择 RTX 4090 显卡,追求性价比建择 RTX 3080 Ti 显卡,不建议选择 RTX 4090D 显卡。
下面页面,镜像
选择社区镜像
,在 请输入Github项目搜索镜像 中搜索:
GPT-SoVITS
搜索后选择 用户RVC-Boss 上传的镜像,镜像版本选择 v9,后点击立即创建
。
等待开机后,选择JupyterLab
,打开后在终端中输入以下代码:
echo {}> ~/GPT-SoVITS/i18n/locale/en_US.json && source activate GPTSoVits && cd ~/GPT-SoVITS/ && python webui.py
WebUI 所有公开URL均为 https://*******.gradio.live 。
点击可以在新窗口打开,GPT-SoVITS WebUI 界面如下:
3. 处理数据
3.1 准备原始音频文件
为了更直观的演示,这里作个音频数据处理示例:
-
- 选择人文历史纪录片《中国-第二季-第七集》周涛的配音作为训练音频。
-
- 快速下载音频可以借助谷歌浏览器 哔哩哔哩 Downloader 这个插件。
一般来说,纪录片30分钟音频就可以训练出不错结果,同时也会加快训练速度。这里截取52分钟音频中的30分钟,原声如下:
3.2 使用UVR5提取人声
UVR5 是一款强大的伴奏人声分离工具,GPT-SoVITS 作了这款工具的集成,在 GPT-SoVITS WebUI 0-前置数据集获取工具
选项中勾选开启 UVR-WebUI。
步骤1:启动 UVR-WebUI
勾选后,可以在JupyterLab
终端中看运行日志,找到相关链接。
步骤2:新建文件夹存放非人声音频
进入/GPT-SoVITS/output
目录,新建noise_opt
文件夹,用于存放非人声视频。
步骤3:上传音频进行处理
上传原始音频文件后,模型
选择HP2_all_vocals
,指定输出非主人声文件夹
修改为output/noise_opt
,导出格式
选择mp3
。各项参数设置完成后开始转换,这个时候可以返回JupyterLab
终端查看运行状态。成功分离音频如下图所示:
分离后可以进入/GPT-SoVITS/output/uvr5_opt
目录,找到音频文件下载试听。
3.3 切分人声音频
返回 GPT-SoVITS WebUI 0-前置数据集获取工具
选项中,不勾选是否开启UVR5-WebUI
。
音频自动切分输入路径,可文件可文件夹:
/root/GPT-SoVITS/output/uvr5_opt
切分后的子音频的输出根目录:
/root/GPT-SoVITS/output/slicer_opt
其余参数选择默认,开启语音切割。
切割完成后,可以在/GPT-SoVITS/output/slicer_opt
看见分割后的大量音频文件。
3.4 音频打标
3.4.1 开始标注
在 GPT-SoVITS WebUI 0-前置数据集获取工具
选项中,使用中文批量离线ASR工具
进行标注。
输入文件夹路径:
/root/GPT-SoVITS/output/slicer_opt
输出文件夹路径:
/root/GPT-SoVITS/output/asr_opt
其余设置使用默认设置,开启离线批量ASR。
完成后,可以在/GPT-SoVITS/output/asr_opt
看见标注文件。
3.4.2 校对标注
在 GPT-SoVITS WebUI 0-前置数据集获取工具
选项中,使用语音文本校对标注工具
校对标注。
结合标注完成后的文件,.list标注文件的路径为:
/root/GPT-SoVITS/output/asr_opt/slicer_opt.list
设置路径后勾选是否开启打标WebUI
,接着返回JupyterLab
终端找到链接启动打标WebUI。
打开标记页面后,可以对音频进行试听,对应文字进行修改,也可以对音频进行合并、删除等操作。
需要注意的是:每页音频校对完毕后都需要点击Submit Text
进行保存,然后点击Next Index
方可进行下一页标注。全部标注完成后,一定要点击Save File
后,再关闭页面。
4. 训练数据
4.1 训练集格式化
在 GPT-SoVITS WebUI 1-GPT-SoVITS-TTS
选项中,自定义实验/模型名
。
首先在1A-训练集格式化工具
中设置以下参数。
文本标注文件:
/root/GPT-SoVITS/output/asr_opt/slicer_opt.list
训练集音频文件目录:
/root/GPT-SoVITS/output/slicer_opt
其余参数使用默认设置,设置完成后开启一键三连,完成后会提示“一键三连进程结束”。
4.2 微调训练
数据集格式化后,就可以开启微调训练了。
在 GPT-SoVITS WebUI 1-GPT-SoVITS-TTS
选项1B-微调训练
中,直接使用默认设置。
首先点击开启SoVITS训练
。
为确认训练正常开启,可以在JupyterLab
终端中查看进程。
SoVITS训练完成后,接着开启GPT训练
,同样可以在JupyterLab
终端中查看进程。
完成会会提示“GPT训练完成”,这样音频训练就全部完成了。
为了验证模型正常生成,可以在JupyterLab
中/GPT-SoVITS/SoVITS_weights
和/GPT-SoVITS/GPT_weights
这两个目录是否有模型文件生成。
5. 推理合成
5.1 启动推理WebUI
在 GPT-SoVITS WebUI 1-GPT-SoVITS-TTS
选项1C-推理
中,首先点击刷新模型路径
,选择训练轮数高的模型,接着勾选是否开启TTS推理WebUI
。
接着返回JupyterLab
终端找到链接启动TTS推理WebUI。
启动后WebUI页面如下:
5.2 上传参考音频
上传参考音频
很重要,因为它会引导学习语速和语气,建议选择数据集中的音频,时长为5秒。参考音频文本
必须要填写,包括填写标点符号。下面是个示例:
5.3 音频合成输出
上传参考音频后,可以在需要合成的文本
中输入文本进行语音合成,下面输入以下文本:
到了周文王的手里,周族蒸蒸日上,综合实力突飞猛进,周族日渐强大,但仍坚持韬光养晦以取得宗主国的信任,商王纣封周文王为西伯,使之成为商西的一方之主,并委以征伐大权,这正合文王之意,于是周文王大手一挥,剑锋所指,商的若干附庸国立即灰飞烟灭,他先是兵进西北,相继征服北方的犬戎、密须等方国。
可以利用上面的配置生成音频,生成后可以点击箭头处下载音频,音频预览如下:
目前,合成输出的音频可以使中文、日文、英文,也可以是中英混合、日英混合、中日混合和中日英混合。
5.4 采样参数解析
top_k,top_p 和 temperature 默认参数如上,建议使用默认参数即可。
可以简单的认为,这三个数值越大随机性越大。如果要尝试进行调整,建议 top_k 值保持为5不变,top_p 和 temperature 值在0.5~1之间调整。
拓展:Temperature&Top-k&Top-p之间的关系
5.5 文本切分建议
太长的文本合成出来效果不一定好,所以太长建议使用文本切分工具
先切。合成会根据文本的换行分开合成再拼起来。如果选择不切,即使使用的是 RTX 4090 显卡,超过1000字的文本后续也会胡言乱语。
建议选择按中文句号。切
的方法,这样切的好处是想让文字停顿稍久就用”中文句号。“,想让文字停顿稍短就用”中文逗号,“。比如要切分这段文字:
话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,楚、汉分争,又并入于汉。汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,传至献帝,遂分为三国。推其致乱之由,殆始于桓、灵二帝。桓帝禁锢善类,崇信宦官。及桓帝崩,灵帝即位,大将军窦武、太傅陈蕃,共相辅佐。时有宦官曹节等弄权,窦武、陈蕃谋诛之,机事不密,反为所害,中涓自此愈横。
选择选择按中文句号。切
,切分后如下:
话说天下大势,分久必合,合久必分
周末七国分争,并入于秦
及秦灭之后,楚、汉分争,又并入于汉
汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,传至献帝,遂分为三国
推其致乱之由,殆始于桓、灵二帝
桓帝禁锢善类,崇信宦官
及桓帝崩,灵帝即位,大将军窦武、太傅陈蕃,共相辅佐
时有宦官曹节等弄权,窦武、陈蕃谋诛之,机事不密,反为所害,中涓自此愈横
需要注意的是:选择按中文句号。切
这种方法,切勿一大段句子全是逗号没有一个句号,建议最多50字就要有个句号,否则切分后一段文字过长会造成合成效果不佳。
6. 本地运行模型
6.1 训练模型下载
在JupyterLab
中/GPT-SoVITS/SoVITS_weights
和/GPT-SoVITS/GPT_weights
点击相关模型下载即可,这两个文件夹的模型都需要下载,建议下载训练轮数多的模型。
6.2 Windows 系统整合包下载
中国地区用户可以通过点击链接并选择“下载副本”来下载 0206fix3 整合包 或 0217fix2 整合包。整合下载后解压后,点击go-webui.bat
即可启动(切勿使用管理员身份运行)。
注:0206版本的推理速度更快,0217新版的推理效果更好,可按需选择
启动后,cmd 窗口不要关闭。
稍等片刻会自动打开链接为 http://localhost:9874/ 的网页运行 GPT-SoVITS WebUI。
6.3 加载训练模型
将前面在在JupyterLab
中下载的模型,对应放在 Windows 系统对应目录。
-
- .pth后缀文件放在
/GPT-SoVITS/SoVITS_weights
目录中
- .pth后缀文件放在
-
- .ckpt后缀文件放在
/GPT-SoVITS/GPT_weights
目录中
- .ckpt后缀文件放在
启动 GPT-SoVITS WebUI,在1-GPT-SoVITS-TTS
选项1C-推理
中,实验/模型名
可以随便填写,选择相应模型,接着勾选是否开启TTS推理WebUI
。
推理WebUI启动后,上传参考音频
和参考音频文本
,即可推理合成语音。