当前位置: 首页 > news >正文

《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》

《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》

活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp
签名:Sam9029


MusicGen概述

MusicGen是由Meta AI的Jade Copet等人提出的一种基于单个语言模型(LM)的音乐生成模型,能够根据文本描述或音频提示生成高质量的音乐样本。该模型的研究成果发表在论文《Simple and Controllable Music Generation》中。

MusicGen模型结构

MusicGen模型基于Transformer结构,分为三个阶段:

  1. 文本编码:用户输入的文本描述通过文本编码器模型转换为一系列隐形状态表示。
  2. 解码预测:训练MusicGen解码器来预测离散的隐形状态音频token。
  3. 音频恢复:使用音频压缩模型(如EnCodec)解码音频token,以恢复音频波形。
MusicGen的特点
  • 使用谷歌的t5-base作为文本编码器模型。
  • 使用EnCodec 32kHz作为音频压缩模型。
  • 解码器是针对音乐生成任务训练的语言模型架构。
  • 采用单阶段Transformer LM结合高效的token交织模式,取消了分层或上采样的多层级结构。
实验环境配置

实验环境已预装MindSpore 2.2.14,可以通过以下命令安装或更新MindSpore及相关库:

!pip uninstall mindspore -y
!pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore==2.2.14
!pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindnlp jieba soundfile librosa
MusicGen模型使用

MusicGen提供了small、medium和big三种规格的预训练权重文件。本指南使用small规格的权重,以快速生成质量较低的音频。

from mindnlp.transformers import MusicgenForConditionalGeneration
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
生成音乐

MusicGen支持贪心和采样两种生成模式。采样模式通常能得到更好的结果。以下代码展示了如何使用无提示生成和文本提示生成:

unconditional_inputs = model.get_unconditional_inputs(num_samples=1)
audio_values = model.generate(**unconditional_inputs, do_sample=True, max_new_tokens=256)# 保存音频
sampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("musicgen_out.wav", rate=sampling_rate, data=audio_values[0, 0].asnumpy())
思考与见解
  • 生成质量与速度:small规格的权重文件虽然生成速度快,但音频质量较低。在实际应用中,需要在速度和质量之间做出权衡。
  • 文本提示生成:通过文本提示生成音乐时,guidance_scale参数对生成结果的影响显著。较高的guidance_scale可以生成与文本描述更匹配的音乐。
  • 音频提示生成:MusicGen同样支持音频提示,这为音乐创作提供了更多可能性,例如在现有旋律基础上进行变奏。

通过本实验,学习了如何使用MindNLP和MusicGen生成个性化音乐。MusicGen模型的灵活性和易用性使其成为音乐创作和研究的有力工具。未来,可以探索更多基于文本和音频提示的音乐生成应用,以及如何进一步优化生成音乐的质量和多样性。

相关文章:

《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》

《昇思 25 天学习打卡营第 15 天 | 基于MindNLPMusicGen生成自己的个性化音乐 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 MusicGen概述 MusicGen是由Meta AI的Jade Copet等人提出的一种基于单个语言模型&…...

Gitee 使用教程1-SSH 公钥设置

一、生成 SSH 公钥 1、打开终端(Windows PowerShell 或 Git Bash),通过命令 ssh-keygen 生成 SSH Key: ssh-keygen -t ed25519 -C "Gitee SSH Key" 随后摁三次回车键(Enter) 2、查看生成的 SSH…...

理解Cookie、Session和Token

在现代Web开发中,用户身份认证和会话管理是至关重要的部分。理解Cookie、Session和Token的区别和应用场景,有助于我们设计出更加安全和高效的Web应用。本文将详细探讨这三者的工作原理、优缺点以及使用场景。 1. Cookie 1.1 什么是Cookie? …...

概率论原理精解【1】

文章目录 测度概述集类笛卡尔积定义例子 多集合的笛卡尔积定义计算方法注意事项 有限笛卡尔积的性质1. 定义2. 性质2.1 基数性质2.2 空集性质2.3 不满足交换律2.4 不满足结合律2.5 对并和交运算满足分配律 3. 示例4. 结论 参考链接 测度 概述 所谓测度,通俗的讲就…...

数据结构(二叉树-1)

