昇思Mindspore学习25天打卡Day16:热门LLM及其他AI应用|基于MindeNLP+MusicGen生成自己的个性化音乐

昇思Mindspore学习25天打卡Day16:热门LLM及其他AI应用|基于MindeNLP+MusicGen生成自己的个性化音乐

  • 1 下载模型
  • 2 生成音乐
    • 2.1 无提示生成
    • 2.2 文本提示生成
    • 2.3 音频提示生成
  • 3 生成配置 &训练结束打上标签和时间

MusicGen是来自Meta Al的Jade Copet等人提出的基于单个语言模型(LM)的音乐生成模型,能够根据文本描述或音频提示生成高质量的音乐样本,相关研密成果参考论文《Simple:Music Generation》

MusicGen模型基于Transformer结构,可以分解为三个不同的阶段:

  1. 用户输入的文本描述作为输入传递给一个固定的文本编码器模型,以获得一系列隐形状态表示。
  2. 训练MusicGen解码器来预测离散的隐形状态音频token。
  3. 对这些音频token使用音频压缩模型(如EnCodec)进行解码,以恢复音频波形。

MusicGen直接使用谷歌的t5-base及其权重作为文本编阳器模型,并使用Encodec 32KH2及其汉重作为音频压缩模型,MuscGen解码器是一个语言模型架构,针对音乐生成任务从零开始进行训练。

