EN
/video/85358893.html

从0开始训练基于自己声音的AI大模型(基于开源项目so

2025-06-24 12:22:14 来源: 新华社
字号:默认 超大 | 打印 |

写在前面:

本文使用的技术栈仅为:Python。

基于阿里云全套可视化平台࿰的其他操作c;只需熟悉常规计算机技术即可。

目录。

Step 1:阿里云主机注册登录。

Step 2:找到大型项目。

Step 3:创建大模型环境实例。

Step 4:进入Ai_singer教程。

Step 5:下载环境和预训练模型。

Step 6:准备训练数据。

Step 7:数据预处理和切分配置。

Step 8:生成音频特征数据。

Step 9:训练。

Step 10:推理。

Step 11:人声与伴奏的结合。

结论:


准备工作:chrome浏览器;一个专注的环境。

Step 1:阿里云主机注册登录。

打开阿里云官网,登录个人阿里云账号�左侧产品目录,PAI进入人工智能平台。

86d541e1640b4bb69c84169ed94e2343.png

1、选择左边的Noteboookoook Gallery,这是一个基于Notebook模式的可视化平台,操作方便,二次开发方便。

2、在所有分类中,我们可以直接搜索开源项目-vits-svc(也就是前段时间人工智能孙燕姿用的模型项目)

Step 2:找到大型项目。

在搜索结果中,找到合适的“AI歌手”项目,然后点击【打开DSW】。DSW的全称是,data science workshop,云平台类似于深度训练。华为云也有类似的产品。

0f2358e6825847c4a5761060c1d18031.png

然后,会跳转到新的实例页面。也意味着󿀌为这个大模型在云空间创建一个运行实例,即,虚拟运行环境,包括操作系统󿀌cpu,GPU规格。推荐配置可直接用于这里。注意,涉及大模型训练,英伟达GPU必须配置。阿里云将有3个月的免费试用,一般足够小模型训练。

b3b592d065944a1aaf499e5e01ba6a0e.png

Step 3:创建大型模型环境实例。

新建完成后󿀌回到PAI平台�选择左侧交互式建模(DSW),你可以看到创建好的例子,操作栏,点击启动󿀌然后先准备环境loding࿰,如下图所示c;d099456874184a97934c23781fe38b98.png

启动完成后,可点击打开,直接进入DSW对应的项目,这是AI歌手项目(ai_singer)

08249c65ecef49b29fb4a038bcc4f081.png

点击打开后,浏览器将打开一个新页面,DSW工作台,类似于其他开发工具,左边是目录结构,文件内容在右侧。下一步的操作就在这里。

e471baa1ecaf4609b386aefb1c78be54.png

Step 4:进入Ai_singer教程。

我们找到 ai_singer.ipynb文件,ipython(已经在里面使用了;Jupyter)引导我们一步一步地训练模型。但,我们想自己改造这个例子,因为我们不使用示例数据,相反,使用自己的数据,只有这样,我们才能根据自己的声音训练一个大模型(也避免了不清楚的版权问题)。

看看整体步骤(目录):

43fa5aa5892941e69c74a40e2316baf5.png

Step 5:下载环境和预训练模型。

跟着目录下去󿀌点击运行预训练模型准备和数据下载代码:

e61a313f0a8a42aab59c5186d463dea5.png

dec4cfdf29874a53bdeaeddd29d553d4.png

注意:如果在执行过程中,哪些组件少了,可以自己通过 pip 安装。

Step 6:准备训练数据。

下载数据�这一步非常关键。把准备好的声音放在࿰上c;而不是步骤中带来的。

2ab5834adf9e411e9698121bd901bb51.png

在࿱中注意放置目录a;so-vits-svc/dataset_raw/。

作者在这里创建了一个文件夹Amiao,C12数据没有使用系统。

00e91893f5ea444cbbea1124eea1ee69.png

这里插入数据清洗(见ai_singer.ipynb文件中附录的第一点),我们需要用自己的数据来训练模型,必须准备好自己的声音文件,人声伴奏提取和音频切片需要进行。

1)人声伴奏提取:

  • 通过自己在全国K歌中录制的歌曲,使用iPhone自己的快捷指令提取M4A格式的歌曲,存入电脑。
  • 计算机安装UVR软件分离人声和伴奏:两次分离,第一次分离伴奏和人声󿼌第二次提纯人声。

52cec5e8421a47ab97c7e6ded5563a56.png

08c3311461074bcaae8a4c94de5dabbe.png

2)#xff1音频切片a;以wav格式࿰将分离的纯人声分开c;上传到自定义文件夹,我在这里用的是train_data/one/这个目录。

3478989a5bce457082f99e29e41eee7f.png

然后修改下图中的命令,将歌曲切片存放在制定目录中:

40b43c9640a245e0a9ea41868e3d81c8.png

# 先将UVR处理好的声音切片放入train_data目录下,再切分。!mkdir -p ./slice_output/one && python audio-slicer/slicer2.py ./train_data/one/xxx_vocals.wav --out ./slice_output/one --min_interval=50。

切割后的音频存储在`slice_output/one`目录下。

3)#xff1数据筛选a;将切片好的声音片段,拿出来播放,看看是否有一个无声的切割,要删掉。

7be9712359f84c87a6e76ddaac786a07.png

4)将处理好的数据放入训练数据源目录:demos/ai_singer/so-vits-svc/dataset_raw/Amiao/。

