so-vits-svc:AI翻唱,语音克隆

img

前言

这个项目是为了让开发者最喜欢的动画角色唱歌而开发的,任何涉及真人的东西都与开发者的意图背道而驰。

项目地址:https://github.com/svc-develop-team/so-vits-svc/blob/4.1-Stable/README_zh_CN.md

安装

可以自行配置,应该也不难

img

也可以下载配置好的百度网盘:链接: https://pan.baidu.com/s/1iAhrkvlWry3gIe_EnpB7NQ

提取码: 2ftj

数据预处理

首先准备1小时以上的歌声文件,最好是WAV格式

来带下载的文件UVR5目录,解压安装UVR5,把模型文件放入model目录下,覆盖即可

img

img

UVR5可以对语音文件进行伴奏分离,去除和声,去除混响回声,打开UVR5

img

把音频文件输入输出目录,和模型类型,具体模型,勾选GPU conversion,WAV,基本选择这些就可以,其他默认,或者微调

提取人声的顺序流程是分离伴奏——去除和声——去除混响和回声

分离伴奏-MDX_Net_Models或Demucs_Models

分离伴奏可以从以下方法任选其一:

  1. (苹果用户专享)使用 Ripple 分离人声
  2. 剪映专业版+录屏(直接导出要开VIP,录屏可以白嫖,而且没有音质损失)
  3. 使用 UVR5 - MDX23C-InstVoc HQ 或v3|UVR_Model_1模型

其中前2个使用的是字节跳动的闭源技术内核,因此可能需要收费。第三个方法是目前最强的开源分离模型,但效果可能没有前2个好。

去除和声-VR_Models

使用 UVR5 的去除和声模型(以下三个任选其一)

    1. UVR-BVE-4B_SN-44100-1 (Instrumental Only)
    2. 5_HP_Karaoke-UVR (Vocals Only) (比6激进,有可能会扣过头)
    3. 6_HP_Karaoke-UVR (Vocals Only)(没有5激进)

去除混响和回声-VR_Models

使用 UVR5 的去混响模型(以下三个任选其一)

    1. UVR-De-Echo-Normal选No Echo Only(轻度混响)
    2. UVR-De-Echo-Aggressive选No Echo Only(重度混响)
    3. UVR-De-Echo-Dereverb选No Echo Only(遇到鸟之诗这种变态的混响可以用)

使用 UVR5 需要确保 UVR 版本在 5.6.0 以上,如果UVR里面没上述模型,点小扳手,去 Download Center 里面下载模型(请自备科学上网,否则会下载失败)

音频切分

之前用的一直是这个,对比了webui自带的,感觉对空白音频去除的更干净

https://github.com/flutydeer/audio-slicer

点击最下面webui bat文件来到webui,tensorboard是查看训练日志信息的img

输入之前去伴奏,去回声,去混响,处理好的音频文件,输入路径,和输出路径,加载后切分

img

之后把切分的音频文件放入data_raw目录下,一个文件夹代表一个人声

img

img

训练

点击识别训练集,数据预处理,重新生成配置文件

img

img

参数选择:基本调一下保存的模型个数,没多少步保存一次模型,一轮步数=音频数量/批量大小

然后保存设置,导入配置文件

img

关于预训练模型

预训练模型(底模)是指使用大量高质量数据集训练得来的模型。使用底模辅助你的训练将可以极大增强模型的性能并大幅减少训练难度。整合包会根据你所选择的编码器、网络结构在训练时自动加载底模。目前整合包内含有以下底模:

标准底模响度嵌入响度嵌入 + TINY完整扩散100 步浅扩散
Vec768L12
Vec256L9
hubertsoft
whisper-ppg

关于浅扩散步数(训练)

