Video Captions

本地化处理视频字幕,支持多格式输出与烧录。

已扫描
适合谁
视频创作者、内容运营人员
不适合谁
无需字幕的用户、无本地运行环境者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @ivangdavila/video-captions

Skill 说明

命令、参数、文件名以原文为准

使用场景

用户需要为视频内容添加字幕或字幕。代理将处理转录、时间对齐、格式化、样式设置、翻译以及在所有主流格式和平台上的烧录。

快速参考

主题文件
转录引擎engines.md
输出格式formats.md
样式预设styling.md
平台要求platforms.md

核心规则

1. 根据上下文选择引擎

场景引擎原因
默认(推荐)Whisper 本地版完全离线,数据不离开设备
Apple Silicon 设备MLX Whisper原生加速,仍为本地运行
需要词级时间戳whisper-timestampedDTW 对齐,仍为本地运行

默认使用 Whisper 本地版(turbo 模型)。详见 engines.md 了解可选的云端替代方案。

2. 根据平台选择输出格式

平台格式说明
YouTubeVTT 或 SRT推荐使用 VTT
Netflix / 专业用途TTML严格的时间要求
社交媒体(TikTok、Instagram)烧录(ASS)字幕嵌入视频中
通用场景SRT兼容性最广
卡拉 OK / 特效ASS支持高级样式

若未指定目标平台,请向用户确认。

3. 专业时间对齐标准

Netflix 标准(默认):

  • 最短持续时间:5/6 秒(0.833 秒)
  • 最长持续时间:7 秒
  • 每行最大字符数:42
  • 最大行数:2 行
  • 字幕间间隔:至少 2 帧

社交媒体标准:

  • 更短的片段(2–4 个词)
  • 更频繁的断句
  • 居中或动态位置

4. 分段规则

应在以下情况换行:

  • 句号、问号等标点符号后
  • 连接词前(如 and、but、or)
  • 介词前

禁止拆分的情况:

  • 冠词与名词之间
  • 形容词与名词之间
  • 名字与姓氏之间
  • 动词与主语代词之间
  • 助动词与动词之间

5. 词级时间戳

使用词级时间戳适用于:

  • 卡拉 OK 风格高亮
  • 精确同步验证
  • TikTok / Instagram 动画字幕
  • 转录准确性的质量检查

通过 --word-timestamps 标志启用。

6. 发言人识别

针对多说话人内容:

  • 使用语音分离(pyannote 本地版,或配置后使用云端 API)
  • 格式:[发言人 1][姓名](如已知)
  • SDH 格式示例:JOHN: 你觉得怎么样?

7. 质量验证

交付前需检查:

  • 开头、中间、结尾处的时间同步
  • 每行字符数是否符合限制
  • 多说话人时是否包含发言者标签
  • 烧录渲染效果是否清晰

工作流程

基础转录

# 自动检测语言,输出 SRT
whisper video.mp4 --model turbo --output_format srt

# 指定语言
whisper video.mp4 --model turbo --language es --output_format srt

# 输出多种格式
whisper video.mp4 --model turbo --output_format all

词级时间戳

# 使用 whisper-timestamped
whisper_timestamped video.mp4 --model large-v3 --output_format srt

# 启用语音活动检测(VAD)预处理(减少误识别)
whisper_timestamped video.mp4 --vad silero --accurate

带样式的字幕(ASS)

# 先生成 SRT,再转换为带样式的字幕
ffmpeg -i video.mp4 -vf "subtitles=video.srt:force_style='FontName=Arial,FontSize=24,PrimaryColour=&HFFFFFF,OutlineColour=&H000000,Outline=2,Shadow=1,Alignment=2'" output.mp4

社交媒体烧录

# TikTok / Instagram 风格(居中、加粗)
ffmpeg -i video.mp4 -vf "subtitles=video.srt:force_style='FontName=Montserrat-Bold,FontSize=32,PrimaryColour=&HFFFFFF,OutlineColour=&H000000,Outline=3,Shadow=0,Alignment=10,MarginV=50'" output.mp4

# Netflix 风格(底部、简洁)
ffmpeg -i video.mp4 -vf "subtitles=video.srt:force_style='FontName=Netflix Sans,FontSize=48,PrimaryColour=&HFFFFFF,OutlineColour=&H000000,Outline=2,Shadow=1,Alignment=2'" output.mp4

翻译

# 转录并翻译为英文
whisper video.mp4 --model turbo --task translate --output_format srt

格式转换

# SRT 转 VTT
ffmpeg -i video.srt video.vtt

# SRT 转 ASS(用于样式调整)
ffmpeg -i video.srt video.ass

字幕陷阱

  • 静音段误识别 → 使用 VAD 预处理或裁剪静音部分
  • 语言识别错误 → 对混合语言内容显式指定 --language
  • 长视频时间漂移 → 使用词级时间戳 + 手动抽查
  • 超出字符限制 → 设置 --max_line_width 42 以符合 Netflix 标准
  • 缺失发言人标识 → 多说话人内容启用语音分离
  • 烧录质量下降 → 使用高码率输出(如 -b:v 8M

常见场景

YouTube 视频

  1. 转录:whisper video.mp4 --output_format vtt
  2. 将 .vtt 文件上传至 YouTube Studio
  3. 审查自动同步建议

TikTok / Instagram Reel

  1. 使用词级时间戳进行转录
  2. 应用加粗动画样式
  3. 烧录:ffmpeg -i video.mp4 -vf "subtitles=video.ass" -c:a copy output.mp4
  4. 以平台分辨率导出

Netflix / 专业用途

  1. 使用 Whisper large-v3 获取最佳本地精度
  2. 导出 TTML 格式
  3. 验证:每行最多 42 字符,最多 2 行,时间间隔正确
  4. 在最后一行添加译者署名

播客 / 采访

  1. 启用发言人分离
  2. 格式化为对话形式:[SPEAKER]: 文本
  3. SDH 选项:包含 [音乐][笑声] 等描述

外语电影翻译

  1. 在原语言中进行转录
  2. 翻译:使用 --task translate 转为英文
  3. 或使用外部翻译服务 + 时间对齐

外部接口

默认:100% 本地处理。无网络调用。

接口数据发送使用时机
Whisper(本地)无(本地运行)默认 —— 始终使用
api.assemblyai.com音频文件用户设置 ASSEMBLYAI_API_KEY 时
api.deepgram.com音频文件用户设置 DEEPGRAM_API_KEY 时

云端 API 仅作为替代方案提供,除非用户明确提供 API 密钥并请求云端处理,否则不会使用。默认情况下,所有处理均在本地完成。

安全与隐私

默认工作流为 100% 离线运行:

  • Whisper 在您的本地机器上运行
  • 生成的字幕文件始终保留在本地
  • 嵌入字幕的视频文件也保留在本地
  • 不进行任何网络请求

云端 API 为可选且需手动启用:

  • 仅当设置 ASSEMBLYAI_API_KEYDEEPGRAM_API_KEY 时使用
  • 仅在您明确调用云端引擎命令时触发
  • 若从未设置这些密钥,则音频数据永远不会离开您的设备

此技能不执行以下操作:

  • 默认情况下不上传任何内容
  • 基础功能无需互联网连接
  • 不将数据存储在外部位置

相关技能

通过 clawhub install <slug> 安装(用户确认后):

  • ffmpeg — 视频/音频处理
  • video — 通用视频任务
  • video-edit — 视频编辑
  • audio — 音频处理

反馈

  • 如果有用:clawhub star video-captions
  • 保持更新:clawhub sync
I
@ivangdavila

已收录 7 个 Skill

相关推荐