比win训练速度更快,不需要等一键包:Linux安装so-vits-svc教程

话说最近2080Ti炼丹卡价格真是便宜,UP也入手了一张来进行ai训练
折腾了几天发现在Linux下训练速度确实要比win更快(同样的svc版本4.0V1和训练集,batch_size:6,win大约是80s一个epoch,Linux是60s一个epoch),而且配置环境也更省心,但是中间还是有一些坑,所以写了这篇教程,希望能帮助大家节约折腾的时间
本文的目的是让没接触过Linux也能顺利完成安装so-vits-svc,并且可以最快用上新功能(如GUI界面,实时语音转换),所以一切步骤尽力写的通俗详细,但部分步骤仍可能有不清楚的地方,若遇到问题可以在评论区提问,UP看到会第一时间解答

一些新版本更新的小功能
1.音频推理自动切片
在推理的时候,可以直接一首歌直接推理,不需要手动切片,推理时命令行加入:
-cl, --clip:音频自动切片,0为不切片,单位为秒/s。
2.打开tensorboard用图像的方法查看loss

终端输入:
tensorboard --logdir=填你的train.log文件的绝对路径
例如:tensorboard --logdir=/home/cecilia/PycharmProjects/SVCV2PY38T2/so-vits-svc-4.0-v2/logs/44k
3.启动gui界面以及语音实时转换

pip install -U so-vits-svc-fork //安装分支
svcg //启动gui界面
若是遇到 No matching distribution found for PortAudio报错,可以执行下面代码解决
sudo apt-get install libportaudio2
pip install sounddevice

一.安装Ubuntu
下载Ubuntu,链接为:https://ubuntu.com/download/desktop,选择Ubuntu 22.04.2 LTS即可
使用balenaEtcher制作启动盘,balenaEtcher下载链接为:https://www.balena.io/etcher
在计算机上安装Ubuntu
为了节约篇幅并专注主题,安装Ubuntu的详细教程本文就不详细展开了哦,可参考官方教程:https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview,或在互联网上搜索安装Ubuntu教程
二.安装N卡驱动
可使用Ubuntu自带“软件和更新”进行一键安装N卡驱动:
打开“软件和更新”
点击列表第五个的“附加驱动”,选择“Nvidia driver metapackage 来自 515 (专有)”驱动,并应用(这个515自带的CUDA版本应该是11.7,正好适用于我们安装so-vits-svc的环境)

4. 安装好重启,打开终端,输入nvidia-smi,如果驱动正常安装,这里会出现Driver版本和CUDA版本还有显卡的使用情况(如果想要一直监视显卡使用情况,可以使用watch命令:watch -n 1 nvidia-smi,即可每秒刷新显示显卡使用情况)

使用本方法安装N卡驱动有可能失败,为了节约篇幅并专注主题,本文仅介绍这一种方法,若安装失败,请在互联网搜索其他安装N卡驱动的方法哦(注意安装的CUDA版本不要超过11.8,因为pytorch目前最新版本只支持11.8,本文建议安装11.7)
三.安装使用conda(可选,强烈建议)
(conda是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换,通过conda,我们可以方便安装调试各种环境,特别是安装了各种乱七八糟的包导致冲突后,我们可以直接新建一个环境,省心省力)
1. 下载Anaconda,链接为https://www.anaconda.com/products/distribution,下载“64-Bit (x86) Installer”即可
2. 安装conda很简单,输入以下两行代码即可
chmod +x 此处直接把下载好的sh拖进来按回车即可
bash 此处直接把下载好的sh拖进来按回车即可
3.一路按回车和输入yes即可,安装好后,会提醒你重启终端生效,重启终端后,命令行前面出现(base)说明安装成功

