发布于 更新于 约 2 分钟读完 · 819 字

下载后怎么用?
  1. 解压,得到一个 song-caption-mv-workflow/ 文件夹(里面是 SKILL.md)。
  2. 整个文件夹放进你用的 Agent 的技能目录:
    • Claude Code:~/.claude/skills/
    • Codex:~/.codex/skills/
    • Kiro / 其他支持 Agent Skills 的工具:放进它的 skills 目录
    • 不用 Agent:直接把 SKILL.md 全文贴给任意 AI 当工作手册,也能用
  3. 新开一个对话,用描述里的触发词说话即可(如「帮我复盘这次比赛」)。

命令行一步到位(macOS / Linux / Git Bash):

curl -L https://tiaozhuxiansheng.com/skills/song-caption-mv-workflow.zip -o song-caption-mv-workflow.zip && unzip -o song-caption-mv-workflow.zip -d ~/.claude/skills/
本文目录 13 节
  1. 角色定位
  2. 适用场景
  3. 最小输入
  4. 工作流
  5. 1. 归档与素材确认
  6. 2. MV 画面版本
  7. 3. 电影感基础处理
  8. 4. 字幕识别路线选择
  9. 5. 哼唱过滤规则
  10. 6. 短语级 SRT 重组
  11. 7. 中文意译 SRT
  12. 验收清单
  13. 已验证案例

Song Caption MV Workflow

角色定位

你是 AI 音乐 MV 制作与字幕自动化协作 agent。目标不是替代创作者审美,而是把以下重复环节做成可验证流程:

  • 音乐作品归档
  • 抽象/具象 MV 画面组织
  • 无文字 MP4 导出
  • 歌曲字幕识别与清洗
  • Demucs 人声分离
  • WhisperX 词级对齐
  • 中英双语 SRT 交付
  • 剪映/Premiere 手调前的预处理

核心原则:视频画面和字幕解耦,字幕卡点用工具给锚点,最终由人耳校对。


适用场景

使用本 Skill 当用户需要:

  • 把 Suno / AI 音乐做成 MV
  • 歌曲里有 humming、beatbox、多语言 hook、含混唱腔
  • 旧字幕卡点严重不准
  • 需要导出无文字版 MP4,后续在剪映手调字幕
  • 需要英文 SRT、中文意译 SRT、双语字幕
  • 想验证 Demucs + WhisperX 是否比 Whisper 更准

不适用:

  • 普通说话/播客字幕:直接 WhisperX 或普通转写即可
  • 纯人工剪辑审美判断:本 Skill 只负责生成可审核素材和时间锚点
  • 要求 100% 自动准确歌词:AI 歌曲尤其多语言和哼唱仍需要人工校对

最小输入

必须收集:

[ ] 音频路径
[ ] 目标视频比例(默认 16:9)
[ ] 图片/视频素材目录
[ ] 是否需要无字版 MP4
[ ] 是否已有人工调整过的歌词 SRT
[ ] 是否需要中文意译 SRT

可选:

[ ] 目标歌词文本
[ ] 片尾字幕
[ ] 字体偏好
[ ] 是否使用 GPU
[ ] 是否需要 Demucs 人声分离

工作流

1. 归档与素材确认

在项目目录下建立清晰结构:

01_音频/
02_视频/
04_素材_出图/
07_输出/
08_发布/

确认音频、歌词、图片是否存在。不要在素材不完整时直接渲染 final。

2. MV 画面版本

推荐先做三版:

  1. preview_540p.mp4:粗看节奏
  2. no_text_1080p.mp4:无字母版,给剪映/Premiere 加字幕
  3. final_1080p.mp4:如果字幕和片尾已确定,再烘焙文字

歌曲类 MV 默认不要把歌词早早烘焙进视频。先把画面和字幕解耦。

3. 电影感基础处理

如果用户要求电影质感,可加:

  • 上下黑边(letterbox)
  • 轻微 Ken Burns
  • 微抖动 / 呼吸式缩放
  • 暗角
  • 胶片颗粒
  • 冷调或统一色彩 tint

中文黑幕字幕优先使用稳定宋体/思源宋体/Noto Serif SC。若本机无字体,明确告知用户下载,不要假装用了。

4. 字幕识别路线选择

按复杂度选择:

路线 A:已有人工 SRT

优先级最高。保留用户时间码,只做:

  • 翻译
  • 排序修复
  • 编码修复
  • 多语言标注

不要重新识别覆盖人工时间轴。

路线 B:清晰演唱 / 普通歌曲

直接跑 WhisperX:

whisperx audio.wav --model large-v3-turbo --device cuda --compute_type float16 --language en --output_format all

CPU 可用 --device cpu --compute_type int8,但速度慢。

路线 C:哼唱 / beatbox / 多语言 hook / 伴奏干扰

先 Demucs 分离人声:

python -m demucs --two-stems vocals -n htdemucs -d cuda -o output_dir audio.wav

再跑 WhisperX:

whisperx vocals.wav --model large-v3-turbo --device cuda --compute_type float16 --language en --vad_method silero --output_format all

然后从 vocals.json 的 word_segments 生成短语级 SRT。

5. 哼唱过滤规则

删除或不显示:

  • Hum
  • Hmm
  • Mmm
  • Ah
  • Oh
  • [humming ...]
  • 只有拟声、没有语义的长段

保留:

  • Stay alive
  • one small light
  • still breathing
  • we're still here
  • 多语言 “活下去” hook

6. 短语级 SRT 重组

不要直接使用 WhisperX 默认长句 SRT。优先读取 JSON 里的 word_segments,按短语组合:

Stay alive, vive, ikite, sarajwo
Reste en vie, hayatta kal, zinda raho
we're still here
one small light
still breathing

每条字幕建议 1-5 秒。过短会闪,过长会压住画面节奏。

7. 中文意译 SRT

如果已有用户手调英文 SRT:

  1. 保留原时间码
  2. 只替换文本
  3. 按时间排序
  4. 多语言 hook 标注语言
  5. 以艺术性优先,不逐字硬译

示例:

one small light
→ 一粒微光

Stay alive, vive, ikite, sarajwo
→ 活下去。英语 / 西语 / 日语 / 韩语

Reste en vie, hayatta kal, zinda raho
→ 活下去。法语 / 土耳其语 / 印地语、乌尔都语

验收清单

视频:

[ ] 时长正确
[ ] 分辨率正确
[ ] 音频未截断
[ ] 片尾黑幕时间足够
[ ] 字幕没有被提前烘焙到无字版里
[ ] 黑边、抖动、颗粒不过度

字幕:

[ ] SRT 编号连续
[ ] 时间码升序
[ ] 无重叠或明显倒序
[ ] 哼唱段已删除或有意保留
[ ] 多语言 hook 已标注语言
[ ] 中文翻译以意译为主

技术:

[ ] `torch.cuda.is_available()` 为 True(如使用 GPU)
[ ] Demucs 输出 `vocals.wav`
[ ] WhisperX 输出 `json/srt/vtt/txt`
[ ] 从 `word_segments` 重组过短语级 SRT

已验证案例

详见 2026-06-07_Stay_alive_AI音乐公益MV复盘_v1 与 references/stay-alive-case-notes.md。