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

写在前面:

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

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

目录

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。

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

2、在全部分类里,我们可以直接搜索开源项目so-vits-svc(也就是前段时间很火的AI孙燕姿用的模型项目)

Step 2:找到大模型项目

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

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

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

新建完成后,回到PAI平台,在左侧选择交互式建模(DSW),就可以看到创建好的实例,在操作栏,点击启动,然后会像下图这样先准备环境loading,

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

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

Step 4:进入Ai_singer教程

我们找到 ai_singer.ipynb这个文件,里面已经用ipython(Jupyter)的方式引导我们来一步一步训练模型。但是,这个示例我们是要自己改造的,因为我们不是用示例的数据,而是用自己的数据,只有这样才能训练一个基于自己声音的大模型(也避免有什么不清楚的版权问题)。

看一下整体的步骤(目录):

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

跟着目录往下,把预训练模型准备和数据下载的代码点击运行:

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

Step 6:训练数据准备

数据下载,这一步很关键。要将自己准备好的声音放上去,而不是用步骤里自带的。

注意放置的目录在:so-vits-svc/dataset_raw/

笔者这里自己创建了一个文件夹Amiao,没有用系统的C12数据。

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

1)人声伴奏抽取:

  • 通过自己在全民K歌录制的歌曲,用iPhone自带的快捷指令提取出歌曲为m4a格式,存入电脑。
  • 电脑安装UVR软件进行人声和伴奏分离:要两次分离,第一次分离伴奏和人声,第二次提纯人声。

2)音频切片:将分离好的纯人声以wav的格式,上传到自定义的文件夹,我这里用的是trani_data/one/这个目录。

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

# 先把用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)数据筛选:把切片好的声音片段,拿出来播放一下,看看有没有正好切到无声的,要删掉。

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

这是我自定义的目录,没有使用官方教程的C12目录。大概准备了300条左右10s的数据,如果要效果更好,应该准备更多数据,然后声音要有高音和低音,音域要广泛一些。

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

这一步只需要跟着官方教程走就行,注意路径要使用我们自定义的路径。

过程中有些库要自己安装后才能正常继续下去。

Step 8:生成音频特征数据

像这类库没有安装,在运行时根据控制台报错就能判断。

这样就完成特征数据生成。

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

这个模型训练时间一般要1天甚至更多时间。

Step 10:推理

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

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

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

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

开始推理:注意,在44k这个目录下有好几个模型文件,一般用G开头的就行,这里模型文件有什么不一样,笔者暂时不清楚,还要翻阅官方wiki才知道。

# 这里替换为自己训练的模型,一般用G模型,路径在./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"

推理完成后,输出的一份纯人声数据,可以先听听看,如下图,

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

Step 11:人声与伴奏合并

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

要先安装这个库,

pip install pydub

 然后运行如下代码,注意事项在代码备注里有写了,这里再强调下,

vocal_audio是刚才推理的结果

instrumental_audio是我们分离好的宇多田光这首歌的伴奏

from pydub import AudioSegment
from 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音高+5
output = sound1.overlay(sound2)  # 把sound2叠加到sound1上面
# output = sound1.overlay(sound2,position=5000)  # 把sound2叠加到sound1上面,从第5秒开始叠加output.export(save_path, format="wav")  # 保存文件
print('Export successfully!')display(Audio(save_path))

结语:

好久没更新了,但是按耐不住对人工智能大模型的好奇,这个项目很简单很微小,但也是一次尝试。留下一点笔记,做个纪念。最后吐槽一下,Ai唱的好像还没有我自己唱的好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言之猜数字小游戏

哈喽,大家好!我是冰淇淋加点糖。今天我们来用前面所学的知识来开发一个猜数字的小游戏,锻炼我们的编程能力和编程思维。 猜数字小游戏功能简介 1.随机生成一个1-100的数字。 2.玩家用户开始猜数字。 > 猜大了,提醒猜大了…

