简介

随着AI孙燕姿的爆火出圈,各大视频渠道的AI人声投稿量激增,B站主页一再给我推送相关视频,正好我对AIGC方面也挺感兴趣,心动不如举动,所以我用自己的声响练习了一个模型,发现整个进程异常的简略,并且最终出来的作用也不错,真的是有手就行,所以这次将我自己练习推理的进程经历共享给咱们

Sovits

首要介绍一下今天要讲的Sovits,So-vits-svc(也称Sovits)是由是中国民间歌声组成爱好者Rcell基于VITS、soft-vc、VISinger2等一系列项目开发的一款开源免费AI语音转化软件,通过SoftVC内容编码器提取源音频语音特征,与F0一起输入VITS替换原本的文本输入到达歌声转化的作用。

因为某些原因,原作者Rcell删去了原代码库房,现由svc-develop-team接手进行后续维护,现库房地址:github.com/svc-develop…

装备要求

  • 一张支持 CUDA 的,具有至少 6G 以上显存的 NVIDIA 显卡
  • 引荐运用Windows系统,教程后续的资料处理、练习、推理均在Windows渠道上完结,一起运用整合包GUI也能够帮助新手将注意力会集在练习/推理本身上,防止了繁杂的环境装备等工作

环境装备

本次的环境运用的是 bilibili@羽毛布団 大佬提供的整合包:www.yuque.com/umoubuton/u… ,在这儿能找到下载地址和一些阐明

下载完后,你会得到一个Sovits的压缩包和一些东西软件,将其间的so-vits-svc解压缩后,翻开里边的发动webui.bat文件,它会主动预备环境,然后弹出一个网页

有手就行!Sovits AI人声模型训练

有手就行!Sovits AI人声模型训练

在网页中将Tab页切换至练习页,能够看到咱们的显卡信息

有手就行!Sovits AI人声模型训练

确认无误后咱们就能够开端练习了

预备数据集

数据集的质量及多少决定了练习模型质量的上下限,质量差的数据集无论你练习多久,练习了多少万个step,都不或许到达一个抱负的作用

预备干声

Sovits的练习咱们需求找一些想练习的声线所对应的干声资料,不可混杂多种声线,时长最好在2个小时以上,最低不要少于30分钟,否则无法确保练习出来的模型的质量,能够是说话、读书或歌唱的声响(有的人说加入一些哭闹、大笑等各式各样的声响有奇效,我没测验过,咱们能够试试看),假如想让你的模型歌唱的话,歌唱的资料需求掩盖低中高音多个频率

干声资料中不能有配乐、混响、和声(防止转化后的声响自带BGM),不要有换气声、颤音、转音等,尽量将布景噪音去除洁净

降噪

假如你原本的资料便是不带配乐混响的干声文件,可是有一些喧闹的布景噪音,能够运用Adobe Audition(以下简称AU)进行降噪处理

教程:helpx.adobe.com/cn/audition…

去配乐混响

假如你的资料是之前录好的歌曲,那么需求对它进行去配乐去混响处理,这儿引荐运用 Ultimate Vocal Remover v5(简称UVR5)

下载完UVR5,在处理音频前主张先去Advanced VR Options中将Post-Process选项翻开,这样去混响的作用或许更好(玄学)

有手就行!Sovits AI人声模型训练

有手就行!Sovits AI人声模型训练

接着开端去配乐,引荐选用以下装备:

  1. Process Method: Demucs
  2. Stems: Vocals
  3. Demucs Model: v3 | UVR_Model_1 注:找不到对应模型的能够鄙人拉框中挑选Download在软件内下载相应模型
  4. 勾选GPU Conversion

有手就行!Sovits AI人声模型训练

然后对处理完后的人声文件再做一次去混响处理,引荐选用以下装备:

  1. Process Method: VR Architecture
  2. Window Size: 320
  3. Aggression Setting: 10
  4. VR Model: 5_HP-Karaoke_UVR
  5. 勾选GPU Conversion
  6. 勾选Voacls Only

有手就行!Sovits AI人声模型训练

这样简略的几步,咱们就将干声从歌曲文件中提取出来了,假如你觉得提取出来的作用差强人意,也能够运用 RipX DeepAudio 做一些精修

将文件导入RipX中,会发生如下图相同的一段曲线

点击其间的某段黄色曲线能够播映这段音频,咱们能够一段段听过去,遇到杂音部分能够将其手动删去

有手就行!Sovits AI人声模型训练

匹配响度

假如你的干声资料的来源不同,很或许会有资料响度大小不一的状况,这种状况下需求运用AU对一切音频去做匹配响度,使一切资料的分贝值在一个统一的范围内

教程:helpx.adobe.com/cn/audition…

压限

干声的响度不宜超越-6db,主张运用Adobe Audition中的压限器将声响的分贝约束在-6db以内

