音乐生成工具

MusicGen-Agent是一个基于Facebook MusicGen-Small模型的文本到音乐生成工具,通过FastMCP服务器提供API调用,适用于音乐创作和自动化音频生成场景。

  • by jmanhype
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 jmanhype/MusicGen-Agent

使用说明

MusicGen代理

使用Facebook MusicGen Small(300M参数)生成文本到音乐,封装在FastMCP服务器中,因此可以作为MCP兼容客户端的工具调用。

在Apple Silicon上进行了MPS加速测试。应该在CUDA上工作,但MPS是主要目标。

状态

功能性但粗糙。MCP服务器安装了8个子服务器,其中大多数与音乐生成无关(AlphaPOP基因组学工具、笔记本电脑图像提取)。这些是在自动化管道运行期间引入的,与核心用例无关。

它做什么

  1. 下载 facebook/musicgen-small 第一次运行时来自HuggingFace(约1.2 GB)。
  2. 接受文本提示(例如,“80年代带有低音鼓和合成器的流行曲目”)。
  3. 使用MusicGen自回归解码器+32 kHz的编码器生成音频。
  4. 将结果另存为WAV文件。

演出

度量 值
型号 facebook/musicgen小型,3亿参数
音频编解码器 编码,32 kHz
生成速度(M2 Pro,MPS) ~每秒2-3秒的音频
生成过程中的内存 ~4-6 GB
输出格式 WAV,32 kHz,16位

需求

要求 注意事项
Python 3.8+
PyTorch 支持MPS(macOS 12.3+)或CUDA
RAM 最小16GB,建议32GB
磁盘 型号重量约为1.2 GB

安装

pip install -r requirements.txt

关键依赖关系: transformers, torch, torchaudio, fastmcp, soundfile, librosa.

用法

直接Python

from src.tools.run_onnx import MusicGenSmall

model = MusicGenSmall()
audio = model.generate_music("Upbeat electronic dance music", duration=5.0)
model.save_audio(audio, "output.wav")

MCP服务器

python src/MusicGen_Agent_mcp.py

相关MCP工具: initialize_musicgen, generate_music_from_prompt, save_generated_audio.

其他安装的工具(alphapop_mcp, score_batch, score_batch_test, score_batch_tool, extract_notebook_images)它们是自动化管道的残留物,不是音乐生成工作流程的一部分。

项目结构

src/
  MusicGen_Agent_mcp.py   FastMCP server (entry point)
  tools/
    run_onnx.py           Core music generation logic
    download_model.py     Model download + verification
    readme.py             MCP tool wrappers for generation
    alphapop_mcp.py       Unrelated (genomics)
    score_batch*.py       Unrelated (genomics)
    extract_notebook_images.py  Utility
notebooks/                Jupyter notebooks from automated runs
assets/                   Tokenizer configs, generation configs

模型比较

型号 参数 相对质量 速度(MPS) 内存
MusicGen小型 300M 基线 快速 ~6GB
MusicGen Medium 1.5B 更好 更慢 约10GB
MusicGen大 3.3B 最佳 最慢 ~16GB

此存储库使用MusicGen Small。切换到中型或大型只需要更改代码中的模型名称并拥有足够的内存。

局限性

  • MCP服务器捆绑了不相关的基因组学工具,这些工具应该被排除在外。
  • 无流媒体生成;完整剪辑必须在输出可用之前完成。
  • 尽管有文件名,但没有ONNX运行时路径 run_onnx.py (它使用标准的PyTorch)。
  • 没有自动测试。
  • 持续时间受可用内存限制。

引用

@article{copet2023musicgen,
  title={Simple and Controllable Music Generation},
  author={Copet, Jade and Kreuk, Felix and Gat, Itai and others},
  journal={arXiv preprint arXiv:2306.05284},
  year={2023}
}

许可证

使用Facebook MusicGen Small模型权重。看 模型卡 关于许可条款。