前言

随着ChatGPT的爆火,AIGC(人工智能生成内容)再一次走到人们眼前。尤其是在文本、图像生成领域,通过GPT-4、Midjourney等应用生成各种令人惊叹定的文本和图片。

但 AI 在生成方面的能力,可远非如此如此。

我用长约一个小时的音频数据,训练了一个 AI 音色转换模型,生成了这首歌曲,效果如下所示,大家可以在评论区留言猜猜是谁?

小半-AI合成

视频里所使用的技术是 so-vits-svc,是音频转音频,属于音色转换算法,支持正常的说话,也支持歌声的音色转换。下面具体介绍如何使用so-vits-svc

一、准备工作

训练数据很关键,越多高质量的音频数据,效果越好,建议至少准备一个小时以上的音频。

显卡建议使用 N 卡,且显存 8G 以上。

我将项目所需要的代码、工具整理了出来,如有需要可以在评论区留言或者通过下方链接联系我。

当然,也可以直接用开源代码直接部署,地址如下:

GitHub - svc-develop-team/so-vits-svc: SoftVC VITS Singing Voice Conversion

二、环境安装

1.安装pytorch深度学习框架

需要安装pytorchtorchaudiotorchvision三个库

参考我之前写的https://yunlord.blog.csdn.net/article/details/129812705?spm=1001.2014.3001.5502

2.安装相关依赖

可以看到下载的项目中包含两个requirements.txt,以windows为例:

进入到项目中,通过prompt输入以下指令:

pip install -r requirements_win.txt

三、数据处理

训练音频、还有需要预测(或者说转换)的音频,都必须是人物的干声。换句话说,音频中不能包含背景音、伴奏、合声等,所以无论是训练和预测,都需要对数据进行处理。

1.提取人声

我们可以通过UVR5 这个软件实现伴奏与人声分离。

在 Windows 下可以直接使用,打开软件,按照如下配置:

运行即可分离人声和伴奏。

然后再按照如下配置,去除合声:

经过提取出的干净人声音频就可以用来训练。

2.切割音频

不过因为音频太长,不要超过三十秒,很容易爆显存,需要对音频文件进行切片。

我们通过 Audio Slicer这个工具实现音频切分 。

直接运行 slicer-gui.exe。

填写输入路径,填写输出路径,其它参数都默认即可,这样就会得到切分好的音频段。

建议切完之后逐段听下,将效果不好的删除,高质量的音频比数量多的效果更好。并且如果还有时长超过30s的可以通过写的python音频切割代码,进行截切。

在项目的 so-vits-svc-4.0/dataset_raw 目录下创建一个文件夹,比如我的是 wang_processed,将处理好的数据放到里面。

四、训练模型

在训练模型前,我们需要下好原始模型,并将其放到对应位置

  • checkpoint_best_legacy_500.pt放入hubert文件夹下
  • 将D_0.pth和G_0.pth放入logs/44k目录下

1.数据预处理

接下来可以直接运行项目里面的1.数据预处理.bat

这个脚本就是按照步骤,运行各个 py 脚本:

(1) 重采样至44100Hz单声道

python resample.py

(2)自动划分训练集、验证集,以及自动生成配置文件

python preprocess_flist_config.py

(3)生成hubert与f0

python preprocess_hubert_f0.py

处理完毕后,会在 datset/44k 下生成一个文件夹,里面的数据如下图所示:

可以删除 dataset_raw 文件夹了。

2.模型训练

直接运行项目中的2.训练.bat 即可开启训练。

python train.py -c configs/config.json -m 44k

如果显卡够好,可以增加 batch_size 提高训练速度,对应的配置文件在 configs/config.json 文件里。

这个训练时间很长,个人觉得如果数据较好的话,训练到30000轮以上就有一个不错的效果。

3.聚类模型训练

直接运行项目中的3.训练聚类模型.bat 即可开启训练,这个比较快,几分钟即可跑完。

这个主要是可以减小音色泄漏,使得模型训练出来更像目标的音色(但其实不是特别明显),但是单纯的聚类方案会降低模型的咬字(会口齿不清)(这个很明显),本模型采用了融合的方式,可以线性控制聚类方案与非聚类方案的占比,也就是可以手动在"像目标音色" 和 "咬字清晰" 之间调整比例,找到合适的折中点。

使用聚类前面的已有步骤不用进行任何的变动,只需要额外训练一个聚类模型,虽然效果比较有限,但训练成本也比较低。

  • 训练过程:

    • 执行python cluster/train_cluster.py ,模型的输出会在logs/44k/kmeans_10000.pt
  • 推理过程:
    • inference_main.py中指定cluster_model_path
    • inference_main.py中指定cluster_infer_ratio0为完全不使用聚类,1为只使用聚类,通常设置0.5即可

4.推理预测

(1)准备干声

准备一首歌的干声,干声可以按上述音频素材准备那样处理,通过UVR5提取一段不超过90s的干声素材。

(2)修改模型名

修改 app.py 里的这一行:

训练好的模型存放在了 logs/44k 目录下,这里改为训练好的模型地址,以及对应的配置文件,最后是第三步生成的 pt 文件路径。

(3)运行web

直接运行项目中的4.推理预测.bat。

程序会直接开启一个 webui,将开启的 url,直接复制到浏览器地址栏中打开即可。

就是一个简单的 Web 页面,里面的参数,可以直接使用默认的,放入一个音频,即可转换音色。

总结

勿用技术做恶,这个必须强调来说。本教程仅供交流学习使用。

随着AI技术的不断发展,各种难以想象的事情AI都能够做到,我们能做到的就是规范技术发展,用AI做一些对社会有益的事情。

欢迎大家在评论区留言猜猜是谁?

