/ AI / 1558浏览

音色克隆流程——采集自己的声音并训练AI唱歌

音色克隆流程——采集自己的声音并训练AI唱歌

最近出来了sovits4.0,在3.0的基础上进一步降低了显存消耗,至于3.0和4.0到底哪个效果好,网上也有很多对比视频,见仁见智吧。本文章介绍的流程基于https://www.bilibili.com/video/BV1H24y187Ko/ 提供的一键包,包含本人从采集数据到训练、推理的完整流程。注意sovits是音色转移,它自己没有唱歌技巧,只是把音色克隆,而且最终效果也跟原声的音域有关。请勿用于非法用途!我觉得挺有意思的用途是AI唱歌、帮你念稿子、混英语课的口语作业(雾)等。

数据采集和处理

作为AI模型,它的训练需要大量的数据,因此第一步是获取需要训练的数据。如果你是使用别人的音色,那你需要去采集TA的音频素材,如直播,歌曲,聊天声音等。这里采集的音频需要经过处理,只保留干声(就是只有一个人说话的声音),其具体的方法在后面有介绍,时长需要1~2个小时,比起数据量,数据的质量影响更大,所以要进行数据处理。这里先介绍采集自己声音的处理方法,因为你可以在相对安静的环境录音,尽可能减少杂音。(我亲测可以用手机录,比便宜麦克风效果好很多,手机的麦克风还是不错。)

我的麦克风用的耳机自带的,比较一般,底噪偏大,我这里用RTX Voice或者NVIDIA BROADCAST来降噪。如果你是A卡可以搜索AMD Noise Suppression。本人机器3060用RTX Voice会未响应,下面演示用NVIDIA BROADCAST。

安装完成后打开软件,

麦克风源选择你使用的麦克风,效果里就是添加的处理效果,效果右边的绿色圆点表示是否开启效果。添加效果可以增加更多处理效果,右侧绿色方框处录音可以体验处理效果。个人感觉还是十分明显的。

然后在声音-录制里把NVIDIA BROADCAST设置为默认设备。

image-20230331093811587

然后打开Windows自带的录音机就可以开始录音了,如果你使用其他录音软件记得在软件设置里把麦克风输入设备设置成NVIDIA BROADCAST。之后就可以愉快的念课文了,中间可以中断成多个多次录音,总时长满足就可以了。

有了原始素材后,你可以选择进一步处理(也可以不选),比如Adobe Audition,软件的安装包在文章开头的视频链接中提供了。在Audition中打开录音文件,在效果-降噪/恢复中应用对应效果。另外,如果你的素材来源不一致,最好让他们的音量大小差不多,同样可以在Audition中做到,点击收藏夹-标准化为-3db。

image-20230331094833511

处理完成后下一步是把很长的原始素材划分成小片的slice,这里用的工具是Audio slicer,在一键包中也有提供。

image-20230331095254682

在左边把音频素材拖进去,或者点击按钮添加,右侧设置把Minimum Length改成8000,Output Directory选择一个新建的纯英文名文件夹,然后点击start等待完成即可。

完成后把sliced的文件夹复制到so-vits-svc-4.0\dataset_raw下,要确保文件夹结构是so-vits-svc-4.0\dataset_raw\你的文件夹名字\你的音频素材,不然下一步会出错。

然后双击so-vits-svc-4.0目录下的“数据预处理.bat”,稍等片刻,等待脚本自动完成,完成后如下所示,按任意键退出。

image-20230331100226047

模型设置和训练

编辑config文件,:右键用文本编辑器打开\so-vits-svc-4.0\configs\config.json。文件中包含了训练的相关参数:

log_interval :打印log的间隔

eval_interval: 保存模型的间隔

seed: 随机数种子

epochs: 训练上限数

learning_rate: 学习率,默认值0.0001,和batch_size成对改变

batch_size: 数值越大训练越快,但是更吃显存,根据你的配置改变,默认是6,如果你改成12,那学习率也要改成0.0002。如果训练报错可能是显存不足,需要调低。

keep_ckpts: 保存的模型数,每个模型大约500+MB,训练过程会保存最新的keep_ckpts个模型,根据你的需求和空间大小定。

双击根目录下"训练.bat"开始训练,等待一会如果报错或者没有出现类似下图5个成组的小数

image-20230331101543561.png

我遇到有两种情况:

  1. 翻看报错信息,如果提示报错中有’Dataloader’之样的字眼,说明你虚拟内存可能设置不足,尝试拉高虚拟内存或者关闭多线程:打开train.py,编辑第72行num_workers = 1
  2. 提示显存不足,’Memory’相关字眼,尝试拉低batch_size

图中的5个数都是越小越好,随着训练的迭代,应该有越来越小的趋势。在提示 ‘Saving model and optimizer state at …..’ 后,最新的模型已经保存,可以提前终止训练,下次再运行训练脚本会继续从最新模型开始训练。此时可以尝试推理,来查看模型的拟合效果。

如果你是进阶玩家,可以尝试使用tensorboard查看训练过程,判断是否应该终止。

在安装了tensorboard的python环境下,在终端输入

tensorboard --logdir 你的存放目录\so-vits-svc-4.0\logs\44k

logdir后边是你的模型存放的地址。

image-20230331102857806

随后浏览器打开显示的地址,我这里是 localhost:6006

image-20230331103049725

点击loss选项卡,可以看到各个loss的变化趋势,如果有上升的趋势了就应该停止迭代了。

推理

和用来训练的音频素材一样,同样要求声音是比较纯净的干声,如果有伴奏和声等会影响到合成的效果。注意,推理使用的格式需要16bit,如果不想每次都注意格式或者推理报错,可以安装ffmpeg,一劳永逸。

在http://ffmpeg.org/下载对应版本,在本地解压出来。然后在系统环境变量中添加path:

打开设置-系统-高级系统设置-高级选项卡-环境变量中编辑Path,添加ffmpeg的bin文件夹,如F:\Program Files (x86)\ffmpeg-6.0-full_build\bin

如果用途是用自己或别人的声音念稿子之类的,需要把文字转换成语音的工具。有很多网站和工具可以使用,这里推荐微软语音合成助手,可以自行度娘。合成的语音很干净,不需要再处理了,如果这个语音推理出来都电音,那说明模型没有训练好。

运行推理_webui.bat脚本,等待一下并打开提示的网址,没改config的话是http://127.0.0.1:7860

image-20230331105129694

选择你要使用的模型,模型文件在logs\44k下,这里要选择G开头的模型,D开头的不是推理用的。然后选择配置文件和聚类模型,如果你没有训练聚类模型就不选,聚类模型用于提升音色的相似性。点击“加载模型”按钮等待加载完成。然后选择音色就完成了准备工作。

最后上传需要音色克隆的文件,点击转换按钮就完成拉。试听看看效果如何吧。

image-20230331105531383

最后说一下对歌曲干声的提取和伴奏分离。有很多的工具可以选择,比如Ultimate Vocal Remover、RipX等,其中UVR在一键包中也包含了,也是一个基于AI的分离方法,效果还不错,内置了很多模型,可以自行尝试。

image-20230331105935842

上边两个框是选择输入文件和输出保存位置的;中间左边选择处理方法,右边是对应方法的参数,具体用法网上也有很多教程啦,这里就不多嘴了。

大概的全流程就是这样啦,希望可以帮到你,合成出你喜欢的声音和歌曲。
附我合成的音乐链接:https://www.bilibili.com/video/BV13j411c7h9/

Eysent
【RL】DQN的简单实现

0

  1. This post has no comment yet

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注