用AI打造一个属于自己的歌手,让她C位霸气出道
一、前言
今天玩儿点儿特别的,AI大行其道的今天,还没玩过AI模型的程序员绝对不是个好厨子。我本人比较喜欢音乐,但是一直没有出道,很是遗憾。那么今天,我就使用AI模型亲手打造一个堪比真人的歌手,让她C位霸气出道。
首先,让这位女歌手露一嗓子:点我试听
唱的还不错吧,接下来咱们来分析这位歌手是如何打造出来的。
二、技术
飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心框架、基础模型库、端到端开发套件、工具组件和服务平台于一体,2016 年正式开源,是全面开源开放、技术领先、功能完备的产业级深度学习平台。
上面的介绍是不是很唬人?从百度飞桨官网贴过来的。显然,本文使用的技术是基于百度飞桨框架打造,当然了,你要让我从零开始搞AI......那我还是选择当厨子。
飞桨Hub(PaddleHub)是基于PaddlePaddle生态下的预训练模型,旨在为开发者提供丰富的、高质量的、直接可用的预训练模型。
说白了,这个飞桨Hub是模型集中营,提供了很多已经训练好的模型,用户可以拿来直接使用,而不需要再耗费过多的精力、资源去自己训练模型。
Python,飞桨平台基于Python语言实现,不必多说了,毕竟,Python是世界上最好的语言.java。
Anaconda,是一个常用的python包管理程序,可以方便的管理我们的多个Python环境。比如你的A软件需要基于Python3.7,B软件需要基于Python3.8,用Anaconda可以方便的对不同的环境进行管理和切换。
三、环境搭建
1、安装Anaconda
到官网https://www.anaconda.com/或者https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载一个较新的版本即可。
安装过程很简单,猛点下一步即可,建议你安装到C盘之外的盘。
即便你装在了D盘,但是创建环境的时候,环境信息默认还是会被创建到C盘,所以还应该做如下操作:
编辑C:\Users\你的用户名\.condarc文件(如果没有此文件请手动创建),文件内容如下:
channels:
- defaults
envs_dirs: [D:\anaconda3\envs]
pkgs_dirs: [D:\anaconda3\pkgs]
这样环境信息就会被保存在D盘了。
2、创建Python环境
找到刚刚安装的anaconda,打开Anaconda Prompt命令行工具,执行如下语句:
conda create --name paddle_env python=3.8 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
以上代码表示,创建一个Python3.8的环境,环境名称为paddle_env,软件源从https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 地址下载。
3、安装百度飞桨环境
输入如下命令,表示接下来的所有操作,我要在刚才创建的那个名为paddle_env的环境中进行:
conda activate paddle_env
输入如下命令,表示安装百度飞桨基础环境:
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
输入如下命令,表示安装百度飞桨Hub:
pip install paddlehub -i https://mirror.baidu.com/pypi/simple
最后,我们再新建一个环境变量HUB_HOME。因为paddlehub的模型下载安装时,会默认装在c盘。我们将HUB_HOME指到其他的磁盘即可。
四、安装模型
上面将基础环境搭建好了,接下来我们安装语音合成模型Diffsinger。
DiffSinger,一个基于扩散概率模型的 SVS 声学模型。DiffSinger 是一个参数化的马尔科夫链,它可以根据乐谱的条件,迭代地将噪声转换为旋律谱。通过隐式优化变异约束,DiffSinger 可以被稳定地训练并产生真实的输出。
上面在说什么,我也看不太懂。但通俗的说,这个模型可以将乐谱转换为旋律谱。
首先,这个模型依赖如onnxruntime包,我们通过如下命令进行安装:
pip install onnxruntime -i https://mirror.baidu.com/pypi/simple
然后,我们安装Diffsinger模型:
hub install diffsinger==1.0.0
五、创造歌手
目前万事俱备,我们开始创造歌手。
首先我们看这个模型的调用参数是怎样的:
inputs (Dict[str, str]): 输入数据格式如下;
{
'text': '小酒窝长睫毛AP是你最美的记号',
'notes': 'C#4/Db4 | F#4/Gb4 | G#4/Ab4 | A#4/Bb4 F#4/Gb4 | F#4/Gb4 C#4/Db4 | C#4/Db4 | rest | C#4/Db4 | A#4/Bb4 | G#4/Ab4 | A#4/Bb4 | G#4/Ab4 | F4 | C#4/Db4',
'notes_duration': '0.407140 | 0.376190 | 0.242180 | 0.509550 0.183420 | 0.315400 0.235020 | 0.361660 | 0.223070 | 0.377270 | 0.340550 | 0.299620 | 0.344510 | 0.283770 | 0.323390 | 0.360340',
'input_type': 'word'
}
sample_num (int): 生成音频的数量;
save_audio (bool): 是否保存音频文件;
save_dir (str): 保存处理结果的文件目录。
其中需要以下说明:
text:就是指要唱的歌曲歌词;
notes:表示歌词对应的曲谱;
notes_duration:表示歌词中每个字要唱的时长;
接下来,我们准备以下Python代码:
import paddlehub as hub
module = hub.Module(name="diffsinger")
results = module.singing_voice_synthesis(
inputs={
'text': '小酒窝长睫毛AP是你最美的记号',
'notes': 'C#4/Db4 | F#4/Gb4 | G#4/Ab4 | A#4/Bb4 F#4/Gb4 | F#4/Gb4 C#4/Db4 | C#4/Db4 | rest | C#4/Db4 | A#4/Bb4 | G#4/Ab4 | A#4/Bb4 | G#4/Ab4 | F4 | C#4/Db4',
'notes_duration': '0.407140 | 0.376190 | 0.242180 | 0.509550 0.183420 | 0.315400 0.235020 | 0.361660 | 0.223070 | 0.377270 | 0.340550 | 0.299620 | 0.344510 | 0.283770 | 0.323390 | 0.360340',
'input_type': 'word'
},
sample_num=1,
save_audio=True,
save_dir='./outputs'
)
我们执行以上脚本:
python test.py
最终生成了开头贴出的唱段。
上面生成的是翻唱歌曲。接下来,我们再为歌手写一首原创主打歌曲,鄙人不才作词如下哈哈:
双手敲下黑白键盘,这首音乐你是否会喜欢
作曲可难倒我了,我打算找AI来帮忙,找百度文心一言生成以下曲谱:
C#4/Db4 | F#4/Gb4 | G#4/Ab4 | A#4/Bb4 | F#4/Gb4 | F4/G4 | C#4/Db4 | C#4/Db4 | rest | C#4/Db4 | A#4/Bb4 | G#4/Ab4 | F#4/Gb4 | C#4/Db4 | G#4/Ab4 | A#4/Bb4 | G#4/Ab4 | F#4 | C#4/Db4
每个字的持续时间瞎编一下:
0.407140 | 0.376190 | 0.242180 | 0.509550 | 0.183420 | 0.315400 0.235020 | 0.361660 | 0.223070 | 0.377270 | 0.340550 | 0.299620 | 0.344510 | 0.283770 | 0.323390 | 0.360340 | 0.509550 | 0.183420 | 0.315400 0.235020 | 0.661660
重新执行Python脚本,主打歌生成了:点我试听
六、结语
AI大时代,AI技术每个人都可以触手可及,程序员群体更是近水楼台,最起码可以起到自我娱乐的效果。
我们可以将以上技术部署到服务器,做成网站、小程序、APP等,借助AI平台的能力,实现自动生成歌词,自动生成曲谱,自动生成唱段等,实现全民娱乐。
作为一个程序员,云服务器现在应该是标配了,学生可以用来学习,菜鸟可以用来练手,老鸟玩点有趣的东西偶尔赚点小钱。你如果想买一台云服务器来玩儿,下面是直达腾讯云优惠专区的链接:
用AI打造一个属于自己的歌手,让她C位霸气出道的更多相关文章
- [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(四)
一步步打造一个简单的 MVC 电商网站 - BooksStore(四) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...
- [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office
打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...
- [后端人员耍前端系列]AngularJs篇:使用AngularJs打造一个简易权限系统
一.引言 上一篇博文已经向大家介绍了AngularJS核心的一些知识点,在这篇博文将介绍如何把AngularJs应用到实际项目中.本篇博文将使用AngularJS来打造一个简易的权限管理系统.下面不多 ...
- Linux强化论:15步打造一个安全的Linux服务器
Linux强化论:15步打造一个安全的Linux服务器 Alpha_h4ck2016-11-30共28761人围观 ,发现 8 个不明物体专题系统安全 可能大多数人都觉得Linux是安全的吧?但我要告 ...
- 在sublimetext上打造一个兼容virtualenv的web&python开发环境
利用Sublimetext3&virtualenv 打造一个Web&Python IDE 注: 环境:window|python3;以下使用的sublimetext插件均用packag ...
- AngularJs打造一个简易权限系统
AngularJs打造一个简易权限系统 一.引言 上一篇博文已经向大家介绍了AngularJS核心的一些知识点,在这篇博文将介绍如何把AngularJs应用到实际项目中.本篇博文将使用AngularJ ...
- RethinkDB创始人教你如何打造一个伟大的互联网产品
关于作者 我叫Slava Akhmechet,本人是 RethinkDB 的创始人之一,RethinkDB是开源,分布式数据库,旨在帮助开发人员与运营商在打造实时应用时处理无结构数据 如何打造一个伟大 ...
- [.NET] 一步步打造一个简单的 MVC 网站 - BooksStore(一)
一步步打造一个简单的 MVC 网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 简介 主 ...
- [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(二)
一步步打造一个简单的 MVC 电商网站 - BooksStore(二) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 前: ...
- [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三)
一步步打造一个简单的 MVC 电商网站 - BooksStore(三) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...
随机推荐
- Git无法push提示报错443
更新 设置代理不能完美解决问题,需要检查本地的SSH配置是否正确,以及正确配置SSH密钥关联github账户 配置SSH参考链接: <GitHub如何配置SSH Key> https:// ...
- 2023ccpc大学生程序设计竞赛-wmh
这算是我第一次参加这种团队赛,感谢程老师给我这个机会.刚开赛还算比较顺利,一眼看出来A是个签到,拿下之后开始跟榜F题.一开始想法比较简单,就是排序,记录相邻两个数的差,然后再排序.wa了后以为是范围出 ...
- Nginx获取用户真实IP
Nginx获取用户真实IP地址 本人在一次项目中,使用Nginx需要获取到用户IP,本来可以很常规的获取的,可现实往往不常规,项目是前后端分离的,部署时,前端使用了Nginx进行了代理并转发,后端也使 ...
- GitHub搜索指令教程
in:根据某个关键词来进行检索 关键词: name:项目名称 description:项目描述 readme:项目帮助文档 语法: 需要检索的内容:in:name或description或readme ...
- 层叠样式表(CSS)2(环境:MyEclipse 10)
二.选择器 注:在head里面写选择器的内容.环境一直不变,所有HTML和css都是这个MyEclipse 10 1.基本选择器(每个选择器新建一个HTML网页测试学习) 元素选择器:按节点名称匹配元 ...
- typroa文件迁移时的图片问题
如下图所示设置即可 会自动在同级目录中创建img文件夹,并存储图片
- 您在 /var/spool/mail/root 中有新邮件
查看邮件 删除邮件 禁止系统启动邮件检查这样就再有邮件提示了 mail cat /dev/null > /var/spool/mail/root echo "unset MAILCHE ...
- Pytorch构建超分辨率模型——常用模块
Import required libraries: import torch import torch.nn as nn import torch.optim as optim from torch ...
- Python字符串操作函数split()和join()
字符串拆分 在python中有切片(Slice)操作符,可以对字符串进行截取,还提供了split()函数可以将一个 字符串分裂成多个字符串组成的列表.在使用split()函数来拆分字符串之前,我们先来 ...
- shopee的前景以及商用API(代码封装)
Shopee平台是东南亚和台湾地区最具代表性的电商平台之一,在过去几年里取得了巨大的成功.以下是Shopee平台的发展前景: 电商市场的快速增长:东南亚和台湾地区是人口众多.市场潜力巨大的区域,电商市 ...