mcpField
M
music

music

github.com/connorads创意与媒体1864 次安装1 天前更新
代码仓库

关于 music

这是用于 ElevenLabs 音乐生成的技能,可根据提示词创作纯音乐、带歌词歌曲,或按编曲计划生成音频;也能为上传的视频配背景音乐。

主要功能

  1. 01根据提示词生成音乐
  2. 02创建和修改编曲计划
  3. 03生成音频、计划及元数据
  4. 04为上传的视频生成配乐
  5. 05上传音频用于修补工作流

适用场景

  1. 01根据文字描述创作纯音乐
  2. 02用分段编曲计划调整曲目
  3. 03为视频片段生成背景音乐

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/connorads/dotfiles --skill music

安装后在 Claude Code 中输入/music确认已加载。

附带文件references/api_reference.mdreferences/installation.md

详细介绍

ElevenLabs 音乐生成

根据文本提示生成音乐——支持纯音乐、带歌词的歌曲,以及通过作曲计划进行精细控制。

**设置:**请参阅安装指南。对于 JavaScript,仅使用 @elevenlabs/* 包。

快速开始

Python
from elevenlabs import ElevenLabs

client = ElevenLabs()

audio = client.music.compose(
    prompt="A chill lo-fi hip hop beat with jazzy piano chords",
    music_length_ms=30000
)

with open("output.mp3", "wb") as f:
    for chunk in audio:
        f.write(chunk)
JavaScript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import { createWriteStream } from "fs";

const client = new ElevenLabsClient();
const audio = await client.music.compose({
  prompt: "A chill lo-fi hip hop beat with jazzy piano chords",
  musicLengthMs: 30000,
});
audio.pipe(createWriteStream("output.mp3"));
cURL
curl -X POST "https://api.elevenlabs.io/v1/music" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \
  -d '{"prompt": "A chill lo-fi beat", "music_length_ms": 30000}' --output output.mp3

方法

方法描述
music.compose根据提示或作曲计划生成音频
music.composition_plan.create生成结构化计划,实现精细控制
music.compose_detailed生成音频、作曲计划和元数据
music.video_to_music根据一个或多个上传的视频文件生成背景音乐
music.upload上传音频文件,以便后续用于修补工作流,并可选择提取其作曲计划

完整参数详情请参阅 API 参考。

具备修补功能访问权限的企业客户端可以使用 music.upload。

视频转音乐

根据一个或多个上传的视频片段生成与之相配的背景音乐。API 会按顺序合并视频,接受可选的自然语言描述,并允许使用最多 10 个标签(例如 upbeat 或 cinematic)来指定风格。

Python
from elevenlabs import ElevenLabs

client = ElevenLabs()

audio = client.music.video_to_music(
    videos=["trailer.mp4"],
    description="Build suspense, then resolve with a warm cinematic finish.",
    tags=["cinematic", "suspenseful", "uplifting"],
)

with open("video-score.mp3", "wb") as f:
    for chunk in audio:
        f.write(chunk)
cURL
curl -X POST "https://api.elevenlabs.io/v1/music/video-to-music" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -F "[email protected]" \
  -F "description=Build suspense, then resolve with a warm cinematic finish." \
  -F "tags=cinematic" \
  -F "tags=suspenseful" \
  -F "tags=uplifting" \
  --output video-score.mp3

当前 API 架构的限制:

  • 每个请求上传 1-10 个视频文件
  • 合并后的上传文件总大小不得超过 200 MB
  • 合并后的视频总时长不得超过 600 秒
  • 使用 description 描述整体音乐方向,使用 tags 提供简洁的风格提示

作曲计划

如需精细控制,请先生成作曲计划,修改后再进行创作:

plan = client.music.composition_plan.create(
    prompt="An epic orchestral piece building to a climax",
    music_length_ms=60000
)

# Inspect/modify styles and sections
print(plan.positiveGlobalStyles)  # e.g. ["orchestral", "epic", "cinematic"]

audio = client.music.compose(
    composition_plan=plan,
    music_length_ms=60000
)

内容限制

  • 不能提及特定艺术家、乐队或受版权保护的歌词
  • bad_prompt 错误会包含 prompt_suggestion,其中提供了替代表述
  • bad_composition_plan 错误会包含 composition_plan_suggestion

错误处理

try:
    audio = client.music.compose(prompt="...", music_length_ms=30000)
except Exception as e:
    print(f"API error: {e}")

常见错误:401(密钥无效)、422(参数无效)、429(超出速率限制)。

参考资料

评论

支持 Markdown