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

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

基于MindNLP+MusicGen生成个性化音乐

在这里插入图片描述

实验简介

MusicGen是Meta AI提出的音乐生成模型,能够根据文本描述或音频提示生成高质量音乐。该模型基于Transformer结构,分为三个阶段:文本编码、音频token预测和音频解码。此实验将演示如何使用MindSpore和MusicGen进行音乐生成,包括环境配置、模型下载、无提示生成、文本提示生成和音频提示生成。

实验步骤

1. 环境配置

安装并配置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
!pip show mindspore
2. 模型下载

下载并加载MusicGen模型。

from mindnlp.transformers import MusicgenForConditionalGenerationmodel = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
3. 无提示生成

通过无提示生成方法生成音乐。

unconditional_inputs = model.get_unconditional_inputs(num_samples=1)audio_values = model.generate(**unconditional_inputs, do_sample=True, max_new_tokens=256)

保存生成的音频文件。

import scipysampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("musicgen_out.wav", rate=sampling_rate, data=audio_values[0, 0].asnumpy())from IPython.display import Audio
Audio(audio_values[0].asnumpy(), rate=sampling_rate)
4. 文本提示生成

通过文本提示生成音乐。

from mindnlp.transformers import AutoProcessorprocessor = AutoProcessor.from_pretrained("facebook/musicgen-small")inputs = processor(text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],padding=True,return_tensors="ms",
)audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)

保存生成的音频文件。

scipy.io.wavfile.write("musicgen_out_text.wav", rate=sampling_rate, data=audio_values[0, 0].asnumpy())
Audio(audio_values[0].asnumpy(), rate=sampling_rate)
5. 音频提示生成

通过音频提示生成音乐。

from datasets import load_datasetprocessor = AutoProcessor.from_pretrained("facebook/musicgen-small")
dataset = load_dataset("sanchit-gandhi/gtzan", split="train", streaming=True)
sample = next(iter(dataset))["audio"]sample["array"] = sample["array"][: len(sample["array"]) // 2]inputs = processor(audio=sample["array"],sampling_rate=sample["sampling_rate"],text=["80s blues track with groovy saxophone"],padding=True,return_tensors="ms",
)audio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=256)
scipy.io.wavfile.write("musicgen_out_audio.wav", rate=sampling_rate, data=audio_values[0, 0].asnumpy())
Audio(audio_values[0].asnumpy(), rate=sampling_rate)

学习心得

通过本次实验,我深刻认识到MindSpore和MusicGen在音乐生成领域的强大能力。MusicGen模型基于Transformer结构,通过三个阶段将文本或音频提示转化为高质量的音乐。环境配置和模型下载是成功运行实验的基础。在安装MindSpore和其他依赖库的过程中,我学习到如何在不同平台上进行环境配置。无提示生成、文本提示生成和音频提示生成三个环节让我体验到MusicGen模型的多样性和灵活性。通过无提示生成音乐,我了解到模型可以在没有任何提示的情况下生成独特的音乐片段。而在文本提示生成过程中,我可以根据不同的文本描述生成风格各异的音乐,感受到模型对文本提示的敏感性和生成能力。在音频提示生成中,我学会了如何利用已有的音频片段进行生成,使得生成的音乐与提示音频高度相关。

在这里插入图片描述

http://www.lryc.cn/news/399370.html

相关文章:

  • windows USB 设备驱动开发-USB主控制开发(一)
  • Dubbo 负载均衡(Load Balance)
  • ArcGIS Pro SDK (九)几何 3 点
  • 基于神经网络的分类和预测
  • VR头显如何低延迟播放8K的RTSP|RTMP流
  • 2、ASPX、.NAT(环境/框架)安全
  • 在家上网IP地址是固定的吗?
  • 交换机和路由器的工作流程
  • 算法笔记——LCR
  • ChatGPT对话:如何制作静态网页?
  • k8s(二)
  • ClickHouse表引擎概述
  • jenkins系列-04-jenkins参数化构建
  • Flutter框架时间线梳理
  • RAG 效果提升的最后一步—— 微调LLM
  • C语言 | Leetcode C语言题解之第230题二叉搜索树中第K小的元素
  • YOWOv2(yowov2)动作识别+Fastreid身份识别 详细安装与实现
  • 【微服务】Spring Cloud中如何使用Eureka
  • 【Neo4j】实战 (数据库技术丛书)学习笔记
  • 【Perl】Perl 语言入门
  • godis源码分析——database存储核心1
  • 【UE5.1】Chaos物理系统基础——06 子弹破坏石块
  • Django是干什么的?好用么?
  • C语言实现数据结构B树
  • [论文阅读]MaIL: Improving Imitation Learning with Mamba
  • 在HTML中使用JavaScript
  • InjectFix 热更新解决方案
  • PHP7.4安装使用rabbitMQ教程(windows)
  • 分页以及tab栏切换,动态传类型
  • 【算法】平衡二叉树