23580772b9e146259e72aeec3a87b959.png

这是我自定义的目录,C12目录没有使用官方教程。大约准备了300个10s的数据,如果效果更好,#xff0c;应准备更多的数据,然后声音应该有高音和低音󿼌范围应该更广。

Step 7:数据预处理和切分配置。

这一步只需跟随官方教程,使用我们自定义的路径来注意路径。

73105b74f8ba4bc1b31eef9ca00dbb4c.png

f128e4f7ec9a4696917ed1fffdf90bb3.png

在这个过程中,有些库必须自行安装,才能正常继续下去。

c964e3e2a77d4007bcf3d9287e518f14.png

Step 8:生成音频特征数据。

5fc14d03fba54fc0bcb393fafadc9a1e.png

这样的库没有安装󿀌在操作过程中,可以根据控制台的错误进行判断。

8cdaadb088084432b5e2eb2e67b6c997.png

这样就可以完成特征数据的生成。

Step 9:训练。

这一步是使用GPU训练大型模型的关键步骤,如下图。

## 默认存储训练模型`logs/44k`目录下。模型训练时间长,我们准备的模型文件可以直接用于推理(跳到下一节推理)。与培训相关的配置都是配置文件`configs/config.json`中,可以修改配置文件`epochs`、`batch_size`等。> 参数:> - -c(--config):文件路径的训练配置。配置文件中的参数可以自行修改。> - -m(--model):模型输出路径。
!cd ./so-vits-svc && python train.py -c configs/config.json -m 44k。

383789a7748b48f8a5abd73fde9a04a5.png

这种模型通常需要一天甚至更多的时间来训练。

Step 10:推理。

声模训练完成后,可以使用这个模型󿀌加上目标音乐󿀌拟合,也就是推理的过程。推理的结果是用Ai的声音唱了一首歌。

8ee16686cebc4ece9f314d7a686ad10a.png

只需关注上图的划线部分,不需要处理打叉部分󿀌因为我想使用我自己的推理数据(看看你让AI唱什么歌,用什么歌#xff09;。

在这里,我选择了宇多田光《FirstLove》这首歌,一首非常经典的歌~,还是用UVR5软件分离这首歌的人声伴奏�把它放在raw//one/目录下。

97af68e89e1e45bfaa428afeed7d7a8b.png

> 参数:> - -m(--model):模型输出路径。> - -c(--config):训练配置文件。> - -n(--clean_names):wav文件清单࿰需要推理c;把它放在raw文件夹下。> - -t(--trans):高音调整󿀌支持正负(半音)。一般女性转男可以调整到-5~-8,男转女可以调整到5~8,仅供参考󿼌实际情况需要根据人物的真实声音进行调整。> - -s(--spk_list):合成目标演讲者的名称。

开始推理:注意,在44k目录中,有几个模型文件,一般用G开头,这里的模型文件有什么不同,作者暂时不清楚󿀌还要看官方wiki才知道。

# 这里用自己训练的模型代替,G模型࿰通常使用c;路径在./logs目录下!cd ./so-vits-svc && mkdir -p results/one && \python inference_main.py \-m "logs/44k/G_103200.pth" \-c "configs/config.json" \-n "one/1_1_tt_(Vocals)_(Vocals).wav" \-t 0 \-s "Amiao"

b19b2964946d428bae1597f343302fa1.png

推理完成后,纯人声数据࿰输出c;可以先听听,下图,

a317cf7b96e746b38ab772ac20f1b8b0.png

from IPython.display import Audio,displaysound_file = './so-vits-svc/results/one/1_1_tt_(Vocals)_(Vocals).wav_0key_Amiao_sovits_pm.flac'display(Audio(sound_file))。

Step 11:人声与伴奏的结合。

Step 11:人声与伴奏合并。

这是大功告成前的最后一步。

首先要安装这个库,

pip install pydub。

 然后运行以下代码�注意事项写在代码备注中,这里再强调一下,

vocal_audio是刚才推理的结果。

instrumental_audio是我们分离的余多田光的伴奏。

from pydub import AudioSegmentfrom IPython.display import Audio,displayvocal_audio = './so-vits-svc/results/one/1_1_FirstLove_(Vocals)_(Vocals).wav_-5key_Amiao_sovits_pm.flac'instrumental_audio = './so-vits-svc/raw/one/1_FirstLove_(Instrumental).wav'save_path = './so-vits-svc/results/one_Amiao.wav'sound1 = AudioSegment.from_file(instrumental_audio, format='wav')sound2 = AudioSegment.from_file(vocal_audio, format='flac')# sound2 += 2 # sound2音高+5output = sound1.overlay(sound2) # 将sound2叠加到sound1上# output = sound1.overlay(sound2,position=5000) # 将sound2叠加到sound1上,outputt从第5秒开始叠加.export(save_path, format="wav") # 保存文件print('Export successfully!')display(Audio(save_path))。')display(Audio(save_path))。

结论:3451e69f5aba4d5cbc5eaba107b5375d.png

很久没有更新了,但根本无法忍受对大型人工智能模型的好奇,这个项目很简单,很小,但这也是一次尝试。留点笔记󿀌做个纪念。最后吐槽,Ai似乎没有我自己唱的那么好。

FirstLove 人工智能模拟空耳字幕。

【我要纠错】责任编辑:新华社