在 v2.3.6 之前的版本,浅扩散模型是训练完整 1000 步深度的,但在大多数情况下,推理时很少会用到完整深度扩散。可以只训练一个特定步数深度的浅扩散模型(“100步深度”,注意不等同训练时只训练100步,和训练步数是完全不同的概念),由此可以进一步加快浅扩散的训练速度。在理论和实践测试中,只训练部分步数浅扩散的模型表现也比纯扩散模型更好。但代价是在推理时无法进行超过该步数的浅扩散推理。

关于聚类模型

聚类方案可以减小音色泄漏,使得模型训练出来更像目标的音色(但其实不是特别明显),但是单纯的聚类方案会降低模型的咬字(会口齿不清,这个很明显)。本模型采用了融合的方式,可以线性控制聚类方案与非聚类方案的占比,也就是可以手动在"像目标音色" 和 “咬字清晰” 之间调整比例,找到合适的折中点,使用聚类只需要额外训练一个聚类模型,虽然效果比较有限,但训练成本也比较低。

然后依次训练模型

img

什么时候停止训练?

可以通过cmd命令行查看loss值,如果一直无法下降可以ctrl c停止,或者tensorboard是查看训练日志信息来看什么时候停止

第一个是必须有的,至于扩散和聚类模型是可选的

推理

这里拿之前比较火的孙燕姿语音试试

img

img

如果是克隆歌声,声音数据必须是干声,然后音频转换,

f0预测器可以选crepe或rmvpe,fcpe,具体看效果

在UVR5可以对语音文件进行伴奏分离,去除和声,去除混响回声,得干声数据,音频转换后再使用剪辑软件把之前分离的伴奏,混响回声合并(和声感觉加上去有点像杂音)

如果转换识别失败,可能输入音频时长过长,最好不超过1分半,

不要用切分工具切分,它会把空白也去掉了

img

自动 f0 预测

基本上是一个自动变调功能,可以将模型音高匹配到推理源音高,用于说话声音转换时可以打开,能够更好匹配音调。

f0 预测器

在推理时必须选择一个 f0 预测算法。以下是各个预测器算法在推理时的优缺点:

预测器优点缺点
pm速度快,占用低容易出现哑音
crepe基本不会出现哑音显存占用高,自带均值滤波,因此可能会出现跑调
dio-可能跑调
harvest低音部分有更好表现其他音域就不如别的算法了
rmvpe六边形战士,目前最完美的预测器几乎没有缺点(极端长低音可能会出错)
fcpeSVC 开发组自研,目前最快的预测器,且有不输 crepe 的准确度-

关于浅扩散步数(推理)

完整的高斯扩散为 1000 步,当浅扩散步数达到 1000 步时,此时的输出结果完全是扩散模型的输出结果,So-VITS 模型将被抑制。浅扩散步数越高,越接近扩散模型输出的结果。如果你只是想用浅扩散去除电音底噪,尽可能保留 So-VITS 模型的音色,浅扩散步数可以设定为 30-50.

最后看看效果,

Adobe Audition或剪映合并

img

孙燕姿演唱最后一页

链接

从外部迁移模型(放入对应文件夹)

推理 (Inference) 是指将输入源音频通过 So-VITS 模型转换为目标音色的过程。因此,执行 So-VITS 的推理过程,你必须拥有:

名称文件后缀存放目录描述
So-VITS 模型.pth.\logs\44k推理所必须的神经网络模型
配置文件.json.\configs存放模型参数的配置文件,必须与模型一一对应

除此之外,还有一些文件属于可选项,能够执行推理的扩展功能。即使缺失也可以正常执行推理:

名称文件后缀存放目录描述
聚类 (Kmeans) 模型.pt.\logs\44k执行混合聚类方案必须的模型
扩散模型.pt.\logs\44k\diffusion执行浅扩散推理必须的模型
扩散模型配置文件.yaml.\configs存放扩散模型参数的配置文件,必须与模型一一对应
特征索引模型.pkl.\logs\44k执行混合特征索引必须的模型

模型兼容(如果有问题修改)

在configs文件夹内用文本编辑器打开模型的对应配置文件,找到 "n_speakers" 项,在这一行最后添加一个英文逗号(“,”),然后添加新的两行:

