agentsclimarketplace

Video lyrics subtitle

Skill aAAaqwq/AGI-Super-Team/skills/video-lyrics-subtitle

Video lyrics subtitle generator — create synchronized subtitle files for music videosFrom its SKILL.md

Install
npx -y skills add aAAaqwq/AGI-Super-Team --skill video-lyrics-subtitle

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

7.9 KB, ~2.8k tokens by cl100k_base, as published. Nobody here has run it

🎵 视频歌词字幕生成 Skill

视频歌词字幕生成引擎:从歌词文本 + 时间轴 → SRT/ASS 字幕 → FFmpeg 烧录到视频

触发词

歌词字幕、lyrics subtitle、字幕烧录、字幕生成、SRT、ASS、bilingual subtitle、双语字幕、字幕文件、字幕制作

功能概述

从歌词文本(纯文本或 LRC 格式)+ 时间轴信息,生成 SRT/ASS 字幕文件,并可通过 FFmpeg 烧录到视频中。

核心 Pipeline

lyrics.txt + audio.mp3
  → generate_srt.py   (生成 SRT 时间轴)
  → generate_ass.py   (可选:生成 ASS 高级样式 / KTV 效果)
  → burn_subtitles.sh (FFmpeg 烧录到视频)
  → final_with_subtitles.mp4

脚本位置

所有脚本在 scripts/ 子目录下:

脚本功能
scripts/generate_srt.py从歌词文本 + 时间轴生成 SRT 字幕
scripts/generate_ass.pySRT → ASS 转换(支持 KTV 高亮)
scripts/burn_subtitles.shFFmpeg 烧录字幕到视频

标准输入

