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

拓展:什么是JupyterLab

WebUI 所有公开URL均为 https://*******.gradio.live

点击可以在新窗口打开,GPT-SoVITS WebUI 界面如下:


3. 处理数据


3.1 准备原始音频文件

为了更直观的演示,这里作个音频数据处理示例:

一般来说,纪录片30分钟音频就可以训练出不错结果,同时也会加快训练速度。这里截取52分钟音频中的30分钟,原声如下:

中国-第二季-第七集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目录,找到音频文件下载试听。

中国-第二季-第七集30分钟配音纯人声

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目录中
    • .ckpt后缀文件放在/GPT-SoVITS/GPT_weights目录中

启动 GPT-SoVITS WebUI,在1-GPT-SoVITS-TTS选项1C-推理中,实验/模型名可以随便填写,选择相应模型,接着勾选是否开启TTS推理WebUI

推理WebUI启动后,上传参考音频参考音频文本,即可推理合成语音。


THEAI.DO » GPT-SoVITS 使用教程(训练《中国》纪录片配音)

发表回复