MusicGen模型的新颖之处在于音顿代码的预测方式。传统上,每个玛本都必须由一个单独的模型(即分层或道过不断优化 Iensfomer模型的输出(围上采样)进行预测,与传统方法不同,MugicGen采用单个sta0e的Ieansfome LM结合高效的token交织模式,取消了多层级的多个模型结构,例如分层或上采样,这使得MusicGen能够生成单声道和立体声的高质量音乐样本,同时提供更好的生成输出控制。MusicGen不仅能够生成符合文本描述的音乐,还能够通过旋律条件控制生成的音调结构。
Image
Figure 1: MusicGen使用的码本延迟模式,来源于 MusicGen paper.

1 下载模型

MusicGen提供了smal、medium和big三种规格的预训练权重文件,本次指南默认使用small规格的权重,生成的音频质量较低,但是生成的速度是最快的:
在这里插入图片描述

2 生成音乐

MusicGen支持两种生成模式:贪心(greedy)和采样(sampling)。在实际执行过程中,采样模式得到的结果要显著优于贪心模式。因此我们默认启用采样模式,并且可以在调用MusicgenForConditionalGeneration.generate 时设置 do_sample=True 来显式指定使用采样模式。

2.1 无提示生成

我们可以通过方法:MusicgenForConditionalGeneration.get_unconditional_inputs 获得网络的随机输入,然后使用,generate 方法进行自回归生成,指定do_sample=True来启用采样模式:
在这里插入图片描述
音频输出是格式是: a Torch tensor ofshape(batch_size,num channels,sequence_length).

使用第三方库 scipy 将输出的音频保存为 musicgen_out.wav 文件。
在这里插入图片描述
【13】无提示生成的声音

参数 max_new_tokens 指定要生成 token 数。根据经验,可以使用 Encodec 模型的帧速率计算出生成的音频样本的长度(以秒为单位):
在这里插入图片描述

2.2 文本提示生成

首先基于文本提示,通过 AutoProcessor 对输入进行预处理。然后将预处理后的输入传递给.generate方法以生成文本条件音频样本。同样,我们通过设置"do_sample=True”来启用采样模式。

其中,guidance_scale 用于无分类器指导(CFG),设置条件对数之间的权重(从文本提示中预测)和无条件对数(从无条件或空文本中预测)。 guidancea_scale 越高表示生成的模型与输入的文本更加紧密。通过设置 guidance_scale >1 来启用 CFG。为获得最佳效果使用 guidance_scale=3(默认值)生成文本提示音频。
在这里插入图片描述

2.3 音频提示生成

AutoProcesor 同样可以对用于音频预测的音颂提示进行预处理。在以下示例中,我们首先加载音频文件,然后进行预处理,并将输入给到网络模型来进行音频生成。最后,我们将生成出来的音频文件保存为musicgen_out_audio.wav
在这里插入图片描述
【20】音频提示生成

为了演示批量音频提示生成,我们将按两个不同的比例对样本音频进行切片,以提供两个不同长度的音频样本。由于输入音频提示的长度各不相同,因此在传递到模型之前,它们将被填充到批处理中最长的音频样本的长度。

要恢复最终音频样本可以对生成的audio_values进行后处理以再次使用处理器类删除填充:
在这里插入图片描述
【22】切片填充

3 生成配置 &训练结束打上标签和时间

控制生成过程的默认参数(例如采样、指导比例和生成的令牌数量)可以在模型的生成配置中找到,并根据需要进行更新。首先,我们检査默认的生成配置:
在这里插入图片描述
现在重新运行生成将使用生成配置中新定义的值

请注意,传递给 generate 方法的任何参数都将取代生成配置中的参数,因此在调用 generate 中设置 do_sample=False 将取代生成配置中 model.generation_config.do_sample 的设置.。

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

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

相关文章

连锁店收银系统源码

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 私有化独立部署/全开源源码,系统开发语言: 核心开发语言: PHP、HTML…

hnust 1816: 算法10-9:简单选择排序

hnust 1816: 算法10-9:简单选择排序 题目描述 选择排序的基本思想是:每一趟比较过程中,在n-i1(i1,2,…,n-1)个记录中选取关键字最小的记录作为有序序列中的第i个记录。 在多种选择排序中,最常用且形式最为简单的是简单选择排序。…

ingress-nginx控制器证书不会自动更新问题

好久没更新了,正好今天遇到了一个很有意思的问题,在这里给大家分享下,同时也做下记录。 背景 最近想做个实验,当k8s集群中secret更新后,ingress-nginx控制器会不会自动加载新的证书。我用通义千问搜了下,…

windows 7 安装IPP协议,支持Internet打印

1 windows 7 安装IPP协议,支持Internet打印 #控制面板--打开或关闭Windows功能 3 复制Printers 文件夹 到 c:\inetpub\wwwroot\,复制msw3prt.dll到c:\windows\system32\ 4 打开IIs管理器 #报错:模块列表中不存在此处理程序所需的指定模块。如果您添加脚本映射处理程序映射&…

AndroidKille不能用?更新apktool插件-cnblog

AndroidKiller不更新插件容易报错 找到apktool管理器 填入apktool位置,并输入apktool名字 选择默认的apktool版本 x掉,退出重启 可以看到反编译完成了

网络基础:IS-IS协议

IS-IS(Intermediate System to Intermediate System)是一种链路状态路由协议,最初由 ISO(International Organization for Standardization)为 CLNS(Connectionless Network Service)网络设计。…

数据结构——(双)链表

文章目录 1. 定义 2. 双链表和单链表的区别 3. 代码示例 3.1 双链表节点和结构定义 3.2 初始化双链表 3.3 返回双链表的长度 3.4 在指定位置插入元素 3.5 在末尾插入元素 3.6 删除指定位置的元素并返回被删除的元素 3.7 删除末尾元素 3.8 获取指定位置的元素 3.9 修…

磁盘分区工具 -- 傲梅分区助手 v10.4.1 技术员版

软件简介 傲梅分区助手是一款功能强大的磁盘分区工具,它专为Windows系统设计,帮助用户更高效地管理他们的硬盘。该软件支持多种分区操作,包括创建、格式化、调整大小、移动、合并和分割分区。此外,它还提供了复制硬盘和分区的功能…

C++:Level3阶段测试

1、黑客小知识: (1)常用的黑客头文件有____和____。 (2)创建文件的函数叫做________。 (3)我更新了____个黑客头文件。 (4)万能头文件包含的黑客头文件是________。 …

速刷edurank(1)

python安全开发 python安全开发 python安全开发前言一、平台edu二、使用步骤1.引入库2.功能**完整代码**完整代码 总结 前言 目的:想快速的搜集edu的域名 一、平台edu https://src.sjtu.edu.cn/rank/firm/0/?page2 二、使用步骤 1.引入库 代码如下&#xff08…

气压传感器在自动驾驶汽车还有哪些应用场景

气压传感器在近年来被广泛应用于各种新兴领域,以下是其中几个最新的应用: 1、自动驾驶汽车:自动驾驶汽车需要精确的气压传感器来监测道路上的气压变化,帮助车辆进行准确的定位和导航。气压传感器可以提供高精度、可靠的气压数据&…

实验3-Spark基础-Spark的安装

文章目录 1. 下载安装 Scala1.1 下载 Scala 安装包1.2 基础环境准备1.3 安装 Scala 2. 下载安装 Spark2.1 下载 Spark 安装包2.2 安装 Spark2.3 配置 Spark2.4 创建配置文件 spark-env.sh 3. pyspark 启动4. 建立/user/spark文件夹 1. 下载安装 Scala 1.1 下载 Scala 安装包 下…

免费鼠标连点器有吗?需要付费吗?鼠标连点器电脑版免费推荐6款!

在数字化时代,鼠标连点器成为了许多用户提高工作效率、优化游戏体验的得力助手。然而,面对市场上琳琅满目的鼠标连点器软件,很多用户都会产生疑问:是否有免费的鼠标连点器?它们真的需要付费吗?今天&#xf…

nuxt、vue树形图d3.js

直接上代码 //安装 npm i d3 --save<template><div class"d3"><div :id"id" class"d3-content"></div></div> </template> <script> import * as d3 from "d3";export default {props: {d…

【康复学习--LeetCode每日一题】3033. 修改矩阵

题目&#xff1a; 给你一个下标从 0 开始、大小为 m x n 的整数矩阵 matrix &#xff0c;新建一个下标从 0 开始、名为 answer 的矩阵。使 answer 与 matrix 相等&#xff0c;接着将其中每个值为 -1 的元素替换为所在列的 最大 元素。 返回矩阵 answer 。 示例 1&#xff1a;…

基于.NET开源游戏框架MonoGame实现的开源项目合集

前言 今天分享一些基于.NET开源游戏框架MonoGame实现的开源项目合集。 MonoGame项目介绍 MonoGame是一个简单而强大的.NET框架&#xff0c;使用C#编程语言可以创建桌面PC、视频游戏机和移动设备游戏。它已成功用于创建《怒之铁拳4》、《食肉者》、《超凡蜘蛛侠》、《星露谷物…

MySql主从同步延迟怎么办?

文章目录 什么是MySQL主从架构主从架构的组成工作原理主从复制的步骤主从架构的优点主从架构的缺点 什么是主从同步延迟为什么会导致主从延迟主从延时的排查和解决如果发现主从数据不一致怎么办&#xff1f; 我们常说的业务量越来越大&#xff0c;I/O访问频率过高&#xff0c;单…

Vue + SpringBoot:el-upload组件单文件、多文件上传实战解析

文章目录 单文件上传后端前端 多文件上传后端前端 单文件上传 后端 PostMapping("/uploadDxfFile") public R uploadDxfFile(RequestParam(value "file", required true) MultipartFile multipartFile) throws Exception {// 文件校验工作if (multipar…

redis 如何使用 scan, go语言

建议用方案乙 文章目录 场景方案方案甲方案乙 拓展 场景 redis 中存在大量 key。 其中有一部分是用户登陆的 session_id&#xff0c; 结构是 &#xff1a; session_id:1session_id:2session_id:3需求&#xff1a; 有多少用户在线 方案 方案甲 keys session_id:*这种方式简…

Linux运维:MySQL备份,物理冷备份,热备,完备+二进制日志

备份类型 完全备份、增量备份、差异备份 完全备份&#xff1a;整个数据集都备份 增量备份&#xff1a;仅备份最近一次完全备份或增量备份&#xff08;如果存在增量&#xff09;以来变化的数据&#xff0c;备份较快&#xff0c;还原复杂。 差异备份&#xff1a;对比前一次备…