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)

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