使用GPT-soVITS再4060下2小时训练声音模型以及处理断句带来的声音模糊问题

B站UP主视频
感谢UP主“白菜工厂1145号员工”的“熟肉”,我这篇笔记就不展示整一个训练和推理流程,重点写的4060该注意的一些事项。如何解决断句模糊的问题,在本篇笔记的最末尾。

相关连接:

原项目github
UP主的说明文档

1、训练模型:

这里是在windows11的4060下进行训练测试,其他显卡不一定又参考作用,简单再复述一下流程:

1.1、准备数据集

在前期准备数据的时候,使用了没啥背景声音的MP3音频进行处理,用了UVR进行处理,出去分离人声。

难受一点:最开始跑用的不是GPT-soVITS而是soVITS4.0,发现UVR处理的数据总会带来电音(很像auto-tune开大了,生成的每句话相对于原音频都跑调,但auto-tune被强行修正),我去听了每一条处理之后的数据,听感上都挺不错,但还是有这个问题。后来尝试直接把原始数据进行切片,发现比UVR效果好很多。

使用GPT-soVITS的时候我就没有用UVR进行处理,也没进行降噪处理,直接进行切片

1.2、数据集处理和标注

在这里插入图片描述
只要数据集没有出现重大瑕疵和背景音,直接进行切片,不要使用UVR和降噪处理!
在这里插入图片描述
进行标注就可以。

1.3、确认训练数据

这里选择好路径,确认好训练list文件,就可以了

1.4、正式的训练

1.4.1、sovtis语音权重

在这里插入图片描述
这里batchsize选择2,然后点训练就行,大概是训练了1小时左右

1.4.1、语言模型权重

在这里插入图片描述
batchsize为1,dpo不开,大概也是训练了1小时左右。

2、推理:

下面的音频都放在的github上了,可能访问较慢,下面就选定模型开启推理就OK。
在这里插入图片描述

2.1、参考音频

参考音频一定要有,不然难1、2次就得到你想要的,同时5秒的效果最好。然后选定好语音的语言文本类型。
在这里插入图片描述

原始参考音频—这个音频的原始文本是:哦吼吼鸡皮疙瘩起来了因为因为这位朋友他是很支持我然后他他也是youtuber。

2.2、确认生成的参数

这里呢,通过大量文本的尝试,我觉得“凑四句切一句”,选这个就对文本长度不太敏感。其次的这个topK的选择,这里表示是将文本分成多少段进行生成,并不是越大越好,也不是越小越好。

topK:太大会导致文本被压缩的很厉害,但是很快。选择1就是一次生成完成,但很容易出现重复读。需要一点点尝试。
在这里插入图片描述

2.3、GPT-soVITS推理过程吐字和重复读解决方案

原始文本:

流萤与开拓者聊天时,透露匹诺康尼愿意接纳她,尽管她不属于这里。开拓者怀疑她到底是本地人还是偷渡犯,流萤说她至少现在是本地人,有合法身份。随后,流萤让开拓者凑近,告诉开拓者从二人开始游玩起就有人在跟踪开拓者,为了摆脱跟踪流萤刚才一直在带开拓者绕远路,但对方就没跟丢过。流萤详细描述了跟踪者的具体特征,包括身高、体型、步法,乃至手掌手指的状况以及惯用武器。

输入文本:

流萤与开拓者聊天时,透露匹诺康尼愿意接纳她,尽管她不属于这里。开拓者怀疑她到底是本地人还是偷渡犯,流萤说她至少现在是本地人,有合法身份。随后,流萤让开拓者凑近,告诉开拓者从二人开始游玩起就有人在跟踪开拓者,为了摆脱跟踪流萤刚才一直在带开拓者绕远路,但对方就没跟丢过。流萤详细描述了跟踪者的具体特征,包括身高、体型、步法,乃至手掌手指的状况以及惯用武器。

在这里插入图片描述

topK=3,“凑四句切一句”

生成结果—生成结果在 “随后”,“为了摆脱跟踪”,“但对方就没” 的附近出现吞字和重复

2.3.1、进行文本改造

在这里插入图片描述

将出现吞字的地方,连续换两行,就可以得到完美解决,同时加入连续的标点符号,可以保证每一句结束出现一点尾音,就不会像机器一样突然结束

流萤与开拓者聊天时,透露匹诺康尼愿意接纳她,尽管她不属于这里。开拓者怀疑她到底是本地人还是偷渡犯,流萤说她至少现在是本地人,有合法身份!!!

随后,流萤让开拓者凑近,告诉开拓者从二人开始游玩起就有人在跟踪开拓者!

为了摆脱跟踪流萤刚才一直在带开拓者绕远路,但对方就没跟丢过。

流萤详细描述了跟踪者的具体特征,包括身高、体型、步法,乃至手掌手指的状况以及惯用武器。

完美生成的链接—没有出现吞字,同时有好听的尾音。

### GPT-SoVITS 声音模型简介 GPT-SoVITS 是一种基于深度学习的声音合成工具,能够实现高质量的语音转换和生成功能。该模型融合了多种先进技术,在保持自然度的同时提高了合成效率[^1]。 ### 安装环境准备 为了使用 GPT-SoVITS 模型,需先安装必要的依赖库并配置运行环境: ```bash git clone https://github.com/your-repo/GPT-SoVITS.git cd GPT-SoVITS pip install -r requirements.txt ``` 确保 Python 版本不低于 3.7 并已正确设置 CUDA 环境以便支持 GPU 加速运算。 ### 数据预处理训练或推理前,需要对音频数据集执行标准化处理操作,包括但不限于重采样、分帧以及特征提取等过程。具体命令如下所示: ```python from preprocess import process_data process_data(input_dir='path/to/input', output_dir='path/to/output') ``` 此脚本会读取指定目录下的所有 WAV 文件,并将其转化为适合输入给 SoVITS 的格式。 ### 训练模型 如果打算自定义一套全新的声纹识别系统,则可以利用现有框架来进行针对性训练。以下是启动训练任务的基本指令: ```bash python train.py --config configs/base.yaml \ --train True \ --restore_step 0 ``` 这里 `configs/base.yaml` 存储着超参数设定;而 `--restore_step` 参数用于控制是否继续之前保存过的断点位置继续迭代优化。 ### 推理与应用 完成上述准备工作之后即可调用 API 实现即时语音合成功能。下面给出一段简单的代码片段来展示如何加载预训练权重文件并对任意文本进行发音预测: ```python import torch from text import symbols, text_to_sequence from model import Generator device = 'cuda' if torch.cuda.is_available() else 'cpu' model = Generator(len(symbols)).to(device) checkpoint = torch.load('g_0240000.pth.tar', map_location=device) model.load_state_dict(checkpoint['state_dict']) def synthesize(text): sequence = np.array(text_to_sequence(text))[None, :] with torch.no_grad(): mel_outputs_postnet = model.inference(sequence).float() return mel_outputs_postnet.cpu().numpy() result = synthesize("你好世界") print(result.shape) # 输出 (1, L, M), 其中L表示时间长度,M为梅尔频谱维度数 ``` 这段程序首先实例化了一个生成器对象,接着通过反序列化的方式恢复先前存储下来的网络结构及其对应的参数值。最后定义了一个辅助函数负责接收待转化的文字串作为输入,并返回相应的 Mel-spectrogram 数组形式的结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值