[米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-27浅谈XILINX BRAM的基本使用

软件版本:VIVADO2021.1 操作系统:WIN10 64bit 硬件平台:适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA 实验平台:米联客-MLK-H3-CZ08-7100开发板 板卡获取平台:https://milianke.tmall.com/ 登录“米联客”FPGA社区 http…

C#/WinForm 演示遗传算法

一、一览 二、遗传算法流程 种群初始:随机生成一组N个DNA,每个DNA上都有S个基因,每个DNA都有自己的r值(适度值)。r最大的DNA为种群最优。 选择操作:将每个DNA的r值占总体的比例作为新一代选取的概率&#…

2024 【Delphi 12】苹果ios开发环境配置(五星保姆级)

目录 一、创建证书 1. 创建证书签名请求:(在苹果电脑上操作): .certSigningRequest 文件 2. 创建证书:在苹果的 开发者网站 上操作 重复以上步骤并下载对应的证书文件如下: 3. 创建标识符(…

Debezium+Kafka:Oracle 11g 数据实时同步至 DolphinDB 运维手册

目前我们已经支持基于开源技术 Debezium Kafka,从 Mysql 和 Oracle 11g 实时同步数据到 DolphinDB 中。由于当前方案涉及到四个程序的部署,而且具体的 Source 同步任务和 Sink 同步任务还需要额外管理,在运维上具有一定难度。 本文将基于 O…

Ecology10中的CAS身份认证问题

单点登录(SSO)是一种身份验证解决方案,可让用户通过一次性用户身份验证登录多个应用程序和网站。实现SSO的方式有很多种,比如Kerberos、SAML、OAuth2、JWT、OpenID、CAS、LDAP等。 CAS CAS (Central Authentication Service) 最初…

西中区2024年度安全知识竞赛活动方案

为有效预防安全生产事故的发生,深化西中区全体员工对安全生产的认识,切实提升全体人员的安全意识和自我保护能力,夯实安全知识基础,丰富安全文化内涵,推动安全生产工作更加规范化、系统化,根据西中区安全生…

git 回滚的三种方式

按照从旧到新的顺序 你依次提交了 1 2 3 4 5 现在你想回到1 如何操作 第一种方法 hard reset git reset --hard 执行命令后 你会发现 效果实现了 东西都回到了那次更改 但是2345的更改都没了 并且你会发现 你有更新 这是因为这个hard reset 只会改本地的 远程的不改 一更新就…

EasyCVR视频汇聚平台:巧妙解决WebRTC无法播放H.265视频的难题

随着科技的飞速发展,视频监控已经成为现代安全管理不可或缺的一部分,广泛应用于智慧工地、智慧煤矿、智慧工厂、智慧社区和智慧校园等多个领域。在这个过程中,视频编码技术和实时通信技术显得尤为重要。EasyCVR视频汇聚平台,凭借其…

Python爬虫(一文通)

Python爬虫(基本篇) 一:静态页面爬取 Requests库的使用 1)基本概念安装基本代码格式 应用领域:适合处理**静态页面数据和简单的 HTTP 请求响应**。 Requests库的讲解 含义:requests 库是 Python 中一个…

机器人外呼有哪些优势?

机器人外呼,作为一种结合了计算机技术和人工智能技术的自动化工具,具有多重显著优势。以下是其主要优势的详细阐述: ### 1. 高效性 * **大幅提升工作效率**:机器人外呼可以全天候、不间断地进行工作,不受时间、地点和…

pytest+pycharm+HTMLTestReportCN实现接口自动化

前提:已安装pycharm,已配置python环境 第一步:新建一个py类,用来执行all的测试用例 import HTMLTestReportCN import unittest, os, yagmail# -*- coding: utf-8 -*- """ Time : 2024/9/2 14:50 Auth …

/单元测试

承接上文 统一异常处理&#xff0c;封装结果-CSDN博客 ******************************************** 登录业务 Service public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {Resourceprivate JwtUtils j…

数据库透明加密的定义与原理

数据库透明加密(TDE)是一种先进的加密技术&#xff0c;主要用于保护存储在数据库中的敏感数据&#xff0c;防止未经授权的访问和数据泄露。以下是对数据库透明加密的详细解析&#xff1a; 一、定义与原理 定义&#xff1a;数据库透明加密是一种在数据库管理系统(DBMS)中集成加密…

苹果笔记本电脑能不能玩游戏?苹果电脑玩游戏咋样?

过去Mac玩不了游戏最大的问题&#xff0c;就是图形API自成一体&#xff0c;苹果既不支持微软的DirectX&#xff0c;同时为了推广自家的Metal图形API&#xff0c;又对OpenGL和Vulkan两大主流的通用API敬而远之。游戏生态、硬件瓶颈让苹果电脑不适合玩游戏。 不过说到底&#xf…

点餐收银小程序

一、项目概述 Hi&#xff0c;大家好&#xff0c;今天分享的项目是《点餐收银小程序》。 系统含管理员/商家/用户三种角色&#xff0c;商家能维护菜式类别、维护菜品信息&#xff0c;用户在小程序能够选择门店&#xff0c;查看门店下各个分类的菜式信息&#xff0c;并进行加购…

ai免费生成ppt软件有哪些?我推荐秒出PPT

现在市面上的ai生成PPT软件非常的多。有收费的&#xff0c;也有不收费的&#xff0c;生成的效果也各不相同。要选择一个性价比高的确实难度不小。 我在使用了不少的产品之后&#xff0c;说一说我的心得。 首先就是&#xff0c;大部分免费的ai生成ppt产品并不好用。我怕不排除…

Cortex-A7的运行模式和寄存器组详解

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版2 Cortex-A7运行模式 2.1 运行模式 Cortex-A7共有9种运行模式&#xff0c;如下图所示&#xff1a; 除了用户模式之外其它模式均属于特权模式&#xff0c;在特权模式下处理器可以访问所有系统资源&am…

Golang | Leetcode Golang题解之第384题打乱数组

题目&#xff1a; 题解&#xff1a; type Solution struct {nums, original []int }func Constructor(nums []int) Solution {return Solution{nums, append([]int(nil), nums...)} }func (s *Solution) Reset() []int {copy(s.nums, s.original)return s.nums }func (s *Solu…

使用docker容器部署考试系统

8.30 回顾 1、使用harbor仓库 python --version yum -y update yum -y install python2-pip 部署考试系统 使用docker部署project-exam-system 1、在一台主机内&#xff0c;实现容器的编排看&#xff0c;发布考试系统 2、环境准备 docker docker-compose docker脚本 …