前言

  • 如题,自从ChatGPT爆火之后,各类AI如雨后春笋一般,争先恐后的冒出来,本文将详细讲解,如何打造一个属于自己的AI歌手!

准备工作

  1. 核心模型:sovits GitHub下载链接 | 炼丹百科全书【怕麻烦推荐从这里下载】
    严格来说它不是一个模型,它是一个生成工具,用来训练你的专属模型,和推理生成你所需要的音频。
  2. 人声提取工具:UVR5 GitHub下载链接 | 123云盘提取码:hjhj
    这个工具用于提取音频文件中的人声,非常强大。
  3. 人声处理工具:RX Audio Editor 123云盘
    这个工具用于处理使用UVR5提取后的人声【如有必要的话,一般歌曲提取的声音会需要再处理】
  4. 声音切片工具:Audio Slicer GitHub下载链接
    这个工具用于将处理好的声音文件进行切片,制作成训练模型需要的数据集。

基本逻辑

  • 本文档涉及到的工具无法用于生成不存在的声音,其根本是将你的目标音频的音色变为你所训练的模型的音色,简单的来说,它是一个变声器。

本地训练

01.软件准备

  • 要开始训练模型之前,需要将上述准备工作中涉及到的软件全部下载安装完毕,其中1不需要单独运行安装程序,将其解压缩到全英文路径下即可,类似于:【F:AIso-vits-svcso-vits-svc-4.0】。
  • UVR5与RX Audio Editor需要运行安装程序,下载解压缩后安装即可,有特别需要注意的安装步骤,在压缩包中有对应的txt文件注明,此处不再重复。
  • Audio Slicer无需安装,解压到全英文路径下即可,解压后的运行文件名是:slicer-gui.exe

02.训练素材准备

  • 确定目标音色,通俗的来说,就是确定你要训练什么样的声音,或者说,谁的声音,可以是你自己的,也可以是别人的【注意侵权问题】。本文就以歌手薛之谦为例,仅供学习交流演示之用,且本文不提供训练好的模型。
  • 确定音色后,就需要获取目标音色的干音文件,越纯粹越好,越清晰越好,时长越长越好,数量越多越好,本文使用了薛之谦的歌曲作为基础素材。

歌曲素材

  • 我用了13首歌曲,这些文件除了目标人声外,包含了许多其他的声音,例如鼓,吉他,琴之类的,我们首先要做的就是提取人声!

03.人声提取

  • 这时候就需要用到我们之前准备好的工具了,打开UVR5,选择需要处理的文件,可以批量选择,设置好输出路径,设定参数,不了解的可以参考我的图片。然后点击“Start Processing”即可开始提取,提取速度受你电脑的显卡性能影响,导出格式选择wav。

UVR5转换中

  • 没有模型的,可以在界面“CHOOSE VR MODEL”选项中,选择“Download More Models”,找到6_HP-Karaoke-UVR模型,下载即可

下载模型

  • 转换完毕后,在输出文件夹中就可以看到我们提取后的人声干音

转换后干音

  • 这时候可以打开干音文件听听效果,如果声音清晰,没有杂音/混响之类的,可以直接进行切片处理,否则还需要进行下一步操作。

04.人声提纯

  • 如果上一步中提取出来的人声,还有杂音和混响,则需要用到RX Audio Editor进行处理
  • 我们首先进行混响处理,从右侧的工具栏中,选择“对话去混响”,可以先预览一下效果,调整相关参数【这个就看自己的感觉了】,觉得没问题后,点击渲染,渲染时间和电脑性能相关

处理混响

  • 处理呼吸,将处理完混响的干音进行预览,选择“呼吸控制”,进行预听,没问题后点击渲染即可【这一步属于非必须操作,没有明显的呼吸声可以不处理】

处理呼吸

  • 文件处理完后,按快捷键CTRL+E进行导出,导出格式为wav格式,将所有素材处理完毕后,最好是进行统一命名

处理后

05.素材切片

  • 将上一步中提纯的音频使用Audio Slicer进行切片,选择要切片的文件,选择输出路径,点击下方“start”即可

切片

  • 输出后的音频切片,就是我们训练模型所需要的数据集了

数据集

06.开始训练

  • 数据集制作完毕后,就可以开始训练了
  • 进入到sovits根目录【本文使用一键包进行演示,非一键包需要自行准备运行所需要的python3环境】,双击启动webui.bat,会有命令窗口弹出,稍等片刻
    启动

启动中

  • 启动完毕后,会自动打开浏览器,进入到操作页面,默认会进入推理页面

推理页面

  • 我们切换到训练页面

训练页面

  • 将我们的数据集拷贝到sovits目录下的dataset_raw文件夹下,如图

数据集路径

  • 在训练页面中,点击“识别数据集”,识别到后,选择下方的编码器和预测器,然后点击数据预处理,等待预处理完毕后,填写训练设置和参数,参数根据你自身的显卡型号和显存大小决定,最重要的两个参数是“批量大小”和“学习率”,这两个的比例一般是批量大小:学习率=6:0.0001,例如批量大小填写6,则学习率填写0.0001,如果批量大小填写12,则学习率填0.0002
  • 理论上这两个数字越大越好,但是太大会导致爆显存,建议根据实际硬件条件来,我用的4090 24G显存,这里填写的是18:0.0003,显存占用在19G左右
  • 填写完成后,点击“写入配置文件”,写入成功后,点击下方的“从头开始训练”,顺利的话,就可以看到开始训练了,如果不是第一次,则点击继续训练即可。

预处理与训练

训练中

07.训练结果

  • 经过一段时间的训练后,可以进行成果试验,我们进入到“..so-vits-svc-4.0logs44k”目录下,找到最新的G开头的模型,将它改个名字,方便后续进行区分,然后在“..so-vits-svc-4.0configs”文件夹下,将config.json文件名修改成和G模型一样。
  • 进入推理页面,首先刷新选项,然后选择模型和配置文件,随后加载模型,加载完成后,选择要推理的音频【也需要是干音】,变调的话,同性别转换一般不需要改,如果是男转女,一般是5到8,女转男-5到-8,实际情况按照生成效果来,可以多次生成听效果,随后点击音频转换即可。

推理完毕

云端训练

可能遇到的问题

  • 云端训练最大的问题可能就是cuda版本过低
RuntimeError: cuFFT error: CUFFT_INTERNAL_ERROR
  • 如果遇到这个情况,运行如下指令进行更新cuda版本,我是用的4090,所以cuda版本是11.8,根据实际情况修改即可
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia