关于 music
music 是通过 `listenhub music` 命令行使用 Mureka 的 ListenHub 技能,可生成、混音和分析音乐。它适用于音乐创作与音频分析请求,生成任务异步处理,分析命令则同步返回。
主要功能
- 01根据提示词或歌词生成歌曲
- 02为现有歌曲替换歌词并混音
- 03制作器乐及图片或视频配乐
- 04延长歌曲或生成单独音轨
- 05识别歌词、描述音频并分离音轨
适用场景
- 01根据提示词创作原创歌曲
- 02为歌曲替换歌词并重新创作
- 03为图片或视频制作配乐
- 04提取歌词或分离音频轨道
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ marswaveai/ skills --skill music安装后在 Claude Code 中输入/music确认已加载。
附带文件references/music-api.md
详细介绍
适用场景
- 用户想通过提示词和/或歌词生成原创 AI 音乐
- 用户想用新歌词混音/重新创作现有歌曲
- 用户想生成纯器乐曲,或为图像或视频配乐
- 用户想延长歌曲,或分离/生成单个音轨
- 用户想分析音频——识别歌词、描述歌曲或分离音轨
- 用户说“音乐”、“music”、“生成音乐”、“generate music”、“翻唱”/“混音”/“remix”、“续写”/“extend”、“纯音乐”/“instrumental”、“配乐”/“soundtrack”、“分轨”/“stem”、“识别歌词”、“作曲”、“compose”、“create a song”或“做一首歌”
不适用场景
- 用户想进行文本转语音朗读(使用
/speech) - 用户想制作播客讨论(使用
/podcast) - 用户想制作带旁白的讲解视频(使用
/explainer) - 用户想将语音音频转录为文本,而不是转录歌曲歌词(使用
/asr)
用途
由 listenhub music CLI 调用 Mureka 提供方的完整 ListenHub 音乐工具包。功能包括:
生成(异步——返回任务以供轮询):
- generate — 文本和/或歌词 → 新歌曲。可选风格、标题、器乐曲,以及克隆的
--vocal-id。 - remix — 现有歌曲 + 新歌词 → 重新创作。输入可以是音频文件、音频 URL 或提供方歌曲 ID。
- instrumental — 根据提示词生成纯器乐曲,或通过参考音频引导生成。
- soundtrack — 为图像或视频配乐。
- track — 从歌曲中分离或生成单件乐器/人声音轨。
- extend — 延长歌曲。
- cover (已弃用) — 较旧的翻唱流程;建议优先使用 remix。
分析(同步——立即返回结果):
- recognize — 带逐行时间戳的歌词。
- describe — 描述、标签、流派、乐器。
- stem — 将歌曲拆分为独立音轨(ZIP 下载 URL)。
任务管理: list(最近任务)和 get <taskId>(获取单个任务的状态/结果)。
生成命令可使用的模型:auto(默认)、mureka-7.6、mureka-8、mureka-9、mureka-o2。完整的各命令参数参考请参阅 references/music-api.md。
硬性约束
- 进行任何交互前,始终按照
shared/config-pattern.md读取配置 - 按照
shared/cli-patterns.md执行模式、错误处理和交互模式 - 始终遵循
shared/cli-authentication.md检查身份验证 - 切勿将文件保存到
~/Downloads/或.listenhub/;将生成内容保存到当前工作目录,并使用便于识别且基于主题的名称(参见shared/config-pattern.md§ 生成内容命名) - 无需选择说话者——音乐生成不使用说话者选择
- 文件限制(均最大 10 MB):音频 mp3/m4a(
track也接受 wav);图像 jpg/jpeg/png/webp;视频 mp4/mov/avi/mkv/webm - 所有时间范围标志的单位均为秒(
--generate-start/--generate-end) - 对于异步生成命令,使用较长的超时时间:
run_in_background: true,timeout: 660000(600s+)。同步命令(recognize、describe、stem)会立即返回 cover已弃用——除非用户明确要求使用cover,否则应引导用户使用remix
步骤 -1:CLI 身份验证检查
遵循 shared/cli-authentication.md。如果未安装 CLI 或用户尚未登录,则自动安装并自动登录——绝不可要求用户手动运行命令。
步骤 0:配置设置
遵循 shared/config-pattern.md 的步骤 0(零提问启动)。
如果文件不存在——静默创建默认配置并继续:
mkdir -p ".listenhub/music"
echo '{"outputMode":"download","language":null}' > ".listenhub/music/config.json"
CONFIG_PATH=".listenhub/music/config.json"
CONFIG=$(cat "$CONFIG_PATH")
不要询问任何设置问题。 直接进入交互流程。
如果文件已存在——静默读取配置并继续:
CONFIG_PATH=".listenhub/music/config.json"
[ ! -f "$CONFIG_PATH" ] && CONFIG_PATH="$HOME/.listenhub/music/config.json"
CONFIG=$(cat "$CONFIG_PATH")
设置流程(仅限用户主动重新配置)
仅当用户明确要求重新配置时才运行。显示当前设置:
当前配置 (music):
输出方式:{inline / download / both}
语言偏好:{zh / en / 未设置}
然后询问:
-
outputMode:遵循
shared/output-mode.md§ 设置流程问题。 -
Language(可选):“默认语言?”
- “中文 (zh)”
- “English (en)”
- “每次手动选择” → 保持
null
收集完答案后,立即保存:
NEW_CONFIG=$(echo "$CONFIG" | jq --arg m "$OUTPUT_MODE" '. + {"outputMode": $m}')
if [ "$LANGUAGE" != "null" ]; then
NEW_CONFIG=$(echo "$NEW_CONFIG" | jq --arg lang "$LANGUAGE" '. + {"language": $lang}')
fi
echo "$NEW_CONFIG" > "$CONFIG_PATH"
CONFIG=$(cat "$CONFIG_PATH")
交互流程
第 1 步:能力
选择能力。如果用户的意图已经明确,则跳过提问(例如,“翻唱”/“混音”/“remix” → remix;“作曲”/“compose”/“做一首歌” → generate;“纯音乐”/“instrumental” → instrumental;“续写”/“extend” → extend;“分轨”/“stem” → stem;“识别歌词” → recognize)。
Question: "想做什么?"
Options:
- "原创 (Generate)" — 用文字 / 歌词生成全新歌曲
- "混音 (Remix)" — 基于已有歌曲 + 新歌词重新创作
- "纯音乐 (Instrumental)" — 生成无人声的器乐
- "配乐 (Soundtrack)" — 为图片或视频配乐
- "其他" — 续写 / 单轨 / 识别歌词 / 描述 / 分轨
如果用户选择“其他”,请继续使用 AskUserQuestion 列出以下选项:续写 (Extend)、单轨 (Track)、识别歌词 (Recognize)、描述 (Describe)、分轨 (Stem)。
get <taskId> 和 list 不是交互流程——用户询问任务状态时,直接运行。
第 2 步:收集输入(按能力)
使用下方各能力对应的字段。询问必需输入;提供可选输入。对于任何音频/图像/视频文件,在确认前都要验证:
- 本地路径:确认文件存在,且扩展名与该命令允许的列表匹配(参见 Hard Constraints /
references/music-api.md)。 - URL:按原样接受(CLI 会进行验证)。
- 大小:拒绝超过 10 MB 的本地文件。
FILE_SIZE=$(stat -f%z "{path}" 2>/dev/null || stat -c%s "{path}" 2>/dev/null)
if [ "$FILE_SIZE" -gt 10485760 ]; then echo "File exceeds 10 MB limit"; fi
generate — --prompt 和/或 --lyrics(至少提供一项);可选 --style、--title、--model、--instrumental、--vocal-id。
remix — 恰好提供一个输入来源:--audio(文件)/ --audio-url / --provider-song-id;另需 --lyrics 和 --prompt(两者均必需);可选 --style、--title、--model。
instrumental — --prompt / --reference-audio 二选一;可选 --title、--model。
soundtrack — --image / --video 二选一;可选 --prompt、--title、--model。
track — 恰好提供一个输入来源 --audio / --provider-song-id;--generate-type(以下选项之一:Vocals|Instrumental|Drums|Bass|Guitar|Keyboard|Percussion|Strings|Synth|FX|Brass|Woodwinds);可选 --prompt;仅当类型为 Vocals 时提供 --lyrics;--vocal-gender male|female;--generate-start/--generate-end(秒);--model。
extend — 一个输入来源 --audio / --provider-song-id;可选 --prompt、--model。
recognize / describe / stem — 仅需 --audio。stem 还需要 --model audio-separation-1|audio-separation-2。
对于多选字段(model、generate-type、vocal-gender、instrumental 是/否),使用 AskUserQuestion 工具。自由文本字段(prompt、lyrics、style、title)接受纯文本。
第 3 步:确认
总结能力和所有已收集的参数,然后询问用户是否确认。示例:
generate:
准备生成音乐:
能力:原创 (Generate)
描述:{prompt / 无}
歌词:{lyrics / 无}
风格:{style / 自动}
标题:{title / 自动}
模型:{model / auto}
人声:{带人声 / 纯音乐}
Vocal ID:{vocal-id / 无}
确认?
remix:
准备混音:
能力:混音 (Remix)
原曲:{audio / audio-url / provider-song-id}
新歌词:{lyrics}
描述:{prompt}
风格:{style / 自动}
标题:{title / 自动}
模型:{model / auto}
确认?
对于分析类能力(recognize / describe / stem),总结内容仅包括能力 + 输入音频(stem 还需包含分离模型);这些操作会同步运行,因此确认可以简单一些。
运行任何 CLI 命令前,必须等待用户明确确认。
工作流
异步生成命令
generate、remix、instrumental、soundtrack、track、extend、cover。
-
提交(后台运行),设置
run_in_background: true和timeout: 660000。始终传入--json。只包含用户提供的标志;其余省略。generate:
listenhub music generate \ --prompt "{prompt}" \ --lyrics "{lyrics}" \ --model "{model}" \ --style "{style}" \ --title "{title}" \ --instrumental \ --vocal-id "{vocal-id}" \ --jsonremix:
listenhub music remix \ --audio "{path}" \ --lyrics "{lyrics}" \ --prompt "{prompt}" \ --style "{style}" \ --title "{title}" \ --json(
--audio、--audio-url、--provider-song-id三者中必须且只能使用一个)instrumental:
listenhub music instrumental \ --prompt "{prompt}" \ --model "{model}" \ --json(也可以使用
--reference-audio "{path}"代替--prompt)soundtrack:
listenhub music soundtrack \ --image "{path}" \ --prompt "{prompt}" \ --json(也可以使用
--video "{path}"代替--image)track:
listenhub music track \ --audio "{path}" \ --generate-type "Vocals" \ --lyrics "{lyrics}" \ --vocal-gender "female" \ --generate-start 0 --generate-end 30 \ --json(也可以使用
--provider-song-id;仅当--generate-type Vocals时使用--lyrics)extend:
listenhub music extend \ --audio "{path}" \ --prompt "{how to continue}" \ --jsonCLI 会在内部处理轮询。生成最多可能需要约 10 分钟。
-
告知用户任务已提交,完成后会通知他们。如果他们只有
taskId,可以使用listenhub music get <taskId> --json或listenhub music list --json查询。 -
收到完成通知后,呈现结果。CLI JSON 是一个任务对象;歌曲位于
tracks[0],费用为creditCost,duration的单位是秒。解析关键字段:AUDIO_URL=$(echo "$RESULT" | jq -r '.tracks[0].audioUrl // empty') TITLE=$(echo "$RESULT" | jq -r '[.tracks[0].title, .params.title, "Untitled"] | map(select(. != null and . != "")) | .[0]') # duration is seconds (older pre-rollout Mureka tasks may still be ms → a value ≥ 3600 means ms) DURATION=$(echo "$RESULT" | jq -r '.tracks[0].duration // 0' \ | awk '{d=$1; if (d>=3600) d/=1000; printf "%d:%02d", int(d/60), int(d%60)}') CREDITS=$(echo "$RESULT" | jq -r '.creditCost // empty')从配置中读取
OUTPUT_MODE。遵循shared/output-mode.md中的行为说明。inline或both: 将音频 URL 显示为可点击链接。音乐已生成! 标题:{title} 在线收听:{audioUrl} 时长:{duration} 消耗积分:{credits}download或both: 还要下载文件。按照shared/config-pattern.md§ Artifact Naming 中的说明,根据标题生成 slug。SLUG="{slug}" # e.g. "summer-breeze" NAME="${SLUG}.mp3" # Dedup: if file exists, append -2, -3, etc. BASE="${NAME%.*}"; EXT="${NAME##*.}"; i=2 while [ -e "$NAME" ]; do NAME="${BASE}-${i}.${EXT}"; i=$((i+1)); done curl -sS -o "$NAME" "{audioUrl}"已保存到当前目录: {NAME}
同步分析命令
recognize、describe、stem 会在同一次调用中返回结果——在前台运行(不使用后台运行或长超时),并立即呈现结果。
recognize(歌词 + 时间戳):
listenhub music recognize --audio "{path}" --json
describe(描述、标签、流派、乐器):
listenhub music describe --audio "{path}" --json
stem(分离的音轨 → ZIP 下载 URL):
listenhub music stem --audio "{path}" --model "audio-separation-2" --json
在 download/both 模式下,立即将 ZIP URL 下载到当前工作目录。
任务管理
listenhub music list --json # recent tasks
listenhub music get "{taskId}" --json # one task's status / result
成功生成后
如果用户明确指定了语言,请使用本次会话中使用的语言更新配置:
if [ -n "$LANGUAGE" ]; then
NEW_CONFIG=$(echo "$CONFIG" | jq --arg lang "$LANGUAGE" '. + {"language": $lang}')
echo "$NEW_CONFIG" > "$CONFIG_PATH"
fi
预计耗时:
- 音乐生成:5-10 分钟
资源
- 各命令的参数参考:
references/music-api.md - CLI 身份验证:
shared/cli-authentication.md - CLI 使用模式:
shared/cli-patterns.md - 配置模式:
shared/config-pattern.md - 输出模式:
shared/output-mode.md
可组合性
- 调用:无
- 由以下内容调用:content-planner(阶段 3)
示例
生成原创音乐:
“帮我做一首关于夏天海边的歌”
- 检测:生成模式(“做一首歌”)
- 读取配置(首次运行时:使用
outputMode: "download"创建默认配置) - 推断:模式 = 生成,提示词 = “夏天海边的歌”
- 询问:风格?标题?是否为纯音乐?
- 确认摘要 → 用户确认
listenhub music generate \
--prompt "关于夏天海边的歌" \
--json
等待 CLI 返回结果,然后将 {slug}.mp3 下载到当前工作目录。
混音已有歌曲:
“用 demo.mp3 重新填词混音,把它做成 city pop 风格”
- 检测:混音功能(“混音”)
- 验证:
demo.mp3存在,格式为 mp3/m4a,大小低于 10 MB - 询问:新歌词(
--lyrics,必填)、提示词/方向(--prompt,必填)、风格、标题 - 确认摘要 → 用户确认
listenhub music remix \
--audio "demo.mp3" \
--lyrics "{new lyrics}" \
--prompt "rework as upbeat city pop" \
--style "city pop" \
--json
等待 CLI 返回结果,然后将 {slug}.mp3 下载到当前工作目录。
生成纯音乐:
“为游戏片头创作一段电子音乐”
- 检测:纯音乐功能(“instrumental”)
- 推断:提示词 = “游戏片头电子音乐”
- 确认摘要 → 用户确认
listenhub music instrumental \
--prompt "electronic track for a game intro" \
--json
等待 CLI 返回结果,然后将 {slug}.mp3 下载到当前工作目录。
为视频配乐:
“给这段 clip.mp4 配一段紧张的背景音乐”
- 检测:配乐功能(“配乐”),输入为视频
- 验证:
clip.mp4存在(mp4/mov/avi/mkv/webm),大小低于 10 MB - 推断:提示词 = “紧张的背景音乐”
- 确认摘要 → 用户确认
listenhub music soundtrack \
--video "clip.mp4" \
--prompt "tense, suspenseful background score" \
--json
识别歌词(同步):
“帮我识别 song.mp3 里的歌词”
- 检测:歌词识别功能(“识别歌词”)
- 验证:
song.mp3存在,大小低于 10 MB - 在前台运行,并显示带时间戳的歌词
listenhub music recognize --audio "song.mp3" --json
分离音轨(同步):
“把 track.mp3 分轨”
- 检测:音轨分离功能(“分轨”)
- 询问:分离模型(audio-separation-1 / audio-separation-2)
- 在前台运行;在下载模式下,将 ZIP URL 中的文件下载到当前工作目录
listenhub music stem --audio "track.mp3" --model "audio-separation-2" --json