文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在Colab上使用Meta的MusicGen生成音乐

2024-11-30 06:33

关注

审校 | 重楼

在人工智能的广阔领域,深度学习已经彻底改变了许多领域,其中包括自然语言处理、计算机视觉和语音识别。然而,一个吸引研究人员和音乐爱好者的迷人领域是使用人工智能算法生成音乐。MusicGen是一种先进的可控文本到音乐模型之一,可以无缝地将文本提示转换为迷人的音乐作品。

什么是MusicGen?

MusicGen是为音乐生成设计的卓越模型,它提供了简单和可控性。与MusicLM等现有方法不同,MusicGen的突出之处在于消除了对自我监督语义表示的需要。该模型采用单级自回归Transformer架构,并使用32kHz编码器标记器进行训练。值得注意的是,MusicGen可以一次生成所有四个码本,这与传统方法有所不同。通过在码本之间引入轻微的延迟,该模型展示了并行预测它们的能力,从而产生每秒仅50步的音频自动回归。这种创新的方法优化了音乐生成过程的效率和速度。

MusicGen接受了2万小时的授权音乐训练。开发人员还在1万个高质量音乐曲目的内部数据集以及ShutterStock和Pond5音乐数据上对它进行了训练。

先决条件

根据MusicGen GitHub官方的回购:

可用的MusicGen型号

预训练模型有4种,分别是:

实验

下面是使用MusicGen大型模型生成条件音乐的输出。

Text Input: Jingle bell tune with violin and piano
Output: (Using MusicGen "large" model)

下面是MusicGen旋律模型的输出。使用上面的音频和文本输入来生成以下音频。

Text Input: Add heavy drums drums and only drums
Output: (Using MusicGen "melody" model)

如何在Colab上设置MusicGen

确保正在使用GPU进行更快的推理。使用CPU需要9分钟才能生成10秒的音频,而使用GPU(T4)只需要35秒。

在开始之前,需要确保在Colab中安装了Torch和TorchAudio。

从Facebook安装AudioCraft库。

python3 -m pip install –U git+https://github.com/facebookresearch/audiocraft#egg=audiocraft

导入必要的库。

from audiocraft.models import musicgen
from audiocraft.utils.notebook import display_audio
import torchfrom audiocraft.data.audio import audio_write

加载模型。其型号列表如下:

# | model types are => small, medium, melody, large |
# | size of models are => 300M, 1.5B, 1.5B, 3.3B |
model = musicgen.MusicGen.get_pretrained('large', device='cuda')

设置参数(可选)

model.set_generation_params(duratinotallow=60) # this will generate 60 seconds of audio.

条件音乐生成(通过提供文本生成音乐)。

model.set_generation_params(duratinotallow=60)
res = model.generate( [ 'Jingle bell tune with violin and piano' ], progress=True)
# This will show the music controls on the colab

无条件音乐生成:

res = model.generate_unconditional( num_samples=1, progress=True)
# this will show the music controls on the screendisplay_audio(res, 16000)

1.生成音乐延续

要创建音乐延续,需要一个音频文件。将该文件提供给模型,模型将生成并添加更多的音乐。

from audiocraft.utils.notebook import display_audio
import torchaudio

path_to_audio = "path-to-audio-file.wav"
description = "Jazz jazz and only jazz"

# Load audio from a file. Make sure to trim the file if it is too long!
prompt_waveform, prompt_sr = torchaudio.load( path_to_audio )
prompt_duration = 15
prompt_waveform = prompt_waveform[..., :int(prompt_duration * prompt_sr)]
output = model.generate_continuation(prompt_waveform, prompt_sample_rate=prompt_sr,
descriptinotallow=[ description ], progress=True)
display_audio(output, sample_rate=32000)

生成旋律条件生成:

model = musicgen.MusicGen.get_pretrained('melody', device='cuda')

model.set_generation_params(duratinotallow=20)

melody_waveform, sr = torchaudio.load("path-to-audio-file.wav")
melody_waveform = melody_waveform.unsqueeze(0).repeat(2, 1, 1)
output = model.generate_with_chroma(
descriptinotallow=['Add heavy drums'], melody_wavs=melody_waveform, melody_sample_rate=sr,progress=True)
display_audio(output, sample_rate=32000)

将音频文件写入磁盘。

如果想从Colab下载文件,那么需要在磁盘上写入WAV文件。下面是将WAV文件写入磁盘的函数。它将模型输出作为第一个输入,文件名作为第二个输入。

def write_wav(output, file_initials):
 try:
 for idx, one_wav in enumerate(output):
 audio_write(f'{file_initials}_{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)
 return True
 except Exception as e:
 print("error while writing the file ", e)
 return None
# this will write a file that starts with bollywood
write_wav(res, "audio-file")

2.全面实施(Google Colab文件链接)

在Colab文件中给出了Meta公司的MusicGen库的完整实现。使用它可以自由地探索和创作音乐。

结论

综上所述,Audiocraft的MusicGen是一个功能强大且可控的音乐生成模型。展望未来,Audiocraft在人工智能生成音乐方面拥有令人兴奋的未来发展潜力。无论是音乐家还是人工智能爱好者,Audiocraft的MusicGen都将为他们打开一个充满创造力的世界。

原文Generate Music Using Meta’s MusicGen On Colab,作者:Mittal Patel

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