欢迎光临散文网 会员登陆 & 注册

【AI变声/翻唱】so-vits-svc指南

2023-08-01 09:24 作者:bili_70205312953  | 我要投稿

这篇专栏针对Windows系统,不过用GNU Linux的想必也不需要教程。

这不是一键包教程。

在开始之前,请先确保你有显存在6GB以上的N卡,10GB以上的可用磁盘空间(SSD),和足够的耐心。一次训练(包括浅扩散模型)可能要耗费数天时间。

环境准备

  • 下载并安装Python(https://www.python.org/downloads/)

    Python3.8.9为so-vits-svc官方推荐版本,但实测3.8.9到3.9.13均能正常运行,3.10及之后版本未测试,个人推荐3.9.13。在安装时请勾选Add to Path。安装完成后,在命令提示符(cmd)中执行python -V 和 pip -V,若正常输出版本则安装没有问题

  • 可选项:安装Git(https://gitforwindows.org)

  • 下载so-vits-svc(https://github.com/svc-develop-team/so-vits-svc)

    如果你下载了git,请直接将仓库clone到本地。如果没有,点击绿色的Code,选择Download ZIP,下载压缩包并解压到本地。

  • 搜索安装自己显卡对应的Cuda

  • 在命令提示符(cmd)中导航到解压得到的so-vits-svc-4.1-Stable文件夹中,执行下面的命令,安装所需的第三方库:

    pip install wheel

    pip install -i https://pypi.douban.com/simple -r requirements_win.txt

    注:这里使用的是豆瓣源,如果下载速度过慢请更换为其它源

  • 由于pip会安装cpu版本的pytorch,因此需要卸载后重新安装Cuda版本的Pytorch

    打开命令提示符,执行pip uninstall torch -y 和 pip uninstall torchvision -y

    到https://pytorch.org/选择自己Cuda版本对应的Pytorch,执行Run this Command:后面的命令

    至此,环境搭建完毕

训练、推理:

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

这是官方的教程,很详细,请在完整阅读后看看下面的几点补充:

  • 在确定使用某个声音编码器后最好不要再改,若想试试别的编码器请复制一份源码后重新添加预训练模型

  • 若无法访问hugging face请看我之前的专栏

  • 文章提供的预训练底模文件不全,这里提供部分底模下载

    • https://huggingface.co/datasets/ms903/sovits4.0-768vec-layer12

      这里有vec768l12编码器的底模,若需要响度嵌入请下载vol_emb里的文件。下载后将它们重命名为D_0.pth和G_0.pth,放到logs/44k下。

    • https://github.com/CNChTu/Diffusion-SVC#21-训练完整过程的扩散预训练模型

      请一并复制后边的中文后访问。这里有扩散模型的下载链接,请选择与你的声音编码器对应的版本。下载后将model_0.pt放到logs/44k/diffusion下。

  • 训练

    • 数据集质量比数量更重要,请一定不要为了数量而添加低质量/带混响的音频,这即会拖慢训练也会降低质量

    • 请务必在运行preprocess_flist_config.py后修改config.json 与 diffusion.yaml

    • config.json

      • 将all_in_mem改为true,除非数据集过大,你的内存实在不够用

      • 将batch_size改为你的显存大小,以GB为单位(batch_size≠消耗的显存量,但我实测大致相等,不必是2的n次方)

    • diffusion.yaml

      • cache_all_data和config.json中的all_in_mem意思一样,默认开启,若你的内存不够用可改为false

      • batch_size默认48,实测大概2~5G显存占用,可适当调大

    • 训练途中不要再更改参数,若要训练新模型请解压源码到新的目录并添加预训练模型和数据集

    • 关于loss

      • tensorboard可视化:

        • 打开命令提示符,执行tensorboard --logdir [你的模型输出路径,如.\logs\44k或.\logs\44k\diffusion]

          若想在外部访问,请添加--bind_all参数

        • 在浏览器中访问127.0.0.1:6006

      • 这绝不是衡量模型的唯一标准,最好的loss计算器就是你自己。tensorboard网页中的audio选项卡里有评估样本,gen是推理得到的音频,gt是源音频。

      • loss/g/total上升loss/d/total收敛:考虑数据集质量问题

      • floss/g/fm上升为正常现象

      • loss/g/total先下降后上升:考虑是否过拟合

      • loss/g/lf0应收敛在1e-4以下,loss/g/kl应收敛在0.5以下,loss/g/mel应震荡下降

  • 推理

    • 请确保你要用于推理的源音频很“干净”,没有杂音/伴奏,若无法除去请使用crepe作为f0预测器

    • 仅支持单声道,若需要推理多声道音频请拆分后分别推理

    • 对于歌声转换,个人推荐rmvpe f0预测器,效果相当好。需要下载预训练的 RMVPE 模型。

    • 若效果不满意请更换参数反复测试,后期处理也是必要的,这里没有“一键处理”

    • f0预测器说明:

      • crepe:一种数据驱动的音高(f0)跟踪算法,它基于直接在时域波形上运行的深度卷积神经网络。自带均值滤波。

      • pm:蛇佬腔,默认f0预测器,效果不错,有时会有哑音

      • dio:基于歌声与语音声带振动周期提取的F0估计方法。

      • harvest: 语音的高性能f0估计。低音专精,推荐用于男声或语音转换。

      • rmvpe:复调音乐中f0估计的鲁棒模型。

此专栏在CC BY-SA 4.0下提供

【AI变声/翻唱】so-vits-svc指南的评论 (共 条)

分享到微博请遵守国家法律