4.安装好conda后,我们可以专门为so-vits-svc创建一个新的环境,方便管理so-vits-svc需要的包
conda create -n SVCPY38T3 python=3.8
//此处创建了一个名叫“SVCPY38T3”,python版本为3.8的环境(python版本推荐使用3.8,UP原来使用的3.10发现安装环境的时候会有大大小小的问题,3.8就很顺利,并且推荐使用官方源,不要换国内源,)
四.安装PyCharm(可选,强烈推荐)
1.(PyCharm可以方便编辑和运行代码,并通过插件自动检查安装包是否符合requirements条件)
2.打开Ubuntu自带应用商店
3.搜索PyCharm,下载即可(如果你是学生,可以使用学生认证免费使用PyCharm Professional,否则直接下载community社区版即可)
4.PyCharm新建一个项目,名称可以随便取,而python解释器选择已经存在的解释器-添加本地解释器-conda环境,选择刚刚创建的conda环境即可

5.打开设置-插件,搜索requirements,可下载自动检查包版本的插件

五.配置环境
1.从https://github.com/svc-develop-team/so-vits-svc 下载你想要的版本(本文以4.0V1为例)
2.把下载好的代码解压后直接拖进PyCharm,并打开目录中的requirements.txt,可以看到PyCharm正在检查包版本,若是包没有安装或者版本不对,会自动标黄提醒我们
3.复制一份requirements.txt到桌面,打开终端输入“conda activate SVCPY38T3“,激活上文创建的名为SVCPY38T3的环境,此时命令行前面的(base)应该会切换到(SVCPY38)
4.输入“pip install -r (把桌面的requirements.txt直接拖进来)”,即可全程自动安装好环境,我们同时可以在PyCharm中看到已经安装好的包
六.试运行以及处理报错
1.把checkpoint_best_legacy_500.pt文件放进hubert目录,把G_0.pth,D_0.pth放进logs/44k目录(底模也可以先不放,先试运行一下,因为底模要是版本不对,也有可能报错的,会加大我们排错的难度),以及数据集放在dataset_raw目录里,然后打开README_zh_CN.md,在里面按照步骤一步一步运行即可
2.不出意外的话,应该没有那么顺利能成功运行,可能会一些报错,我们可以根据报错信息进行逐步排查(以下所有代码请在之前已经创建好的conda环境中进行):
-CPU training is not allowe或者home/cecilia/anaconda3/envs/SVCPY38T2/lib/python3.8/site-packages/torch/xxx…….:这种报错应该是torch问题,我们可以在终端检查torch是否安装好:
打开终端,输入python
然后复制输入下面三行代码,回车:
import torch
x = torch.rand(5, 3)
print(x)
输出结果若为:
tensor([[0.3380, 0.3845, 0.3217],
[0.8337, 0.9050, 0.2650],
[0.2979, 0.7141, 0.9069],
[0.1449, 0.1132, 0.1375],
[0.4675, 0.3947, 0.1426]])
则说明torch安装了,但是不知道是否打开了gpu加速,我们可以再输入下面代码检查一下:
import torch
torch.cuda.is_available()
若返回true,则说明正确安装了torch并正确使用了gpu加速
解决报错方法:
若第一段代码没有输出结果,则说明torch没有安装好,我们可以打开https://pytorch.org/get-started/locally/,选择并下载你电脑需要的版本安装
若第一段代码有结果,第二段代码返回false,则说明没有正确使用gpu加速,同样,我们可以打开https://pytorch.org/get-started/locally/,选择并下载你电脑需要的版本安装
若第一段代码和第二段代码都正常得到结果,则可能是torch版本问题,我们可以“pip install -U torch”,进行升级torch,up实测,torch2.0也是可以正常运行的,不一定要安装requirements的古老版本
-ModuleNotFoundError: No module named matplotlib或者"/home/cecilia/anaconda/envs/SVCPY38/Lib/python3.8/site-packages/fairseg/checkpoint_utils.py”或者No matching distribution found for librosa:这种报错应该是安装包缺失
解决报错方法:
pip install 报错的包
(如pip install librosa)
-安装pyworld或fairseq的时候报错Could not build wheels for fairseq, pyworld, which is required to install pyproject.toml-based:
解决方法:
https://github.com/svc-develop-team/so-vits-svc/issues/66