泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

这篇具有很好参考价值的文章主要介绍了泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在做AIGC的项目,不过是与图片相关的,现在的模型效果可比前几年图片替换效果好多了。之前尝试过用 faceswap 工具来进行人脸替换的,具体可以参看下我之前的这篇文章:https://blog.csdn.net/sinat_26918145/article/details/79591717

 文章来源地址https://www.toymoban.com/news/detail-459682.html

现代的模型对于图生图的支持效果已经非常好了,相信对于美术行业,这是一场影响很深远的变革。也许我们正站在一个新的时代交叉路口,可能多年后回忆起当下的一瞬间,才后知后觉我们经历了一段什么样的时代开端。

好了,回到主题,这一篇文章主要是介绍如何使用音频模型,转换成你想要的歌手声音,得益于AI孙燕姿的火爆全网,让我也迫切想尝试一下 AIsong 歌曲转换。

目前来说比较火的开源 SVC 主要有以下几种:

  • rvc: https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI
  • diff-svc: https://github.com/prophesier/diff-svc
  • so-vits-svc: https://github.com/svc-develop-team/so-vits-svc

语音转换的目标是将源语音转换为目标语音,保持内容不变。提出了自监督表示学习用于语音转换

离散内容编码表示会丢失一些语言内容,导致发音不准确。为此,提出了通过预测离散单位分布学习的软语音单位。通过建模,软语音单位捕捉更多的内容,提高了转换语音的效果。

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

 

在语音转换系统架构中,离散内容编码主要包含两个部分的实现:

  1. 离散内容编码器:将音频特征聚类,生成一系列离散的语音单位序列
  2. 软内容编码器:被训练用于预测离散语音单位

除此之外Acoustic model将离散/软语音单位转换为目标声谱图。 vocoder语音合成器将声谱图转换为音频波形。

废话不多说,前期铺垫了这么多,我们下面直接开始操作~

 

一、前期准备

刚开始模型训练前,我们需要搜集大量的目标人物的音频素材,如果是需要以你自己声音为基础的转换模型,则需要录制你自己的声音。这里的素材多少会直接影响到你模型训练的质量,一般建议提供 100 分钟以上的人声素材

如果不是自己的声音,建议可以去网上搜集需要的人声音频。我这边使用的是阿B上的视频素材,这里可以使用这里推荐的工具(传送门),直接下载对应的视频or音频,非常方便~

这里我下载了差不多100分钟的音频

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

准备好音频素材后,需要对音频文件进行人声和背景音的分离,因为背景音对于模型的训练有干扰,单纯的人声可以让模型的声音效果和目标更拟合。这里使用到的工具是 demucs

安装:

pip install -U demucs

分离人声和背景音

demucs "音频文件地址" -o "输出文件目录" -n mdx_extra --two-stems=vocals

生成后输出文件目录有两个文件,一个是人声,一个是背景音

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

把所有的音频文件都进行人声分离后,接下来就要对音频进行切片处理了,因为人声素材文件的大小过大会影响模型训练的速度,所以我们还需要对其切片,将它变成一个比较小的人声切片文件。这里使用的工具是 audio-slicer

https://github.com/openvpi/audio-slicer 

git clone https://github.com/flutydeer/audio-slicer.git
cd ./audio-slicer
pip install -r requirements.txt
python ./slicer-gui.py

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

 

二、模型训练

模型训练主要是使用的是 https://github.com/svc-develop-team/so-vits-svc/tree/4.1-Stable

你可以在自己的显卡上训练,也可以在云端上进行锻炼。因为我本机电脑的显卡不行,所以使用云端的服务器来进行训练。参考了很多教程,感觉很多博主都推荐 AutoDL 这个平台,所以我们也使用这个,避免走弯路~

这里租用一台 v100 的算力服务器

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

镜像这里选择:

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

选择 v3 或者 v4 模型都可以

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

买完之后进入控制台,接下来就是使用网盘把我们处理过的人声素材导入到实例容器中

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

点击“AutoPanel”进入控制台

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~
泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

 可以先把训练数据上传到阿里云,在这里用阿里云app扫码登录。对需要上传到容器内的训练集文件夹,点击下载,然后就可以自动同步到容器内的这个文件夹目录里的,整个过程耗时会稍微久一点。

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

 至此,我们的数据集就全部准备好了,下面就准备训练了。

 

二、模型训练

回到我们的控制台,点击 JupyterLab 进入容器内

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

进入 JupyterLab 后,打开项目内的 README-v4.ipynb ,可以看到模型作者很细致的将模型训练每一步都做成了可视化操作的命令步骤解析。第一步就是我们的训练集从 /dataset 文件夹目录,搬运到 /dataset_raw。只需要鼠标点击模型作者第一步 [1]: 所标识的python命令,然后点击运行按钮即可,这个点击后需要小小等待一会,它开始运行时命令下面会有相关的输出提示。

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

