用AI打造一个属于自己的歌手,让她C位霸气出道

news2024/11/17 3:27:59

一、前言

今天玩儿点儿特别的,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平台的能力,实现自动生成歌词,自动生成曲谱,自动生成唱段等,实现全民娱乐。

作为一个程序员,云服务器现在应该是标配了,学生可以用来学习,菜鸟可以用来练手,老鸟玩点有趣的东西偶尔赚点小钱。你如果想买一台云服务器来玩儿,下面是直达腾讯云优惠专区的链接:

【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购icon-default.png?t=N7T8https://cloud.tencent.com/act/cps/redirect?redirect=5186&cps_key=814b8b5d55ef58acc94a1b6bf43d5a2b&from=console

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

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

相关文章

2023年中国消防报警设备市场规模现状及行业竞争趋势分析[图]

消防安全行业主要分为消防产品和消防工程两个子行业。消防产品又可细分成消防装备、消防报警、自动灭火、防火与疏散、通用与防烟排烟、消防供水等 6 大类,其中消防装备主要用于消防部队,其他 5 大类主要用于建筑物消防。 消防行业内容 资料来源&#x…

《低代码指南》——如何通过维格表实现生产采购管理

信息 通过维格表的低代码开发能力,实现从销售订单转为生产计划工单并按需拆解为物料采购减少手工录入和计算工作,补充成熟ERP对MRP的个性化需求限制提升供应链运转效率生产采购过程中你有没有遇到这些问题?​ 从采购到生产,再到入库,流程太繁琐?生产力低下?采购系统员工…

商业级质感磨皮插件Portraiture5.0最新中文版本

整个摄影后期行业都在推崇Portraiture或DR5磨皮,这是一个被奉为——高级磨皮面板,修图神器、顶级修图的的扩展面板!!而最近7月份Portraiture更新到5.0版本了,还叫嚣“完虐”DR5高级磨皮!! 今coc…

手写效果流式响应(langchain+fastapi+js)

这是一个前后端完整可用的小项目 后端是 Python 的 FastAPI 框架,调用 langchain 进行 openai 的模型对话。前端是纯html css javascript,没调用任何第三方库,方便集成到 Vue React 等现有前端项目。 聊天界面: 效果就是提问之…

dvadmin-打包发布-nginx-静态服务器配置-防火墙设置

文章目录 1.下载nginx2.nginx常用命令3.dvadmin打包发布4.防火墙设置 1.下载nginx 也从作者下载的网址下载:https://download.csdn.net/download/m0_67316550/88470098 2.nginx常用命令 注意:一定要在dos窗口启动,不要直接双击nginx.exe&a…

如何将数据库某列的值(如日期)作为表格的列名

如何将数据库某列的值(如日期)作为表格的列名 需求:前端需要展示如下的二维表格,其中表格的日期是数据库表里data的值,每行不同的值是表格里的字段值,也就是需要将表里的数据行转列,列转行&…

【Proteus仿真】【Arduino单片机】PWM电机调速

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用蜂鸣器、按键、直流电机、L293D等。 主要功能: 系统运行后,K3键启动运行,K1控制运行方向,K2键…

【Redis】Docker部署Redis数据库

Docker部署Redis数据库 1. Redis介绍2. CentOS 7 安装 & Docker 配置3. 拉取Redis 镜像、创建容器3.1 配置Docker镜像源3.2 拉取Redis 镜像3.3 容器创建 1. Redis介绍 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用…

oracle,CLOB转XML内存不足,ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE“,

通过kettle采集数据时,表输入的组件,查询报错。 ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE”, line 272 ORA-06512: at line 1 通过 ALTER SESSION SET EVENTS ‘31156 trace name context forever, level 0x400’; 修改会话配置 或直接修改…

四、安装vmtools

1.介绍 1.vmtools安装后,可以让我们在windows下更好的管理vm虚拟机 2.可以设置windows和centos的共享文件 2.安装步骤 1.进入centos 2.点击vm菜单->install vmware tools 3.centos会出现一个vm安装包,xx.tar.gz 4.拷贝到/opt 5.使用解压命令tar&…

最新FL Studio水果21.2更新下载及功能爆料

​Image-Line 推出了重要的 FL Studio 21.2 更新,​引入了强大的新功能,让音乐制作人能够专注于任务和创意流程。 此最新更新引入了 FL Cloud,这是一项专门为 FL Studio 构建的新服务。FL Cloud 与 DAW 深度集成,通过与全球最大的…

私有云:【1】ESXI的安装

私有云:【1】ESXI的安装 1、使用VMware Workstation创建虚拟机2、启动配置虚拟机3、登录ESXI管理台 1、使用VMware Workstation创建虚拟机 新建虚拟机 选择典型安装 稍后安装操作系统 选择VMware ESXI 选择虚拟机安装路径 硬盘设置300G或者更多 自定义硬件 内存和处…

keepalived+haproxy实现代理地址高可用

准备前期 一台客户机 主备服务器 主:20.0.0.10 备:20.0.0.40 两个后端服务器 web1:20.0.0.41 web2:20.0.0.42 开始配置主备服务器 安装keepalived服务 yum -y install keepalived 切换到keepalived的配置文件下 cd /etc/keepalived 修改ke…

ubuntu server 安装失败

网络问题,默认的cn那个mirrors不行,得替换国内得 安装Ubuntu server时有一个选项是 Mirror address 可以设置为 https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ 即 清华大学开源软件镜像站 的ubuntu地址

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第四章 C++多线程系统编程精要

学习多线程编程面临的最大思维方式的转变有两点: 1.当前线程可能随时会被切换出去,或者说被抢占(preempt)了。 2.多线程程序中事件的发生顺序不再有全局统一的先后关系了。 当线程被切换回来继续执行下一条语句(指令…

Android APK瘦身实践:二次瘦身如何再减少大小?(4M—2.9M)

瘦身前 因为平时就考虑到大小的限制,所以很多工作已经做过了,如下列举现在的状态: 7.3M(Debug版本)和6.5M(Release版本) 开启minifyEnabled 开启shrinkResources 已经去除不相关的大型库 图片和…

python操作MySQL、SQL注入问题、视图、触发器、事务、存储过程、函数、流程控制、索引(重点)

python操作MySQL(重要) SQL的由来: MySQL本身就是一款C/S架构,有服务端、有客户端,自身带了有客户端:mysql.exe python这门语言成为了MySQL的客户端(对于一个服务端来说,客户端可以有很多) 操作步骤: …

搜维尔科技:Geomagic Touch X力反馈设备【开箱图真机测试】

将力反馈性能提升到一个新的水平,可提供更精确的定位输入和高保真力反馈输出。对于3D建模和设计、手术培训、虚拟装配等要求精确度较高的多种操作,TouchX是一个易于使用、经济实惠的选择。 Touch X 的功能 屡获殊荣的 Touch X 力反馈设备提供了经济实惠…

成集云 | 成集云-经销商返利系统集成金蝶云星辰 | 解决方案

方案介绍 成集云经销商返利系统通过线上平台来管理经销商返利活动,实现商品的销售、推广和返利的全过程管理。为企业解决了返利计算复杂、返利决策不清晰、返利发放不及时、无法跟踪经销商等多个难题。 金蝶云星辰是金蝶旗下的一款企业级SaaS管理云,其…

推荐一款适合科技行业的CRM系统

推荐您一款科技行业好用的CRM系统——Zoho CRM客户管理系统,旨在帮助企业管理客户数据、销售过程、营销活动以及服务支持,助力业务增长及数字化转型,实现“以客户为中心”的企业管理和运营模式。 近些年,随着政府鼓励政策的出台、…