"speech_encoder": "vec256l9",  //如果是Vec768模型,这一项改为"vec768l12"
"speaker_embedding": false

⚠️请注意 “speech_encoder” 行后有一个英文逗号,而 “speaker_embedding” 后没有英文逗号。

简单个人娱乐!切勿作恶!后果自行承担!

参考:https://www.yuque.com/umoubuton/ueupp5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/12802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java05基础 数组

Java05数组 一、数组 数组指的是一种容器,可以用来存储同种数据类型的多个值。 1、数组的静态初始化 初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程 1.1 数组定义格式 //格式一 数据类型[] 数组名 …

git 拉取指定目录

指令方式 打开 git 自带的Git Bash 工具 以拉取github中 fastjson 的 /src/test/java/oracle/sql/ 目录为例 1.创建文件夹和git 初始化 cd D:/Program\ Files mkdir fastjson cd fastjson git init 2.设置允许克隆子目录 git config core.sparsecheckout true 3.添加远程…

企业大模型如何成为自己数据的“百科全书”?

作者 | 郭炜 编辑 | Debra Chen 在当今的商业环境中,大数据的管理和应用已经成为企业决策和运营的核心组成部分。然而,随着数据量的爆炸性增长,如何有效利用这些数据成为了一个普遍的挑战。 本文将探讨大数据架构、大模型的集成&#xff0…

Google I/O 2024:探索未来AI技术的无限可能

近日,Google I/O 2024大会圆满落幕,带给我们一场关于人工智能的盛宴。在这场大会上,Google推出了一系列令人激动的AI新功能和工具,让我们得以一窥未来的科技发展。今天,就让我来为大家总结一下这些亮点吧! …

你是学会了还是学废了:Elasticsearch 7 集群拷贝到其它环境如何重置密码

欢迎您关注我的公众号【尚雷的驿站】 公众号:尚雷的驿站 CSDN :https://blog.csdn.net/shlei5580 墨天轮:https://www.modb.pro/u/2436 PGFans:https://www.pgfans.cn/user/home?userId4159 前言 本文描述了将生产ES集群打包拷贝…

知识图谱 | 语义网络写入图形数据库(含jdk和neo4j的安装过程)

Hi,大家好,我是半亩花海。本文主要介绍如何使用 Neo4j 图数据库呈现语义网络,并通过 Python 将语义网络的数据写入数据库。具体步骤包括识别知识中的节点和关系,将其转化为图数据库的节点和边,最后通过代码实现数据的写…

css案例 tab上下滚动,左右滚动

效果图&#xff1a; 完整代码&#xff1a; <template><view class"content"><view class"content-item"><view class"content-title"><h4>美食热搜</h4><ul><li>火鸡面</li><li>糖…

听劝!普通人千万别随意入门网络安全

一、什么是网络安全 网络安全是一种综合性的概念&#xff0c;涵盖了保护计算机系统、网络基础设施和数据免受未经授权的访问、攻击、损害或盗窃的一系列措施和技术。经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”…

图文教程 | 2024年IDEA安装使用、破解教程,JDK简易下载方法

前言 &#x1f4e2;博客主页&#xff1a;程序源⠀-CSDN博客 &#x1f4e2;欢迎点赞&#x1f44d;收藏⭐留言&#x1f4dd;如有错误敬请指正&#xff01; 目录 一、IDEA安装 二、激活 三、JDK安装 四、JDK环境配置 五、验证 一、IDEA安装 进入官网下载&#xff1a; Other…

命令行中,Python 想使用本地环境,但总是显示为Anaconda的虚拟环境

电脑环境 Python 本地环境&#xff08;Python3.9.5&#xff09;Anaconda 虚拟环境&#xff08;Python3.8.8&#xff09; 遇到的问题 在cmd 中&#xff0c;我想在本地环境使用 Python、pip &#xff0c;但它却是一直识别成Anaconda的虚拟环境。 解决方法 环境变量配置中&am…

