Communitygithub.com

haoyiyin/text-to-bgm

AI Agent 技能:根据文本描述生成背景音乐,100% 在 Apple Silicon Mac 上本地运行。

text-to-bgm 是什么?

技能 `haoyiyin/text-to-bgm` 让 AI Agent 能够完全在本地 Apple Silicon Mac (M1/M2/M3/M4) 上,根据用户提供的文本描述生成背景音乐 (BGM)。它基于 **mlx-audiocraft**(Meta 的 MusicGen 模型在 Apple MLX 框架上的移植),支持 100% 离线运行,无需云服务或 API 密钥,保障隐私安全。该技能利用 MLX GPU 加速,在 M4 Max 芯片上可实现高达 1.3 倍实时速度的生成。用户可以通过命令行工具 `musicgen-mlx` 或随附的包装脚本 `generate_bgm.sh` 操作,并支持多种模型选择(从 300M 参数的 small 模型到 3.3B 参数的 stereo-large 模型)。Agent 会根据用户需求(如情绪、风格、时长)设计提示词,生成从环境音乐、低保真节拍到电影配乐等多种类型的纯音乐,并自动调整参数以获得最佳效果。需要注意的是,该技能仅适用于 Apple Silicon Mac,首次使用需下载 1.2-6.5 GB 的模型文件,且生成内容受 CC-BY-NC 4.0 许可限制,不可商用。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add haoyiyin/text-to-bgm

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

text-to-bgm 是做什么的?

在 Apple Silicon Mac 上使用本地 AI 根据文本描述生成背景音乐 (BGM)。由 mlx-audiocraft 驱动 — Meta 的 MusicGen 移植到 Apple 的 MLX 框架。

  • 100% 离线 — 无需云服务,无需 API 密钥,模型下载后无需网络连接
  • 隐私保护 — 所有生成过程均在设备上完成
  • 快速 — 在 M1/M2/M3/M4 上使用 MLX GPU 加速

何时使用

当用户要求时使用此技能:

  • 生成背景音乐 / BGM / 器乐
  • 创建环境音乐、lo-fi 节拍、电影配乐
  • 为视频、游戏、播客或学习/专注时段制作音频
  • 在 macOS Apple Silicon 上进行任何文本到音乐请求

请勿用于:

  • 音效 → 使用 audiogen-mlx(包含在 mlx-audiocraft 中)
  • 人声/演唱 → MusicGen 在人声方面表现不佳
  • 完整制作歌曲 → 考虑使用 ACE-Step 生成更长的结构化音乐

要求

  • macOS 且配备 Apple Silicon (M1, M2, M3, M4)
  • Python 3.10+(推荐 3.11)
  • 内存:小模型最低 8 GB,大模型需要 16 GB+
  • 磁盘:每个模型 1.2 GB(small)至 ~6.5 GB(stereo-large)

安装

# 一行安装
pip install mlx-audiocraft

# 验证
musicgen-mlx --help

或者使用附带的安装脚本:

bash setup.sh

使用

基础用法

musicgen-mlx "lo-fi chill study beats with soft piano" -d 30 -o bgm.wav

完整 CLI 参考

musicgen-mlx [-h] [-m MODEL] [-o FILE] [-d SEC] [--no-open]
             [--top-k K] [--temperature T] [--cfg-coef C]
             prompt

参数:
  prompt              音乐文本描述

选项:
  -m, --model NAME    HuggingFace 模型(默认:facebook/musicgen-small)
  -o, --output FILE   输出 WAV 路径(默认:./musicgen_output.wav)
  -d, --duration SEC  持续时间(秒)(默认:8)
  --no-open           生成后不打开文件
  --top-k K           顶部 k 采样(默认:250)
  --temperature T     采样温度(默认:1.0)
  --cfg-coef C        无分类器引导系数(默认:3.0)

模型

模型大小质量速度 (M4 Max)用例
facebook/musicgen-small300M / 1.2GB良好1.3 倍实时默认选择
facebook/musicgen-medium1.5B / 3.4GB较好~0.6 倍实时更高品质
facebook/musicgen-large3.3B / 5.5GB最佳(单声道)~0.4 倍实时高品质
facebook/musicgen-stereo-large3.3B / 6.5GB最佳(立体声)~0.3 倍实时最终输出