在此文件夹目录下,数据集就安放正确了。比如你训练数据集的文件夹名称是 Paimondata 则会在此目录下生成一个同样的目录,其实你可以直接把数据集导入到这里也行,不用网盘。

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

 在文档中也清楚的说明了,文件夹名称就是你训练的人声名字,可以放多个你想要训练的声音目标

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

 

 第二步就是对数据集进行采样至 44100hz。第三步则是进行自动划分训练集。这两部分也是一样,按运行按钮执行。

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

 接下来就是对配置文件 /config/config.json 文件进行配置,编辑后进行修改:把 "learning_rate"改成 0.0004,把 "batch_size"改成24,把 "keep_ckpts"改成10,然后按Ctrl+S保存!!!

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

learning_rate和batch_size这两个参数可以理解为训练速度和训练质量,因为我们用的V100 32G显卡,这块直接固定死数值就可以,keep_ckpts是保存多少个模型,因为声音模型训练是不会自动停止的,每几千步就会给你保存一个模型,所以我们可以让他自动保存最新的10个模型让我们来选一个最好的。

接着需要生成 hubert 和 f0,这里是后面推理的时候添加的辅助选项,为了修饰推理出来的音频更加顺滑

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

如果你是第一次训练,则无需进行清理,直接跳到训练这一步就行了,不过在训练这里,按照文档注释的,使用终端来进行训练命令的执行。

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~
在启动页点击“终端”,进入终端后就可以上面训练中的 Python 命令拿来执行了

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

 注意一下,这里需要在项目的当前目录才能执行,如果不是项目目录可以

cd ~/autodl-tmp/so-vite-svc

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

出现日志后就说明开始训练了,可以看到每训练200步,train.log 日志就记录相关的日志,也就是控制台中的输出。没当800步的时候就会保存一个模型,工程会默认保存最新的十个模型,模型目录如下

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

然后我们可以等待它的模型了,一般达到10000步的时候效果会比较好一些,这个过程差不多五个小时,这时候咱们可以去吃饭喝茶遛弯干别的事情了,哪怕关掉电脑都行,训练命令并不会因为与 autodl 的网页连接中断而停止,所以不用担心。

 

三、声音推理

这里网上的教程都是说把模型文件拉取到本地来进行推理,但是个人不太建议这样子做,因为本地的python环境需要安装很多的依赖不说,还不一定能装载成功,既然云端都提供了整个工程了,为什么不在云端进行推理呢。云端推理有 webui 和 脚本 两种方法,两个我试过了,webui会出现推理失败的情况,脚本就非常稳定,能成功产出推理音频。
和数据预处理一样,我们需要把需要被转换的音乐,进行人声和背景音的分离,使用我们上面的工具 demucs 来处理,步骤是一样的。得到音乐的人声后,我们把它放到云端工程的这个目录下。
泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~
上图中 vocals.wav 就是整首歌的人声部分,这里因为音频有四分钟左右,整首进行推理的话,会直接报内存使用超过上限的错误,所以我又用上面提到的 auto-slicer 工具来进行切分人声,得到 0 到 5 个分片文件。
接下来打开终端,运行一下命令:
python inference_main.py  -m "logs/44k/G_{模型编号}.pth" -c "configs/config.json" -n {raw目录下需要转换的人声文件名} -t 0 -s {上面你数据训练集的文件夹名称也就是文档里的speaker name}

关于推理参数,文档有很详细的描述

#用脚本推理 
!python inference_main.py 
#推理结果会存放在so-vits-svc/results文件夹
#如果不编辑推理脚本,参数直接附加在上面的指令后 
#如 !python inference_main.py -m "logs/44k/G_30400.pth" -c "configs/config.json"...
#每个参数需要用""括起来
#必填参数
#-m, --model_path:模型路径。
#-c, --config_path:配置文件路径。
#-n, --clean_names:wav 文件名列表,放在 raw 文件夹下。
#-t, --trans:音高调整,支持正负(半音)。
#-s, --spk_list:合成目标说话人名称。
#可填参数
#-a, --auto_predict_f0:语音转换自动预测音高,转换歌声时不要打开这个会严重跑调。
#-cm, --cluster_model_path:聚类模型路径,如果没有训练聚类则随便填。
#-cr, --cluster_infer_ratio:聚类方案占比,范围 0-1,若没有训练聚类模型则填 0 即可。