Go Gin使用JWT实现认证机制

什么是JWT JWT是JSON Web Token的缩写,是一种跨域认证的解决方案。 使用JWT解决什么问题 传统的登录认证的实现,依赖客户端浏览器的cookie和服务器的session,这种实现登录的方式有很大的局限性。 对于部署在单台服务器的应用来说,使用cookie+session登录认证的方案尚…

✅什么是时间轮?

一、问题解析 时间轮算法&#xff08;Time Wheel Algorithm&#xff09;是一种用于处理定时任务和调度的常见算法。 时间轮算法主要需要定义一个时间轮盘&#xff0c;在一个时间轮盘中划分出多个槽位&#xff0c;每个槽位表示一个时间段&#xff0c;这个段可以是秒级、分钟级、…

数据结构(十五)----排序算法(2)

目录 一.选择排序 1.简单选择排序 2.堆排序 •建立大根堆 •基于大根堆进行排序 堆排序算法效率&#xff1a; 堆排序算法稳定性&#xff1a; 3.堆的插入和删除 •在堆中插入新元素 •在堆中删除元素 二.归并排序 归并排序算法效率&#xff1a; 归并排序算法的稳定…

Reverst:基于QUIC协议和HTTP3的反向隧道工具

关于Reverst Reverst是一款功能强大的反向隧道工具&#xff0c;Reverst由一个具备负载均衡功能的反向隧道服务器和一个服务器-客户端库组成&#xff0c;该工具使用Go语言开发&#xff0c;基于QUIC和HTTP/3实现其功能。 关于QUIC和HTTP/3 QUIC&#xff0c;即快速UDP互联网连接…

队列的实现与OJ题目解析

"不是你变优秀了, 那个人就会喜欢你." 文章索引 前言1. 什么是队列2. 队列的实现3. OJ题目解析4. 总结 前言 感情可以培养是个伪命题. 如果有足够多的时间和爱, 就可以让另一个人爱上你的话, 那谁和谁都可以相爱了. 爱情之所以会让人死去活来, 是因为, 答案都写在了…

photoshop(PS)有什么快速提升工作效率的功能?或者实用功能?这里告诉你7条!

1:文件太多&#xff0c;不方便马上找到需要插入元素&#xff08;元素放入PS会发现&#xff0c;位置不知道在哪里&#xff09;&#xff0c;点击需要选中或者搭配的元素&#xff0c;ctrlV就可以快速插入目标/图层元素的位置了&#xff01; 点击当前元素&#xff0c;选中&#xf…

Linux备份---异地

参考文档&#xff1a;Linux环境实现mysql所在服务器定时同步数据文件到备份服务器&#xff08;异地容灾备份场景&#xff09;_mysql异地备份-CSDN博客 通过SSH进行连接&#xff1a; 应用服务器&#xff1a; 通过ssh-keygen -t rsay建立ssh通信的密钥 密钥建立后&#xff0c;…

边缘计算安全有多重要

德迅云安全研究发现边缘安全是对存储或处理在网络边缘的数据的保护。边缘可以用不同的方式定义&#xff0c;但一般来说&#xff0c;它包括企业直接控制之外的任何设备或位置。这可能包括传感器、连接物联网的设备和移动设备。 边缘计算正在彻底改变商业运作方式。这引发了对边缘…

SpringBoot 使用logback(多环境配置)

Logback是由log4j创始人设计的又一个开源日志组件。可用于项目日志功能。官网地址 第1步&#xff1a;添加坐标依赖 <!--logback--> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version…

Python 提取PDF表格数据并保存到TXT文本或Excel文件

目录 安装Python库 Python提取PDF表格数据并保存到文本文档 Python提取PDF表格数据并保存到Excel文档 PDF文件常用于存储和共享各种类型的文档&#xff0c;这些文档可能包括大量的数据表格。通过提取这些PDF表格数据&#xff0c;我们可以将其导入到Excel、数据库或统计软件等…