参考:

1.AI声音克隆教程 - 哔哩哔哩

2.so-vits-svc3.0 中文详细安装、训练、推理使用教程_Sucial的博客-CSDN博客

3.so-vits-svc/README_zh_CN.md at 4.0 · svc-develop-team/so-vits-svc · GitHub

手把手教你声音克隆(so-vits-svc)相关推荐

  1. 手把手教你用JAVA实现“语音合成”功能(文字转声音)标贝科技

    手把手教你用JAVA实现"语音合成"功能(文字转声音)标贝科技 前言 什么是语音合成? 将文本转换成自然流畅的语音,本篇文章将介绍"实时在线合成"(文本长度不得 ...

  2. 手把手教你用JAVA调用Websocket实现“声音转换”功能(变声)标贝科技

    手把手教你用JAVA调用Websocket实现"声音转换"功能(变声)标贝科技 前言 什么是声音转换? 基于深度学习和迁移学习技术,精准将原说话人的声音转换为目标说话人,同时保留原 ...

  3. 手把手教你用JAVA实现“声音复刻”功能(复刻你的声音)标贝科技

    手把手教你用JAVA实现"声音复刻"功能(复刻你的声音)标贝科技 前言 什么是声音复刻? 使用少量的用户声音,短时间内快速为用户量身打造个人定制音色 一.内容太长不愿意看,直接使用 ...

  4. 手把手教你用JAVA实现“语音识别”功能(声音转文字)标贝科技

    手把手教你用JAVA实现"语音识别"功能(声音转文字)标贝科技 前言 什么是语音识别? 将自然语音转换为文本信息,本篇文章将介绍"一句话识别"(对60秒以内的语 ...

  5. 【玩转华为云】手把手教你利用ModelArts识别偶像的声音

    本篇推文共计2000个字,阅读时间约3分钟. 华为云-华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器.云数据库.云安全等云计算服务,软件开发服务, ...

  6. 电视html转vga没有声音,手把手教你排除HDMI转VGA常见故障

    最近几年出产的笔记本.电玩.网络盒子等设备基本都配备了最新的HDMI高清接口,而对于仍然在使用旧电视.投影仪等只带有VGA接口设备的家庭,想要把带有HDMI接口的设备连接到大屏电视机上,只能通过HDM ...

  7. 手把手教你走进Hyperledger Fabric

    现在,Blockchain是业内新的热门话题.但是,寻找良好的资源来学习这项引人入胜的技术并不是一件容易的事.为了让其他人更容易学习,我开始在区块链和分布式分类帐技术(DLT)平台领域开展一系列工作. ...

  8. AI:百度飞桨EasyDL多门视频课程,手把手教你如何定制高精度AI模型

    AI:百度飞桨EasyDL多门视频课程,手把手教你如何定制高精度AI模型 目录 百度飞桨EasyDL多门视频课程,手把手教你如何定制高精度AI模型 百度飞桨EasyDL多门视频课程,手把手教你如何定制 ...

  9. 数字电路实验怎么接线视频讲解_家庭影院中音箱、功放、投影机、4K播放机不知道怎么连接?手把手教你...

    家庭影院中音箱.功放.投影机.4K播放机不知道怎么连接?手把手教你 有不少用户收到从家庭影院器材之后,表示完全不会连接.翻看说明书也觉得头大,知识太多,然而却很难找到要点. 今天主要跟大家讲讲如何连接 ...

最新文章

  1. [转载]深入探索.NET框架内部了解CLR如何创建运行时对象
  2. PyQt5 技术篇-调用字体对话框(QFontDialog)获取字体,控件设置字体。
  3. 60%的安卓APP存在漏洞,平均每个有39个漏洞
  4. 为了30分钟配送,盒马工程师都有哪些“神操作”?
  5. MBR的Linux分区机制启动过程,linux系统启动流程(MBR)
  6. java for新循环_Java 8 新语法习惯 (for 循环的函数替代方案)
  7. HDFS数据管理与容错
  8. Windows cmd终端美化:Windows terminal背景图
  9. wps word文档生成目录的时候显示断裂会生成大纲怎么办_橙瓜码字小说自动生成器,对话描写,景物描写,外貌描写自动生成...
  10. SVN下载 1.11.0版本 win7 32位 安装文件及中文语言包
  11. TX-LCN优化介绍
  12. Centos 下解压和压缩rar文件
  13. java 6u45 no sni 2_sjscxz.taobao.com
  14. 金地农村土地承包经营权证打证系统
  15. python ppt转图片_ppt一键转图片和pdf
  16. Android 真正的3D Gallery
  17. 基于Spring+Spring MVC+Mybatis的B2C购物网站
  18. cvs update 用法_CVS客户端使用指南
  19. 美国计算机属于敏感专业吗,美国留学F1签证中最常见被check的14个敏感专业
  20. 【matlab 图像处理】邻域处理与模板运算

热门文章

  1. 阿里巴巴资深架构师熬几个通宵肛出来的Spark+Hadoop+中台实战pdf
  2. Win7/Win10禁用所有任务计划批处理
  3. DailyFi - 11.11| Tokemak C.o.R.E.2. 投票上线,Nansen 即将集成 Solana
  4. 线程和进程 并发和并行
  5. java中正则表达式的应用
  6. Java模拟文件发送给服务器,服务器将文件转发给其他用户,并保存到服务器本地,其他用户可以接收,并保存到本地磁盘,支持各种文件格式,并解决通信中服务器怎么区分客户端发来的文件类型
  7. 老菜鸟看软件开发的管理 二
  8. Linux之lrzsz命令安装及使用
  9. 开启Mysql主从复制
  10. vmware workstation 9安装教程(图文)