所有的推理产出都在 result 文件夹中

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~
可以一个一个的下载下来本地进行播放,如果发现效果不好,则重新选择模型进行推理,一般来说训练次数越多,声音的推理产出结果和训练的目标对象越相似。
在本地后,你可以像我一样用剪印或者其他的编辑软件进行音频的合成。也就是把上面的推理结果和歌曲的背景音进行重新剪辑合并。

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~

 

最后的最后让我们一起来听一下成片吧~~~

链接: https://pan.baidu.com/s/1lwCvlZc91UYmPmtICksLIQ 提取码: dezw 

 

到了这里,关于泰裤辣!!!手摸手教学,如何训练一个你的专属AI歌姬~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.cnblogs.com/blackbinbin/p/17434084.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手摸手带你初探Vue 3.0

    距离Vue 3.0正式发布已经过去一段时间了,2月7日Vue团队正式宣布Vue 3正式成为新的默认版本。最近接触的新项目也使用Vue 3.0来开发,因此有必要对它进行一波总结和学习。 在最开始的时候,Vue仅仅是一个运行时库。但经过多年的发展,它已经逐渐变成了一台包含许多子项目的

    2024年02月16日
    浏览(12)
  • 【腾讯云Finops Crane集训营】利用云原生成本优化项目实现降本增效泰裤辣~

    Crane 是一个基于 FinOps 的云资源分析与成本优化平台。在保证客户应用运行质量的前提下实现极致的降本。 云原生技术可以帮助企业实现降本增效,提高业务的灵活性和可扩展性。云原生技术的降本增效主要是由以下因素推动的: 成本压力:随着业务规模和数据量的不断增长

    2024年02月05日
    浏览(14)
  • 手摸手教你写任务中心-积分领取&消耗&回收

    继上一篇签到任务之后呢, 就有朋友让我写一下任务积分的领取和使用, 以及回收; 其实前面两种都不难, 就只是积分的加减而已, 真正麻烦的是回收, 有回收的话你就需要考虑到每笔积分存在多种状态的可能了; 明细表(mysql) 记录积分的每一笔获取, 消耗的回收的记录, 并且回收

    2024年02月08日
    浏览(11)
  • 不用魔法,快速、手摸手上线Midjourney!【附源码】【示例】

    首先来一波感谢: 感谢laf提供赞助,目前可以免费使用Midjourney进行开发和测试。 感谢白夜、米开朗基杨@sealos.io的耐心解答,让我对laf有了更多的使用与了解。 什么是laf?来了解下。 文末有【示例】 废话不多说,进入正题。 laf在做一个活动,可以使用快速上手Midjourney《人

    2024年02月05日
    浏览(12)
  • 手摸手带你 在Windows系统中安装Istio

    通过负载均衡、服务间的身份验证、监控等方法,Istio 可以轻松地创建一个已经部署了服务的网络,而服务的代码只需很少更改甚至无需更改。 通过在整个环境中部署一个特殊的 sidecar 代理为服务添加 Istio 的支持,而代理会拦截微服务之间的所有网络通信,然后使用其控制

    2024年02月06日
    浏览(9)
  • 手摸手2-springboot编写基础的增删改查

    创建controller层 实现 test 表中的添加、修改、删除及列表查询接口(未分页) 添加service层接口 service层实现 添加mapper层 mapper层对应的sql 添加扫描注解,对应sql文件的目录

    2024年02月10日
    浏览(7)
  • 手摸手接入Github实现Oauth2第三方登录

    最近在学习oauth2授权登录流程,oauth2简单来说就是接入第三方应用(qq、微信、github、gitee等),不用在本站登录,而是去请求第三方应用的用户信息完成登录。 下面就一起来看一下如何接入github实现第三方登录 首先,我们需要在github中添加OAuth App,登录你的github(如果还有

    2024年02月04日
    浏览(17)
  • 【Java之JAR包解析】(一)如果你也跟我一样搞懂了rt.jar,那真的泰裤辣! · 上篇~

    JAR (Java ARchive) 是一种 Java 打包文件格式,它可以 将一组 Java 类文件、相关资源和元数据打包到一个单独的文件中 。JAR 文件通常用于分发 Java 应用程序或库,并且可以在不同平台上运行。 JAR 包是一种方便的方式来组织和管理 Java 代码和依赖项,并且可以轻松地与其他开发人

    2024年02月04日
    浏览(15)
  • 手摸手教你Vite+Vue3项目初始化及开源部署到GItee

    本片文章主要记录项目的环境,项目搭建。 在开始本次学习中,鉴于你有前端三件套和vue的知识基础。 文档创建于2023年5月20日,大家都去过情人节了~我在肝代码! 环境的搭建 node版本使用18.16.0。 目前(2023.05.20)的稳定版本,这里推荐使用nvm来管理node的版本。Nvm使用教程

    2024年02月04日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包