输入文件说明
歌词原文lyrics/lyrics.txt纯文本或 LRC 格式带时间戳
中文翻译lyrics/lyrics_cn.txt可选,用于双语字幕
音频文件audio/song_final.mp3用于获取总时长(纯文本歌词时)
视频文件video/*.mp4烧录目标

generate_srt.py — SRT 字幕生成

用法

python3 scripts/generate_srt.py <lyrics_file> [options]

选项

参数说明
lyrics_file歌词文件路径(LRC 或纯文本)
--audio <file>音频文件,用于获取总时长(纯文本歌词时必须)
--duration <seconds>总时长(秒),替代 --audio
--bilingual <cn_file>中文翻译文件,生成双语 SRT
--json-timeline <file>带时间轴的 JSON 文件(如 chloe_lyrics_parsed.json
-o / --output <file>输出 SRT 文件路径(默认 stdout)

输入格式支持

1. LRC 格式(带时间戳)

[00:00.00](纯音乐前奏)
[00:15.00]樱花落尽时 花瓣纷飞如雪
[00:20.00]你的笑容 在记忆中凋谢

2. 纯文本格式(等间隔分配)

需要 --audio--duration 指定总时长,每行歌词等间隔分配时间。 空行表示纯音乐段,自动标注 (纯音乐)

3. JSON 时间轴格式

通过 --json-timeline 传入带 sections[].lines[] 结构的 JSON 文件, 支持精确的 start/end 时间。

SRT 生成规则

  • 每行歌词对应一条 SRT 条目
  • 空行 / 纯音乐段自动标注 (纯音乐)
  • 双语模式:原文行在上,翻译行在下,同一条目内用 \N 分隔
  • 时间格式:HH:MM:SS,mmm(SRT 标准)

示例

# LRC 歌词 → SRT
python3 scripts/generate_srt.py lyrics/lyrics.lrc -o subtitles/lyrics.srt

# 纯文本歌词 + 音频时长 → SRT
python3 scripts/generate_srt.py lyrics/lyrics.txt --audio audio/song_final.mp3 -o subtitles/lyrics.srt

# 双语字幕
python3 scripts/generate_srt.py lyrics/lyrics.txt --audio audio/song_final.mp3 \
  --bilingual lyrics/lyrics_cn.txt -o subtitles/lyrics_bilingual.srt

# JSON 时间轴 → SRT
python3 scripts/generate_srt.py lyrics/lyrics.txt \
  --json-timeline script/chloe_lyrics_parsed.json \
  -o subtitles/lyrics.srt

generate_ass.py — ASS 高级字幕生成

用法

python3 scripts/generate_ass.py <srt_file> [options]

选项

参数说明
srt_file输入 SRT 文件路径
--style <ktv|simple>样式模式(默认 simple
--font <name>字体名称(默认 Noto Sans CJK SC
--fontsize <size>字体大小(默认 48
--primary-color <hex>主文字颜色(默认 #FFFFFF
--outline-color <hex>描边颜色(默认 #000000
--back-color <hex>背景色(默认 #80000000 半透明黑)
-o / --output <file>输出 ASS 文件路径(默认同名 .ass

ASS 样式

simple 模式

  • 底部居中显示
  • 白色文字 + 黑色描边
  • 半透明背景条

ktv 模式

  • 逐字高亮效果(\kt 标签)
  • 播放时文字从灰色变为亮色
  • 适合 KTV / 卡拉 OK 场景

示例

# 简单样式
python3 scripts/generate_ass.py subtitles/lyrics.srt -o subtitles/lyrics.ass

# KTV 样式
python3 scripts/generate_ass.py subtitles/lyrics.srt --style ktv -o subtitles/lyrics.ass

# 自定义字体和颜色
python3 scripts/generate_ass.py subtitles/lyrics.srt \
  --font "Source Han Sans CN" --fontsize 52 \
  --primary-color "#FFD700" -o subtitles/lyrics.ass

burn_subtitles.sh — FFmpeg 字幕烧录

用法

bash scripts/burn_subtitles.sh <video_file> <subtitle_file> [output_file]

功能

  • 自动检测字幕格式(SRT / ASS)
  • 调用 FFmpeg 硬字幕烧录
  • 默认输出文件名:<video>_with_subtitles.mp4
  • FFmpeg 路径:~/tools/ffmpeg

FFmpeg 命令

# SRT 硬字幕
ffmpeg -i video.mp4 -vf "subtitles=lyrics.srt" -c:a copy output.mp4

# ASS 硬字幕
ffmpeg -i video.mp4 -vf "ass=lyrics.ass" -c:a copy output.mp4

示例

# 烧录 SRT 字幕
bash scripts/burn_subtitles.sh video/phase1_preview.mp4 subtitles/lyrics.srt video/final_with_subtitles.mp4

# 烧录 ASS 字幕
bash scripts/burn_subtitles.sh video/phase1_preview.mp4 subtitles/lyrics.ass video/final_with_subtitles.mp4

📁 规范 MV 项目文件结构

所有 MV 项目遵循以下文件结构:

~/clawd/projects/MediaClaw/output/<project-name>/
├── lyrics/                    # 🎵 歌词(必须有)
│   ├── lyrics.txt             # 歌词原文(纯文本或LRC)
│   ├── lyrics_cn.txt          # 中文翻译(可选)
│   └── lyrics.json            # 带时间轴的JSON(程序生成)
├── subtitles/                 # 📝 字幕文件(程序生成)
│   ├── lyrics.srt             # SRT格式
│   ├── lyrics_bilingual.srt   # 双语SRT
│   └── lyrics.ass             # ASS格式(KTV效果)
├── audio/                     # 🎶 音频
│   └── song_final.mp3         # 最终版音频
├── video/                     # 🎬 视频
│   ├── clips/                 # 各clip片段
│   └── final_with_subtitles.mp4  # 最终带字幕视频
├── frames/                    # 🖼️ 参考帧图片
└── script/                    # 📜 剧本/计划
    ├── mv_script.json         # MV脚本
    └── edit_plan.json         # 剪辑计划

文件命名铁律 ⚠️

内容固定路径说明
歌词原文lyrics/lyrics.txt纯文本或 LRC
中文翻译lyrics/lyrics_cn.txt可选
SRT 字幕subtitles/lyrics.srt单语
双语 SRTsubtitles/lyrics_bilingual.srt双语
ASS 字幕subtitles/lyrics.assKTV 效果
最终视频video/final_with_subtitles.mp4带字幕成品

禁止随意命名(如 sub01.srtlyrics_raw_v2.txtfinal_v3_new.mp4)。 所有文件必须遵循以上命名规范。


完整工作流示例

# 设置项目路径
PROJECT=~/clawd/projects/MediaClaw/output/chloe-sakura-mv
SKILL=~/clawd/skills/video-lyrics-subtitle

# 1. 生成 SRT 字幕(从 LRC 歌词)
python3 $SKILL/scripts/generate_srt.py \
  $PROJECT/lyrics/lyrics.txt \
  --json-timeline $PROJECT/script/sakura_mv_final.json \
  -o $PROJECT/subtitles/lyrics.srt

# 2. 生成 ASS 字幕(KTV 风格)
python3 $SKILL/scripts/generate_ass.py \
  $PROJECT/subtitles/lyrics.srt \
  --style ktv \
  -o $PROJECT/subtitles/lyrics.ass

# 3. 烧录字幕到视频
bash $SKILL/scripts/burn_subtitles.sh \
  $PROJECT/video/phase1_preview_sakura_mv.mp4 \
  $PROJECT/subtitles/lyrics.ass \
  $PROJECT/video/final_with_subtitles.mp4

What ships with it: 3 files

28.5 KB alongside SKILL.md, 3 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.