文章目录 一、树 1.1 树的概念与结构 1.2 树的相关术语 1.3 树的表示 二、二叉树 2.1 二叉树的概念与结构 2.2特殊的二叉树 满二叉树 完全二叉树 2.3 二叉树的存储结构 三、实现顺序结构二叉树 3.1 堆的概念与结构 3.2 堆的实现 Heap.h Heap.c 默认初始化堆 堆的销毁 堆的插入 …...

巴黎奥运会倒计时 一个非常不错的倒计时提醒

巴黎奥运会还有几天就要开幕了,大家应该到处都可以看到巴黎奥运会的倒计时,不管是电视上,还是网络里,一搜索奥运会,就会看到。倒计时其实是一个我们在生活中很常用的一个方法,用来做事情的提醒,…...

【Python】使用库 -- 详解

库就是别人已经写好了的代码,可以让我们直接拿来用。 一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在…...

Web3D:WebGL为什么在渲染性能上输给了WebGPU。

WebGL已经成为了web3D的标配,市面上有N多基于webGL的3D引擎,WebGPU作为挑战者,在渲染性能上确实改过webGL一头,由于起步较晚,想通过这个优势加持,赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…...

SpringBoot面试高频总结01

1. 什么是SpringBoot? SpringBoot是一个基于Spring框架的快速开发框架,它采用约定大于配置,自动装配的方式,可以快速地创建独立的,生产级别的,基于Spring的应用程序。 相比于传统的Spring框架,S…...

Linux 工作队列(Workqueue):概念与实现

目录 一、工作队列的概念1.1 什么是工作队列1.2 为什么使用工作队列 二、工作队列的实现2.1 定义和初始化工作队列2.2 工作队列API 三、工作队列的应用3.1 延迟执行任务3.2 处理复杂的中断任务 四、工作队列的类型4.1 普通工作队列4.2 高优先级工作队列 五、总结 在Linux内核中…...

前端页面是如何禁止被查看源码、被下载,被爬取,以及破解方法

文章目录 1.了解禁止查看,爬取原理1.1.JS代码,屏蔽屏蔽键盘和鼠标右键1.2.查看源码时,通过JS控制浏览器窗口变化2.百度文库是如何防止抓包2.1.HTPPS2.2. 动态加载为什么看不到?如何查看动态加载的内容?3.禁止复制,如果解决3.1.禁止复制原理3.2.如何破解1.了解禁止查看,爬…...

51单片机嵌入式开发:14、STC89C52RC 之HX1838红外解码NEC+数码管+串口打印+LED显示

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示1 概述2 硬件电路2.1 遥控器2.2 红外接收器电路2.3 STC89C52单…...

在不同环境中,Java应用程序和MySQL等是如何与Docker进行交互和操作的?

1. 本地开发环境 在本地开发环境中,可以使用Docker Compose来管理和运行Java应用程序容器和MySQL容器。通常,会创建一个docker-compose.yml文件,定义需要的服务及其配置。 以下是一个示例docker-compose.yml文件: version: 3 services:app…...

《DRL》P10-P15-损失函数-优化(梯度下降和误差的反向传播)

文章目录 损失函数交叉熵损失多类别分类任务概述真实标签的独热编码交叉熵损失函数 L p 范式 \mathcal{L}_{p}\text{ 范式} Lp​ 范式均方误差平均绝对误差 优化梯度下降和误差的反向传播 简介 本文介绍了神经网络中的损失函数及其优化方法。损失函数用于衡量模型预测值与真实值…...

Spring Boot项目的404是如何发生的

问题 在日常开发中,假如我们访问一个Sping容器中并不存在的路径,通常会返回404的报错,具体原因是什么呢? 结论 错误的访问会调用两次DispatcherServlet:第一次调用无法找到对应路径时,会给Response设置一个…...

<数据集>手势识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:2400张 标注数量(xml文件个数):2400 标注数量(txt文件个数):2400 标注类别数:5 标注类别名称:[fist, no_gesture, like, ok, palm] 序号类别名称图片数框数1fist597…...

【Vue3】选项式 API

【Vue3】选项式 API 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。…...

2、如何发行自己的数字代币(truffle智能合约项目实战)

