当前位置: 首页 > news >正文

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 

http://www.dtcms.com/a/273309.html

相关文章:

  • ubuntu virtual box全屏
  • 无人机三叶螺旋桨概述
  • kail相关
  • Linux下PCIe子系统(二)——PCIe子系统框架详解
  • 算法练习5-原地移除数组中所有的元素
  • 多元函数的链式法则:从单变量到高维的推广
  • 无人设备遥控器之无线电频率篇
  • Java HashMap已存在的值是否覆盖
  • 全链智造铸丰碑 全球布局启新程 —— 河北华创测控技术有限公司领航测控产业新高度
  • python学习打卡:DAY 29 复习日:类的装饰器
  • 快捷键——VsCode
  • msf复现“永恒之蓝”
  • 在 node 端执行打开一个新的 chrome 并且跳转到指定 url
  • 力扣热门算法题 136.只出现一次的数字,139.单词拆分,141.环形链表
  • Docker——容器文件操作
  • 实习第一个小需求样式问题总结
  • 八猴渲染器三维场景实时预览软件 Marmoset Toolbag 5.02b1 Win
  • 20250710-day11
  • 如何选择合适的ai降重工具?七个实用的ai查重网站
  • MyBatis插件机制揭秘:从拦截器开发到分页插件实战
  • 「莫尔物理新范式」普林斯顿马普所合作Nature论文:SnSe₂/ZrS₂扭曲双层实现M点能谷调控与拓扑新效应
  • 安装VMware详细步骤
  • 基于模糊控制及BP神经网络开关磁阻电机的matlab仿真
  • Python-函数进阶
  • 国内如何考取Oracle大师
  • F-GNN的新型检测框架:随机森林增强图神经网络
  • JDK动态代理:深入解析Java动态代理的核心实现
  • qwen3、gemma3 GPRO强化训练案例
  • spring-ai agent概念
  • 6.4 BL2到BL31/BL33的切换