技术分享

复活吧,我的猫雷!

——史上最详细的AI猫雷本地部署攻略

猫雷喵露

“大家内心深处都很温柔”
“说实话”
“猫雷看出来了”

听了这么多AI猫雷的艺术创作,萌生了把AI猫雷部署到本地的想法!说干就干!

使用的猫雷:

https://huggingface.co/spaces/innnky/nyaru-svc-3.0
  • 操作系统:Ubuntu 22.04
  • 内存:16GB
  • 显卡:RTX3050, 4GB(笔记本)

一、将仓库clone到本地

git lfs clone https://huggingface.co/spaces/innnky/nyaru-svc-3.0

注意,git lfs 命令需要安装git和git-lfs。具体命令为

sudo apt install git
sudo apt install git-lfs

二、配置环境

1、安装配置Anaconda

在AI猫雷环境配置中,我使用了Anaconda创建虚拟环境。强烈推荐你也这么干!Anaconda可以直接在官网https://www.anaconda.com/中下载.sh文件,下载好了进入终端,开始安装!

bash 你下载的文件.sh

Welcome to Anaconda3 2022.10

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>> 

显示”>>>”后,按Enter阅读license,然后按照指示安装即可。过程中可能需要输入yes以确认。

tips:此处bash命令不要用sudo,那样会将Anaconda安装到root用户下😨😨我们装在用户主目录就好喵。

在安装完成后,终端中输入conda命令看看能不能用

conda --version

倘若没有返回版本号,那大概是因为没有将我们刚刚安装好的anaconda加入环境变量,操作如下(返回版本号则跳过此步骤):

sudo vim ~/.bashrc

在文件最后添加:

export PATH=xxxxxxx/anaconda3/bin:$PATH

刷新,应用更改:

source ~/.bashrc

一番操作后,我们现在可以用anaconda来配置环境了。

2、利用Anaconda配置Python环境

为什么要用Anaconda来配置Python环境,各大佬的文章应该有不少了。Anaconda可以提供相对独立的Python环境,各个版本的Python可以共存。最开始我在Windows上尝试配置AI猫雷时,就发现不少库在Python3.11中无法使用。看到b站的前辈是用的Python3.8(某AI猫雷评论区),于是便转而在Ubuntu上利用Anaconda的Python环境来搞了。

首先新建一个叫py38的虚拟环境,Python版本3.8:

conda create -n py38 python=3.8

完成后,进入该环境(退出、删除环境等更多conda命令可以自己查询):

conda activate py38

进入AI猫雷的目录下,将requirements.txt中所有的库通过pip安装,此处 -i 参数可以指定源,国外源史诗级慢,而且下一半中途寄了属实难绷,这里我们用清华源:

cd nyaru-svc-3.0
pip install -r ./requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

安装过程中出现错误红字莫慌,大不了在来一遍。还是不行,打开requirements.txt,手动pip安装里面所有的库就行。哥们在这块至少浪费了114分钟!tips:一定要在刚刚创建的py38环境下安装捏!

至此,运行AI猫雷的环境配置完毕!

另外,我建议在开始使用之前,安装ffmpeg,我曾出现过因为没有ffmpeg而产生的报错。

sudo apt install ffmpeg

三、启动!AI猫雷

在配置完环境后,我们可以直接在猫雷目录下启动了!!在启动之前,可以用文本编辑器打开app.py,解除网页Demo中45秒的限制。具体操作为:注释掉以下两行代码:

#if duration > 45:
#    return "请上传小于45s的音频,需要转换长音频请本地进行转换", None

在终端中通过python命令启动,注意要在刚刚建的py38环境下喵:

python ./app.py

打开浏览器,访问localhost:7860即可。

四、逆天工具Spleeter的部署使用!

玩原神和不玩原神的都知道:AI猫雷要使用去掉伴奏的纯人声来合成。鉴于在网上下载的歌曲往往不能简单的分开伴奏和人声,我们在这里用很厉害的工具Spleeter来实现在本地对音频文件的拆分,拆分结果将是伴奏和人声两个文件。也就是说,这个工具不仅能提取我们需要的纯人声文件,也能提取歌曲伴奏,非常强大了属于是。

1、环境配置

与AI猫雷一样,Spleeter也是用的Python环境。在这里,我使用Anaconda新建一个叫music的python3.9的环境并使用:

conda create -n music python=3.9
conda activate music

接下来,安装一些依赖:

conda install -c conda-forge ffmpeg libsndfile

2、安装配置主体

使用pip安装Spleeter主体,其中 -i 参数指定的是清华源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple spleeter

安装完成后,Spleeter命令也可能无法使用,原因也是没有添加进PATH。和刚才一样,在.bashrc文件末尾添加:

export PATH=/home/username/.local/bin:$PATH

此处的/home/username/.local/bin是我Spleeter安装的路径。一般在使用pip安装Spleeter的过程中会有黄色字体提示你要将路径加入PATH。

在主体安装完成后,我们需要将训练好的模型放进工作文件夹中。模型可以从github上下载,其中2stems.tar.gz是我们需要的。2stems-finetune.tar.gz是更为精细的模型,效果和2stems.tar.gz差不多其实,要是有兴趣也可以下来用用。https://github.com/deezer/spleeter/releases/tag/v1.4.0

下载后,建立一个新文件结构,将2stems.tar.gz文件解压,得到的几个模型文件放置于文件夹2stems中

~/Spleeter/pretrained_models/2stems

3、Spleeter的使用

在工作目录Spleeter下,使用命令(更多参数可输入spleeter命令查看):

spleeter separate -o [输出路径] [要分离的音频位置]

完成后,我们将在输出路径得到两个音频文件,分别是伴奏和人声。经过简单的剪裁后即可食用!

五、写在最后

在处理长音频时,与AI作图(炸显存)不同的是,好几次崩溃是因为内存炸掉。我直接把swap加到了34GB也无济于事(可能还是需要更高的RAM)。经过反复尝试,我发现在我的配置下,一分钟左右的音频可以胜任。另外,在成功运行时,交换空间的大小并不重要(图3)。、

经测试,16GB内存可以处理长度在1:40的音频文件,再多就会炸。看来在碰到显存上限前,就会碰到内存上限啊🧐🧐

失败案例一:内存先满,交换后满,然后炸掉
失败案例二:内存和交换空间双双炸掉(34G交换空间无济于事)
成功案例,内存基本在100%以下游走。输入的音频文件在一分半左右

另,修改swap时,使用了GParted软件,操作简单,贝极星也会用。

谢谢大傻喵

END喵

Leave a Reply

Your email address will not be published.Required fields are marked *