Musicgen-文字描述生成音乐Meta开源项目-linux部署流程

PS:安装完后没验证,先挖个坑

一、MusicGen介绍

Musicgen是Meta推出的一个根据文字描述来生成一段音乐的项目。目前,github上7.9k星。它还可以结合一段音频(甚至是哼的歌)+文字来进行生成。单次生成最高30s。再长需要通过滑动窗口实现,取上一段生成结果的最后10s来生成接下来的20s,不断重复。用户可以通过调整描述词汇、输入的音频等来生成不同类型的音乐,比如轻松愉悦的流行音乐、激情四溢的摇滚乐、高雅典雅的古典音乐等。

模型一共有发布了4个版本:

  1. Melody -- 一种音乐生成模型,能够根据文字以及旋律输入生成音乐。 注意:您也可以仅使用文本。
  2. Small -- 一个仅基于文本的300M transformer解码器。
  3. Medium -- 一个仅基于文本的1.5B transformer解码器。
  4. Large -- 一个仅基于文本的3.3B  transformer解码器(最长的序列可能会OOM)。

生成结果示例:MusicGen: Simple and Controllable Music Generation (honu.io)

项目github地址:facebookresearch/audiocraft: Audiocraft is a library for audio processing and generation with deep learning. It features the state-of-the-art EnCodec audio compressor / tokenizer, along with MusicGen, a simple and controllable music generation LM with textual and melodic conditioning. (github.com)

项目huggingface modelcard:facebook/musicgen-melody · Hugging Face

二、部署步骤

1. 创建虚拟环境

conda create -n musicgen python=3.9

2. 激活

conda activate musicgen

3. 安装torch和项目

pip install 'torch>=2.0'
pip install -U audiocraft

4. 安装依赖

apt-get install ffmpeg

5. 整个小脚本 test.py

touch test.py

vim test.py #也可以只用第二行 直接创建

复制进去以下代码:

from audiocraft.models import musicgen
from audiocraft.utils.notebook import display_audio
import torch

# 第一个参数是指用哪一个模型 详见官方github
model = musicgen.MusicGen.get_pretrained('melody', device='cuda')

# 这里调整生成时长
model.set_generation_params(duration=8)


# 这里调整描述词
discriptions = [
    'crazy EDM, heavy bang', 
    'classic reggae track with an electronic guitar solo',
    'lofi slow bpm electro chill with organic samples',
    'rock with saturated guitars, a heavy bass line and crazy drum break and fills.',
    'earthy tones, environmentally conscious, ukulele-infused, harmonic, breezy, easygoing, organic instrumentation, gentle grooves',
]

# 测试用 只用最后一个提示词
res = model.generate(discriptions[-1] , progress=True)
display_audio(res, 32000)

运行代码:

python test.py

PS1:melody是模型的版本,musicgen一共有4个版本

PS2:第一次调用会先下载模型下来。需要魔法。

服务器没有魔法下载模型慢的解决方法:

没有魔法的话,介绍一个笨办法:用有魔法的电脑从官方huggingface把模型下载下来,传到服务器上。然后,替换你运行这段代码时他提示会把模型下载到的位置,替换掉。

下载地址:facebook/musicgen-melody at main (huggingface.co)

比如我的是这两个:

/root/.cache/torch/hub/checkpoints/b0dbef54-37d256b525.th

/root/.cache/torch/hub/checkpoints/f79af192-61305ffc49.th

分别对应以下两个文件:

经验证这个方法是ok的。

也可以直接把这写文件下到某个目录下,在加载模型的地方直接指向那个目录即可。

6. 再次运行这个小脚本:

python test.py

正常输出出来一个缓存的音频文件就没有问题啦!

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java中的autoservice注解是一种用于服务发现的机制,它能够自动将服务的实现类注册到指定的配置文件中,一般是META-INF/services目录下的文件。 然而,的确有一些情况下autoservice注解无法生成META-INF文件。这可能是由于以下几种原因导致的: 1. 编译问题:可能是由于编译配置的问题,导致编译器无法正确处理autoservice注解。这种情况下,我们可以尝试检查编译器的配置,或者使用其他IDE或编译工具进行尝试。 2. 库或框架限制:有些库或框架可能不支持autoservice注解,或者在使用autoservice注解时会有特殊的要求。我们可以查看相关库或框架的文档,了解其对autoservice注解的支持情况,或者尝试其他方式实现服务发现。 3. 配置文件缺失或错误:autoservice注解生成META-INF文件的前提是META-INF目录存在,并且配置文件的名称和路径正确。如果自动生成META-INF文件不存在,或者文件名或路径有误,就无法实现服务发现。我们需要检查项目的文件结构,确认META-INF目录是否存在,并且配置文件的名称和路径是否正确。 总之,虽然autoservice注解通常可以自动将服务实现类注册到META-INF文件中,但在某些情况下可能会遇到无法生成META-INF文件的问题。我们需要仔细检查编译配置、库或框架限制,以及配置文件是否正确等因素,以找出问题所在,并采取相应的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值