生成参数

参数范围效果
--temperature0.5–1.5越高 = 越有创意/多变。越低 = 越可预测
--top-k100–500越高 = 音符选择越多样
--cfg-coef1.0–7.0越高 = 与提示词契合越严格。默认 3.0 较为平衡

使用包装脚本

为方便起见,请使用 generate_bgm.sh:

bash generate_bgm.sh "cinematic orchestral epic trailer music" -d 45

选项:-m <模型>、-d <秒数>、-t <温度>、-o <输出>

Python API

import mlx.core as mx
import numpy as np
import soundfile as sf
from audiocraft_mlx.models.musicgen import MusicGen

# 加载模型
mg = MusicGen.get_pretrained("facebook/musicgen-small")

# 设置生成参数
mg.set_generation_params(duration=30, temperature=1.0, top_k=250, cfg_coef=3.0)

# 生成
audio = mg.generate(["lo-fi jazz hop with smooth saxophone and chill drums"])

# 保存
wav = np.array(audio[0])  # [通道, 采样]
sf.write("output.wav", wav.T, mg.sample_rate)

提示词工程

请参阅 prompts.md 获取包含示例的全面指南。

快速提示:

  • 以流派/风格开头:"lo-fi hip hop"、"cinematic orchestral"、"ambient electronic"
  • 添加乐器:"warm piano"、"soft synth pads"、"acoustic guitar"
  • 描述情绪/氛围:"relaxing"、"uplifting"、"mysterious"、"energetic"
  • 包含制作特性:"vinyl crackle"、"reverb"、"80 BPM"、"sidechain compression"
  • 以用途结尾:"perfect for study"、"background for podcast"、"game menu music"

⚠️ MusicGen 对英文提示词和器乐效果最佳。

操作流程(面向 AI Agent)

  1. 检查安装:运行 musicgen-mlx --help。如果缺失,通过 pip install mlx-audiocraft 安装。
  2. 收集需求:询问用户关于流派、情绪、时长。如果模糊,建议流行的 BGM 风格。
  3. 选择模型:默认使用 facebook/musicgen-small(快速,300M)。使用 facebook/musicgen-medium 获取更好的质量,或使用 facebook/musicgen-stereo-large 获取最佳效果。
  4. 撰写提示词:按照 prompts.md 中的提示指南,构建一个 10–30 词的英文描述。
  5. 设置时长:循环片段 15–30 秒,短 BGM 30–60 秒,较长片段 60–120 秒。
  6. 生成:运行 musicgen-mlx "<提示词>" -m <模型> -d <秒> -o <路径>.wav
  7. 报告:告知用户输出文件路径。如有需要,可提供调整参数后重新生成的选项。

注意事项

  • ⚠️ 首次运行会下载模型 — 从 HuggingFace 下载 1.2–6.5 GB。请提醒用户。
  • ⚠️ 仅限 Apple Silicon — 不适用于 Intel Mac。
  • ⚠️ 默认 8 秒时长 — 对于 BGM,务必指定 -d。
  • ⚠️ 仅器乐 — 在人声/歌词方面表现不佳。
  • ⚠️ 非商业许可 — CC-BY-NC 4.0。不可用于商业用途。
  • ⚠️ 内存占用高 — 8GB 机器应仅使用 small/medium 模型。
  • ⚠️ 大模型速度慢 — stereo-large 约 0.3 倍实时。生成 60 秒大约需要 3 分钟。

验证

# 1. 检查 CLI
musicgen-mlx --help

# 2. 快速测试
musicgen-mlx "piano melody" -d 5 -o /tmp/test_bgm.wav

# 3. 验证输出
file /tmp/test_bgm.wav
# 预期输出:RIFF (little-endian) data, WAVE audio

# 4. 收听
open /tmp/test_bgm.wav

文件

文件用途
SKILL.md本文件 — 技能定义与参考
setup.sh一键安装脚本
generate_bgm.sh便于 Agent 友好使用的包装脚本
prompts.md含流派模板的提示词工程指南

相关技能