教程:helpx.adobe.com/cn/audition…

切片

干声资料都处理完后,下一步便是将这些资料切成一个个2-15s的小片段(片段太长容易爆显存,最好不要超越20s),这儿引荐运用 Audio Slicer ,能够依据响度阈值和间隔时刻等主动将音频切片

有手就行!Sovits AI人声模型训练

将干声文件拖进去后能够先运用默许参数切一遍,然后去输出目录,将文件按文件大小由大到小摆放,检查是否还有大于15s的音频切片,如有的话,将这些音频从头拖入软件中,按照以下参数从头切片一次:

  1. Threshold(db): -20
  2. Minimum Interval: 100
  3. Maximum Silence Length(ms): 500

一般这样就不会有大于15s的音频了,假如还有的话,我将这些参数的意义列鄙人面,咱们能够自己调整参数测验,咱们也能够运用其他的一些音频处理东西(如:AU)手动切片

  • Threshold(阈值)

以 dB 表示的 RMS 阈值。一切 RMS 值都低于此阈值的区域将被视为静音。假如音频有噪音,请添加此值。默许值为 -40。

  • Minimum Length(最小长度)

每个切片音频剪辑所需的最小长度,以毫秒为单位。默许值为 5000。

  • Minimum Interval(最小间距)

要切片的静音部分的最小长度,以毫秒为单位。假如音频仅包含短暂的中断,请将此值设置得更小。此值越小,此应用程序或许生成的切片音频剪辑就越多。请注意,此值有必要小于 min length 且大于 hop size。默许值为 300。

  • Hop Size(跳动步长)

每个 RMS 帧的长度,以毫秒为单位。添加此值将进步切片的精度,但会降低处理速度。默许值为 10。

  • Maximum Silence Length(最大静音长度)

在切片音频周围坚持的最大静音长度,以毫秒为单位。依据需求调整此值。请注意,设置此值并不意味着切片音频中的静音部分具有彻底给定的长度。如上所述,该算法将搜索要切片的最佳方位。默许值为 1000。

最终,记得把过短的音频切片删去掉

格局转化

数据集的格局有必要是wav原始波形格局,咱们检查一下,假如假如有非wav格局的文件,需求做一下格局转化,引荐运用Foobar2000,或许直接运用FFmepg进行转化

重命名

数据会集不能呈现中文等非英文字符,特殊字符引荐只运用下划线,Windows下直接将文件全选后重命名,文件名会变成以下这种格局:

  • xxx (1).wav
  • xxx (2).wav

自己亲测这样命名虽然会报Warning,但不影响练习,是可行的

预练习

接着咱们就开端预备练习了

放置数据集

首要将处理好的干声全部放到一个文件夹下,然后再将这个文件夹放到so-vits-svc目录下的dataset_raw文件夹下

有手就行!Sovits AI人声模型训练

数据预处理

翻开webui界面,切换到练习选项卡,首要点击辨认数据集,上面的文本框中便会显现出咱们预备好的数据集名,然后挑选练习运用的编码器f0猜测器,这儿挑选我图中标出的两个选项,是目前作用比较好的选项,接着点击数据预处理,在预处理输出信息那一栏会打印进展,耐心等候它跑完

有手就行!Sovits AI人声模型训练

练习装备

等候数据预处理完结后,咱们要将练习的设置和参数写入到装备文件中

有手就行!Sovits AI人声模型训练

介绍一下这儿参数的意义和引荐设置:

  1. 每隔多少步(steps)生成一次评价日志:每隔必定步数输出一下当前步数下的学习率,loss值等信息,依据个人偏好自己填写即可
  2. 每隔多少步(steps)验证并保存一次模型:字面意思,依据个人偏好自己填写即可
  3. 仅保留最新的X个模型:我练习到11万步时一个模型挨近600MB,咱们依据自己的硬盘大小和个人偏好填写即可
  4. 批量大小:大的batch size能够削减练习时刻,进步稳定性,但一起也会导致模型泛化才能下降,所以,就算你的显存很大也不主张将本参数设置的过大,引荐运用4
  5. 学习率:初始学习率过大会导致模型无法收敛,过小则会导致模型收敛特别慢或无法学习,主张运用默许值0.0001
  6. 运用fp16混合精度练习:混合精度练习是在尽或许削减精度丢失的状况下运用半精度浮点数加速练习,它运用FP16即半精度浮点数存储权重和梯度,在削减占用内存的一起起到了加速练习的作用,理论上来说运用混合精度简直不会造成精度丢失,但目前没对模型质量的影响尚未查证,在显卡功能满足的状况下主张还是先不要勾选
  7. 加载数据集到内存中:在内存满足的状况下主张勾选,能够加速练习速度

一切练习参数设置好后,点击下面的写入装备文件按钮,鄙人面的输出信息那里会显现装备文件写入完结,接下来就能够开端正式练习了

