writing-beats
MAmattpocock/skills318k近 7 天新增 9,301 个 star
专业字幕润色技能:将 ASR 转写或外语字幕翻译润色为高质量简体中文字幕。修正识别错误、优化断句、严格对齐时间戳、符合当代中文表达习惯。当用户说'润色字幕''翻译字幕''字幕校对''字幕润色''SRT翻译'时使用。
xiaohu-video-download 技能的字幕处理环节使用# 润色/翻译字幕文件
/xiaohu-subtitle-polish /path/to/subtitle.srt
# 指定输出路径
/xiaohu-subtitle-polish /path/to/subtitle.srt --output /path/to/output.srt
# 配合视频使用(可参考视频内容辅助理解上下文)
/xiaohu-subtitle-polish /path/to/subtitle.srt --video /path/to/video.mp4
你是一名「专业字幕文案编辑」,擅长中文写作、口语还原与字幕排版规范。
--video 参数,可参考视频画面文字辅助判断这是 Google 的产品)-ml 50 参数重新生成细粒度分段(约 100+ 段 vs 默认 ~50 段),以获得更精确的时间锚点。命令示例:
# 此细粒度重转写需备份引擎 whisper-cli(whisper-cpp)+ ggml 模型,安装见 xiaohu-video-md/初始化.md
whisper-cli -m ~/.cache/whisper-cpp/ggml-large-v3-turbo.bin -t 8 -ml 50 audio.mp3 -osrt -of output_short
# 检测该段时间范围内的静音区间(-30dB 以下持续 0.5 秒视为静音)
ffmpeg -i <音频文件> -ss <start_time> -to <end_time> -af silencedetect=n=-30dB:d=0.5 -f null - 2>&1 | grep silence_start
取第一个 silence_start 的时间点作为裁剪后的 end time(加回 start_time 偏移量)。如果没检测到静音(整段都有声音),保留原始 end time 不裁剪♪ 歌词内容 ♪)严格 SRT 格式:
1
00:00:00,000 --> 00:00:03,500
这是第一条字幕内容
2
00:00:03,500 --> 00:00:07,200
这是第二条字幕内容
格式要求:
HH:MM:SS,mmm(用逗号分隔毫秒)触发:用户说"双语 / 中英 / 中英双语 / bilingual",或上游 video-md 传 --bilingual。
核心目标:中文是主角、英文是辅助。中文用大字号醒目,英文用小字号退居其次,形成反差对比——不是中英同样大小平铺。
翻译产出「双语 SRT」:和单语一样逐条翻译,但每条保留两行内容——中文在上、英文(原文)在下,时间戳与原文 SRT 一句对一句完全对齐(不重新断句、不合并条目,原文怎么切中文就怎么对)。中文行照常去标点、规范术语;英文行保留原文(仅修正 ASR 识别错误,如 Claude 被听成 cloud、MCP 被听成 NCP)。
1
00:00:19,239 --> 00:00:21,239
大家好吗
Hello everyone, how are you?
转双语 ASS(中文大 / 英文小):调脚本,不要手写 ASS。
python3 scripts/bilingual_ass.py <双语SRT> --output <双语ASS> [--cn-size N] [--height 视频高度]
--cn-size 24,英文自动按 中文 / 1.7 算(=14)。烧录走 ass= 滤镜(不是 subtitles=):
ffmpeg -y -i <视频> -vf "ass=<双语ASS>" -c:a aac -b:a 128k <输出>
带水印时把 ass=... 和 drawtext 串在同一条 -vf 里。
subtitles 滤镜的 force_style FontSize 对整条字幕统一生效,没法让一条里中文大、英文小。而 SRT 文本里写 inline {\fsN} 会被 ffmpeg 的 srt 解码器剥离(2026-05-31 实测:三档字号烧出来 md5 完全相同 = inline 没生效)。只有真正的 ASS 文件喂给 libass,才能在一条字幕内 \N 换行 + inline 切字号。bilingual_ass.py 就是干这个的。
按润色规则处理每一条字幕:
--output 参数:按指定路径保存<原文件名>_zh.srt(同目录)当 xiaohu-video-download 技能的字幕处理环节需要翻译时,可直接调用本技能的润色规则:
联动时无需用户手动触发,由 video-download 在字幕翻译步骤自动应用本技能的规则。
ffmpeg -y -i input.mp4 \
-vf "subtitles=subtitle.srt:force_style='FontName=PingFang SC,Bold=1,FontSize=20,PrimaryColour=&H00FFFFFF,OutlineColour=&H40000000,Outline=1,Shadow=0,MarginV=30'" \
-c:a aac -b:a 128k output.mp4
此样式经小互确认为"完美"(2026-02-19)。
当视频底部已有烧录过的字幕(如英文原字幕),新字幕需上移避让。按分辨率选参数:
720p 避让:
ffmpeg -y -i input.mp4 \
-vf "subtitles=subtitle.srt:force_style='FontName=PingFang SC,Bold=1,FontSize=18,PrimaryColour=&H00FFFFFF,OutlineColour=&H40000000,Outline=1,Shadow=0,MarginV=80'" \
-c:a aac -b:a 128k output.mp4
720p + MarginV=80 + FontSize=18 经验证不遮挡(2026-03-17 NVIDIA Olaf 视频)。
1080p 避让:
ffmpeg -y -i input.mp4 \
-vf "subtitles=subtitle.srt:force_style='FontName=PingFang SC,Bold=1,FontSize=19,PrimaryColour=&H00FFFFFF,OutlineColour=&H40000000,Outline=1,Shadow=0,MarginV=42'" \
-c:a aac -b:a 128k output.mp4
1080p + MarginV=42 + FontSize=19 经验证不遮挡(2026-03-15 HydraDB 视频)。
烧录后必须截帧确认不遮挡,如有问题微调 MarginV。
| 参数 | 默认值 | 720p避让 | 1080p避让 | 说明 |
|---|---|---|---|---|
| FontName | PingFang SC | 同 | 同 | 苹方字体 |
| Bold | 1 | 同 | 同 | 加粗 |
| FontSize | 20 | 18 | 19 | 避让时略小 |
| PrimaryColour | &H00FFFFFF | 同 | 同 | 白字 |
| OutlineColour | &H40000000 | 同 | 同 | 半透明黑边 |
| Outline | 1 | 同 | 同 | 描边宽度 |
| Shadow | 0 | 同 | 同 | 无阴影 |
| MarginV | 30 | 80 | 42 | 底部边距 |
MAmattpocock/skills318k近 7 天新增 9,301 个 star
MAmattpocock/skills318k近 7 天新增 9,301 个 star
MAmattpocock/skills318k近 7 天新增 9,301 个 star
OBobra/superpowers314k近 7 天新增 4,048 个 star
OBobra/superpowers314k近 7 天新增 4,048 个 star