2、如何发行自己的数字代币(truffle智能合约项目实战) 1-Atom IDE插件安装2-truffle tutorialtoken3-tutorialtoken源码框架分析4-安装openzeppelin代币框架(代币发布成功) 1-Atom IDE插件安装 正式介绍基于web的智能合约开发 推…...

百日筑基第二十三天-23种设计模式-创建型总汇

百日筑基第二十三天-23种设计模式-创建型总汇 前言 设计模式可以说是对于七大设计原则的实现。 总体来说设计模式分为三大类: 创建型模式,共五种:单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式,共…...

张量的基本使用

目录 1.张量的定义 2.张量的分类 3.张量的创建 3.1 根据已有数据创建张量 3.2 根据形状创建张量 3.3 创建指定类型的张量 1.张量的定义 张量(Tensor)是机器学习的基本构建模块,是以数字方式表示数据的形式。PyTorch就是将数据封装成张量…...

Cayley图数据库终极调优指南:针对不同工作负载的存储引擎配置

Cayley图数据库终极调优指南:针对不同工作负载的存储引擎配置 【免费下载链接】cayley An open-source graph database 项目地址: https://gitcode.com/gh_mirrors/ca/cayley Cayley是一款开源图数据库,支持多种存储引擎,针对不同工作…...

MSP 盈利、留客、提口碑,核心就盯这12个 KPI

很多 MSP(托管服务提供商)都会陷入一个误区,手里握着一堆散落在各个看板的运营数据,却始终搞不清哪些指标能真正帮自己提升服务质量、拉高利润、留住客户。忙忙碌碌做了一堆报表,最终还是凭感觉做决策,业务…...

【Kanzi 资源系统完全笔记】

一、Resource 的类层次结构Kanzi 中所有资源(Resource)都继承自 Object 基类。下图是常见的资源继承体系(根据图片整理):Object└── Resource├── GPUResource # 位于 GPU 显存中的资源(纹理、…...

频谱分析仪EMC预测试实战:30MHz-1GHz辐射发射定位与整改

1. 项目概述:用频谱分析仪搞定辐射发射预测试如果你是一名硬件工程师,或者正在和电磁兼容(EMC)问题作斗争,那么对30MHz到1000MHz这个频段的辐射发射测试一定不会陌生。这是绝大多数电子产品认证(比如CE、FC…...

LMQL:用编程语言精准控制大语言模型输出,告别提示词玄学

1. 项目概述:当自然语言成为编程语言如果你和我一样,既对大型语言模型(LLM)的能力感到兴奋,又对如何精准、可控地调用它们感到头疼,那么你肯定遇到过这样的场景:你向ChatGPT或Claude提出一个复杂…...

DeepSeek Clean Code终极阈值(v2.3.1正式版):超出3个指标即触发强制重构——你达标了吗?

更多请点击: https://intelliparadigm.com 第一章:DeepSeek Clean Code终极阈值的演进与哲学内核 DeepSeek Clean Code 的“终极阈值”并非静态指标,而是代码可维护性、语义清晰度与执行确定性三者动态收敛的临界点。它源于对 LLM 推理链中 …...

OpenClaw 如何实现任务恢复与失败重试?

网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…...

手把手教你ClickHouse(二、Windows下Docker部署与可视化实战)

1. Windows下Docker环境准备 在开始部署ClickHouse之前,我们需要先确保Windows系统已经正确配置Docker环境。这里我推荐使用Docker Desktop for Windows,它提供了图形化界面和完整的容器管理功能。安装过程可能会遇到几个常见坑点,我把自己实…...

TinyRedis随笔

在TinyRedis的内存与AOF之间的关系中,AOF接入点在命令层中,因为只有在执行写命令,修改DB内存之后,再对AOF文件进行写入。但是这里也存在一个问题,如果对aof文件写入失败了呢,那就会造成内存与aof文件数据不…...

【研报 A114】2026人工智能时代企业技能管理数字化转型白皮书:AI驱动全生命周期闭环,迭代速度提升70%

摘要:智能汽车产业加速升级,车企正面临员工技能迭代的核心挑战,AI 原生技能管理成为转型关键。依托生成式 AI、多智能体等技术,全新的技能管理体系贯穿技能梳理、培养、评估、应用全生命周期,将技能转化为车企的核心无…...