有手就行!Sovits AI人声模型训练

正式练习

点击下面的从头开端练习,会弹出一个新的终端窗口,在这个终端窗口中,会不断的输出当前练习的日志

有手就行!Sovits AI人声模型训练

有手就行!Sovits AI人声模型训练

我的练习参数设置的是每隔200步生成一次评价日志,每隔1000步保存一次模型,日志中输出的reference_loss值代表了模型的输出与实在值之间的差距,理论来说,这个值越低越好,越低,模型输出的声响就和真人的声响越像,但从经历来说未必如此,过低的loss值也或许代表了模型过拟合,咱们只能将这个参数作为一个参阅,实际作用要运用测验了这个模型后才能得知,咱们能够参阅这个值开端挑选模型进行推理测验

练习是不会主动停止的,当咱们感觉练习的差不多了,想试一下模型的实际作用时,能够在练习终端窗口中键盘键入Ctrl + C停止练习,假如对本次练习出来的模型还不满意,想要持续练习,则能够点击持续上一次的练习进展,程序会从上一个主动保存的模型的进展开端持续练习

推理

加载模型

模型练习完后咱们就能够将选项卡切换到推理来测验模型的实际作用了

咱们先点击改写选项,此刻在模型挑选装备文件的下拉菜单中就呈现了咱们之前练习好的模型,参阅之前的reference_loss值咱们选取一个模型(G最初),并且挑选练习所运用的装备文件,点击加载模型,等候下面的Output Message文本框呈现模型加载成功字样,就能够正式开端咱们的推理了

有手就行!Sovits AI人声模型训练

开端推理

Sovits是一个声响转化东西,咱们首要需求找一段想要转化的原声响频,和预备数据集那一章的要求相同,咱们需求一段干声,不能有配乐、混响、和声。假如想让模型歌唱的话,咱们能够选用前面预备数据集所用的办法,直接将原曲去配乐混响,处理好后将其拖入音频上传区域中

默许的 pm f0猜测器推理出来的音质作用最好,所以主张先运用默许参数推理一遍,呈现问题再针对性的对参数进行调整

咱们点击下面的音频转化按钮,稍等一瞬间,在Output Audio那里便会生成一段推理后的音频

有手就行!Sovits AI人声模型训练

咱们试听后依据详细的问题设置转化参数:

  • 呈现哑音

哑音是因为原声响频中的和声部分没有去向洁净,导致f0猜测器对音高的猜测呈现了过错,猜测成了一个极高的音高,模型唱不上去导致的

有两种办法处理这个问题,一种便是从源头处理问题,想办法将原声响频的和声混响去除,取得更纯净的干声从头推理,另一种办法能够将f0猜测器换成crepe,适度调节F0过滤阈值(一般运用默许值就行,改大改小没什么区别),然后从头进行推理根本就能够处理这个问题,可是音质不如f0猜测器pm,电流音等杂音会变多,两种办法咱们能够自行判断选取

  • 音域差距过大

假如练习的模型是男声,但推理运用的原声是女声,或许反过来,碰到这种音域差距过大的状况会导致推理出来的音频不堪入耳

咱们能够翻开f0主动猜测选项来处理这个问题,但正如选项里描述的那样,此挑选仅限于转化语音时才可用,转化歌声时翻开此选项会导致灾难性的跑调

假如是歌声并且实在是想要唱这首歌的话,主张去找一个和自己音域比较符合的翻唱音频,用这个音频处理后作为原声进行推理

  • 部分腔调唱不上(下)去

练习时喂的数据集没有掩盖到部分音域

这儿的变调选项似乎是先推理再变调?所以对这种状况不起作用,主张运用AU先将原声响频升降调到合适的音域,再进行推理

  • 爆显存

在推理的进程中有或许会呈现爆显存的状况,因为推理也是将原音频按照响度阈值切成一段段小切片别离进行推理,最终再组成,假如其间有一段切片经常过长就或许会导致爆显存

咱们能够将切片阈值调高,使得原声响频能够切的愈加细碎,甚至你也能够直接调整音频主动切片的值开启强制切片,比方输入10,音频就会被切成每10s一段,确保音频经常不会爆显存

组成

假如转化的是歌声,最终能够将转化出来的干声和配乐合并成一个音频文件,能够运用AU等软件,在组成之前还能够对干声进行一些EQ、混响的调整等,关于音乐方面的常识这儿就不多说了

结束

最终贴一下我自己练的模型所推理出来的歌声,运用了30分钟质量较好的干声资料和30分钟质量较差的资料(噪音和混响比较多),练习了11万步,运用crepef0猜测器推理得出

链接:www.bilibili.com/audio/au390…

这是我第一次测验练习Sovits模型,假如有什么疏漏或过错欢迎咱们指出