AI翻唱——So-VITS-SVC
SVC说明
Singing Voice Conversion(歌声转换)
{RVC、DDSP-SVC、Diffuision-SVC、So-VITS-SVC}∈SVC
项目地址:So-VITS-SVC 4.1 整合包完全指南
AI克隆的流程
1.克隆音色的音频素材集
2.通过数据集训练出对应的模型
3.需要模仿的音频素材
4.模型推理&转换
5.得到克隆音色的音频素材
克隆要求
1.硬件要求
GPU显存≥4GB、硬盘可用≥50GB
2.素材要求
2.1简单克隆音色
干净人声素材≥30-60s
2.2高质量声音模型
高质量人声素材≥30min
高质量人声素材指的是:不能含有伴奏、他人声音、噪音、混响、和声&延迟效果等
使用UVR5得到干净的人声,建议先准备2h左右的纯人声素材,因为干净人声的质量决定了AI模型的质量。
3.参数配置
显存不足:降低batch_size(=8)、使用梯度累积、或者使用混合精度训练
学习率(learing_rate)建议初始设置为0.0004,根据训练效果调整。
训练步数(total_epoch)建议至少1w步,复杂场景需要更多步数。
模型保存策略/训练中断:设置keep_ckpts=10,保留最新10个模型,支持断点续训。
优化训练
音质不理想:可调整傅立叶变换参数(eg:n_fft=1024)、增加多分辨率STFT损失权重、检查音频预处理是否彻底,或增加训练数据多样性。
使用半正交特征解耦技术提升内容&风格分离效果。
4.扩展应用
实时转换:ASR(自动语音识别)&Vocoder(声码器)实现实时变声
多语言支持:替换音素编码器支持英文、日文等语言。
目录
SVC说明
AI克隆的流程
克隆要求
1.硬件要求
2.素材要求
2.1简单克隆音色
2.2高质量声音模型
3.参数配置
4.扩展应用
具体实操
一、更改显存大小
二、准备数据集
高质量数据集获取
音色素材切片
数据集存放
1.文件夹创建&管理
2.json文件编写
三、训练
1.数据预处理
1.1特征编码器&f0预测算法
1.2扩散模型
1.3响度嵌入&音量增强
1.4TINY训练
1.5响度匹配
1.6CPU线程数
2.超参数设置
3.开始训练
So-VITS模型
4.暂停重训练
扩散模型
聚类&特征训练
四、推理
lz只是记录使用过程,项目版权归原作者所有,相关安装请前往原项目地址获取。
具体实操
用SVC说明中的链接下载安装整合包,解压后双击运行启动webui.bat。
一、更改显存大小
*注意观察console窗口中的说明
需要更改虚拟内存大小看这里,最好也检查一下。
lz电脑为win11系统,不同系统的uu可以选择查询相关设置,细节操作可能不同,但核心思路不会变。
可以参考此文进行设置:Windows 11 虚拟内存怎么设置,大小多少合适? - 系统极客
打开系统设置——win+i,搜索高级系统设置,选择查看高级系统设置。
点击后会弹出系统属性窗口,在高级的窗口分页中进入虚拟内存设置。
RAM值可以通过ctrl+shift+esc调出任务管理器,内存就是RAM(随机存取存储器)值。
点击设置,点击确定之后系统需要重启电脑才能生效。
二、准备数据集
稍等一会会在默认浏览器打开一个Gradio窗口。
高质量数据集获取
音频的分离模块,lz沿用GPT-SoTIVS项目处理好的音频,该项目集成了UVR5AI语音训练——GPT-SoVITS(GSV)-CSDN博客,
当然这个项目也有相关的处理,但是有一定门槛。小白推荐使用UVR5,操作起来会比较简单。
人声分离,大致步骤:分离伴奏(人声&音乐声)→分离和声→去混响、噪声
音色素材切片
本项目也集合了语音切片功能,uu们可以自行摸索,不会很难的。lz由于之前使用过GPT-SoVITS项目,所以沿用了之前准备好的音频切分素材。详细项目说明:AI语音训练——GPT-SoVITS(GSV)-CSDN博客
数据集存放
在打开的webUI中找到训练这个功能页,可以看到作者提示我们将数据集放在dataset_raw文件夹下
回到本地文件管理——Win+E,在项目文件夹中找到dataset_raw文件夹
数据集的管理分为2个子模块
1.文件夹创建&管理
如果数据集文件不符合要求,在识别数据集时会出现提示
一个简单的批量更改数据集的方法
只需要更改其中一个文件,其余文件会自动更改为xx(num)的形式。该方法被原项目作者委婉地驳回了,hhh(苦笑.jpg)
于是参考csdn上一位大佬的文件夹重命名方法:两种方法实现Windows系统下批量重命名文件-CSDN博客
具体操作步骤
打开目标数据集所在位置,在搜索框输入cmd
在console窗口输入
dir/b>rename.csv
以下解释来源于D老师
这个命令由三部分组成:`dir`、`/b` 和 `> rename.csv`。
1. dir:这是Windows命令提示符中用于列出目录内容的命令(类似于Linux中的ls)。默认情况下,它会显示当前目录下的文件和子目录的详细信息,包括文件大小、最后修改日期和时间等。
2. /b:这是`dir`命令的一个选项(开关),表示“bare format”(简洁格式)。使用这个选项时,`dir`命令只显示文件和目录的名称(以及文件扩展名),而不显示其他详细信息(如大小、日期等)。同时,它也不会显示摘要信息(如总文件数等)。每行一个文件或目录名。 3. > rename.csv:这是重定向操作符。`>`表示将命令的标准输出重定向到一个文件中。这里,命令的输出将被写入到名为`rename.csv`的文件中。如果该文件不存在,则创建它;如果已存在,则覆盖其内容。
因此,整个命令的作用是:将当前目录下的文件的名称(仅名称)以简洁格式输出,并保存到名为`rename.csv`的文件中。
举个例子:
- 假设当前目录下有如下文件:a.txt、b.doc、c.jpg。 -
执行`dir /b > rename.csv`后,`rename.csv`文件的内容将是:
a.txt
b.doc
c.jpg
注意:
- 这个命令不会递归子目录(即不会列出子目录中的文件)。如果需要递归,可以加上`/s`选项,例如:`dir /b /s > files.csv`。
- 由于使用了重定向,所以不会在命令提示符窗口显示任何内容,所有输出都进了文件。
- 如果当前目录下有子目录,那么子目录的名字也会被列出(但子目录内的文件不会,除非使用`/s`)。
="ren "&""""&A1&""""&" "&B1 //如果B列中没有空格键
="ren "&""""&A1&""""&" "&""""&B1&"""" //如果B列(重命名名称中)中有空格键
以下解释源于D老师
Excel公式:`="ren "&""""&A2&""""&" "&B2`
这个公式的目的是生成一个字符串,用于重命名文件的命令行命令(在Windows中)。
逐步分解这个公式:
1. `="ren "`:这是一个字符串常量,表示命令"ren "(注意后面有一个空格),ren是Windows的重命名命令,全称为rename。
2. `&`:这是Excel中的连接运算符,用于连接字符串。
3. `""""`:这里使用了四个双引号。在Excel公式中,双引号用于表示字符串的开始和结束。 如果要在字符串中显示一个双引号,需要用两个双引号来表示。
因此:
- 第一个双引号:表示字符串的开始。
- 紧接着的两个双引号:表示一个双引号字符(作为字符串内容)。
- 最后一个双引号:表示字符串结束。
- 所以,`""""`实际上表示一个双引号字符(")。
4. `&A2`:连接单元格A2中的内容。
5. `&""""`:同上,再次连接一个双引号字符。
6. `&" "`:连接一个空格。
7. `&B2`:连接单元格B2中的内容。
因此,整个公式的作用是生成如下格式的字符串: ren "原文件名" 新文件名
*注意:在Windows命令行中,如果文件名包含空格,我们需要用双引号将原文件名括起来,以避免歧义。 而新文件名通常不需要双引号,除非它也包含空格(但这里公式没有给新文件名加双引号)。
如果B列(也就是重命名后的文件)中含有空格键
如果B列中的文件夹没有空格键
注意删除rename.csv所在行,复制C列内容
在该目录下建一个.txt格式的文件夹,用文本编辑器将其打开,将C列中的内容复制进去并保存。
保存好后关闭.txt文件,将.txt文件格式更改为.bat格式
双击运行.bat文件,大功告成!
2.json文件编写
新建一个txt文件,重命名时将文件类型更改为json即可
创建好后打开这个.json文件,貌似原作者给出的.json文件的说明有一些小问题,下面给出一个lz的可运行的文件内容,如果仍然识别不出来,可以去问问D老师,下图也有提问说明。
{"n_speakers": 2,"spk": {"Caleb": 0,"Robin": 1}
}
可以向D老师提问,稍微理解一下D老师的话就能够get.json文件的意思了。
文件正确识别到文件夹后,不出意外界面应该是这样。
三、训练
1.数据预处理
1.1特征编码器&f0预测算法
详细说明可以参考原作者的说明文档
lz理解的编码器是一个翻译官,将我们听得懂的声音翻译成模型能够听得懂的声音,类似comfyUI的VAE。f0预测算法就相当于一个音乐教师,帮助目标音色完成对歌曲的实现。
1.2扩散模型
下图来源于原作者说明文档
详细信息可以前去阅读原作者说明文档或者源代码
扩散模型+So-VITS模型=浅扩散模型
可以只使用一个模型进行推理,也可以使用完整的浅扩散推理,浅扩散推理的好处在于可以显著改善电音、底噪等问题。
1.3响度嵌入&音量增强
调节音量,不开会导致输出的响度非常高,损坏音质。lz理解是:开启后以歌曲作为响度信息,将数据集的响度匹配到歌曲的响度。
1.4TINY训练
实时转换,还在开发中,不建议训练
1.5响度匹配
调整数据集中的音量大小不同的片段,使其在听感上达到一致响度。
1.6CPU线程数
lz也不是专家,如有谬误欢迎指正
简单梳理一下显存的分类以及GPU等信息。
查看方法
任务管理器——Ctrl+Shift+Esc
数据预处理需要较长等待时间,耐心等待。
2.超参数设置
此处关于超参数的设置,lz有参考该视频中关于这部分的介绍:AI翻唱保姆级教程_哔哩哔哩_bilibili
下图页面基本不需要调整,是项目根据设备填写的值,建议保持。
设置好各个超参数后点击上图蓝色框图1,下部输出信息会显示“成功保存默认配置”,再次点击2会显示“配置文件写入完成”字样。
3.开始训练
So-VITS模型
这里注意观察console窗口的输出。需要注意一下是否有报错或者训练停止的情况 ,训练过程会非常慢。可以看到z下面的训练每一次小10分钟左右。耐心等待。但如果uu显卡实力够硬,那当我没说。
训练过程不会自主停止,觉得差不多后,大概1w-2w之间,终止训练过程——Ctrl+C。
lz原来训练LoRA时有接触到损失函数:LoRA训练-理论基础-CSDN博客
4.暂停重训练
如果需要中途停止训练——Ctrl+C
想要继续进行上一次的训练,直接点击继续上一次的训练进度即可。也就是说如果上一次训练终止离开后,回到页面后直接点击继续上一次的训练进度即可。
需要注意2点
1.不需要重新预处理和写入。
2.打开的是新的console窗口。
可以在模型存放的文件夹中的train.log中查看训练的日志。模型大概在1w步+会产生稳定的模型
可以通过loss值筛选较为满意的模型,如果不满意可以选择继续训练。loss值并不是会一直下降的,我们需要筛选出在下降区域内较为稳定的模型,模型的训练也不是越多步越好,及时选择合适的模型何很重要。
扩散模型
扩散模型的训练可以根据需要选择性进行训练,训练步数也建议在1w-2w之间。扩撒模型训练起来会比So-VITS模型训练起来快得多
聚类&特征训练
四、推理
加载模型
开始吟唱(bushi
事情困难到了极点,那意味着转机就要到了。——来点鸡汤8
以上end