《昇思25天学习打卡笔记》---第十五天|应用实践-LLM和Ai应用-基于MindNLP+MusicGen生成自己的个性化音乐
MindNLP 和 MusicGen 是两个相关的但功能不同的深度学习模型,它们都是在昇思(MindSpore)框架下进行开发和应用的。
MindNLP
MindNLP 是一个基于昇思(MindSpore)的自然语言处理(NLP)工具包。昇思是华为开发的开源深度学习框架,而 MindNLP 则是针对 NLP 领域的特定需求构建的,它提供了一系列预训练模型和工具,用于文本分类、情感分析、命名实体识别、文本生成等任务。MindNLP 的目标是简化 NLP 模型的开发、训练和部署过程,使研究人员和开发者可以更容易地利用昇思框架进行 NLP 相关的研究和产品开发。
MusicGen
MusicGen 是由 Meta AI(Facebook 的人工智能研究部门)开发的音乐生成模型。它是一个基于 Transformer 架构的条件音乐生成器,可以生成各种风格和长度的音乐。MusicGen 的独特之处在于它可以基于文本描述或音乐片段生成新的音乐作品。例如,你可以输入一段描述音乐风格的文字,比如“快乐的爵士乐”,MusicGen 就会尝试生成符合这种描述的音乐。
MindNLP + MusicGen
结合 MindNLP 和 MusicGen,可以实现更高级的功能,比如基于文本描述生成音乐。在这种组合中,MindNLP 可以用来理解和解析用户提供的文本描述,提取出关于音乐风格、情感和其他特征的信息。然后,这些信息被传递给 MusicGen,后者使用这些指导性信息来生成符合描述的音乐。这样,用户就可以通过简单的文本输入来定制他们想要的音乐类型和氛围。
这种技术的结合,为音乐创作和个性化音乐服务开辟了新的可能性,使得非专业人员也能通过自然语言描述创造自己的音乐作品。
下载模型:
from mindnlp.transformers import MusicgenForConditionalGeneration
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
生成音乐
%%time
unconditional_inputs = model.get_unconditional_inputs(num_samples=1)
audio_values = model.generate(**unconditional_inputs, do_sample=True, max_new_tokens=256)
使用第三方库转码保存
import scipy
sampling_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 在 notebook 进行播放
Audio(audio_values[0].asnumpy(), rate=sampling_rate)
文本提示生成
%%time
from mindnlp.transformers import AutoProcessor
processor = 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())
音频提示生成
%%time
from datasets import load_dataset
processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
dataset = load_dataset("sanchit-gandhi/gtzan", split="train", streaming=True)
sample = next(iter(dataset))["audio"]
# take the first half of the audio sample
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)
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)