关于 wjs-translating-subtitles
这是一个纯文本技能,可翻译字幕或文字稿并生成目标语言或双语 SRT。它注重自然精简的译文,并按标点重新划分字幕段落。
主要功能
- 01翻译 SRT 和文字稿
- 02生成单语或双语字幕
- 03按标点重新划分字幕段
- 04检查字幕时间与格式
- 05提供各语言行长规范
适用场景
- 01将现有 SRT 翻译成其他语言
- 02把文字稿整理为带时间戳的 SRT
- 03修复句中断开的字幕段
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jianshuo/ claude-skills --skill wjs-translating-subtitles安装后在 Claude Code 中输入/wjs-translating-subtitles确认已加载。
详细介绍
wjs-translating-subtitles
输入源语言 SRT → 输出目标语言(或双语)SRT。**此技能仅处理文本。**字幕烧录由 /wjs-burning-subtitles 处理;配音由 /wjs-dubbing-video 处理。
适用场景
- 用户有一份语言 A 的 SRT,想翻译成语言 B。
- 用户粘贴了转录文本(有或没有时间戳),想将其翻译并生成 SRT。
- 用户有一份 SRT,但字幕条目在句子中途结束——此技能的重新分段步骤可以修复此问题。
不适用场景
- 还没有源语言 SRT → 先运行
/wjs-transcribing-audio。 - 用户想要烧录字幕 → 先在这里完成翻译,再运行
/wjs-burning-subtitles。 - 用户想要配音 → 先在这里完成翻译,再运行
/wjs-dubbing-video。
选择目标语言
根据用户的表述确定目标语言,不要再次询问:
- “翻成中文 / 中文字幕 / 中文配音” →
zh-CN。 - “translate to English / English subs / English dub” →
en。 - “bilingual” / “双语” → 生成
.<source>.srt和.<target>.srt(也可选择生成合并版.<source>-<target>.srt)。 - 表述不明确 → 默认选择用户在该项目中以往使用的语言。
简体中文和英语已通过完整验证。其他目标语言(日语、韩语、法语等)也遵循相同规则;如果后续要配音,瓶颈在于 TTS 语音是否可用——承诺前请参阅 /wjs-dubbing-video。
通用翻译原则
- 优先传达含义,而非逐字翻译。
- 使用简洁的字幕语言——观众阅读速度约为中文每秒 3 个词、英语每秒 3–4 个词;超出此速度的字幕会在读完前消失。
- 保留说话者的语气。源文随意,译文也随意;源文正式,译文也正式。
- 不要过度翻译人名、品牌、文化典故或技术术语。
- 准确保留数字、日期、人名和地名。
- 短语没有精确对应表达时,自然传达其含义。不要逐字硬译。
- 避免生硬、机器翻译腔的表达。
翻译为简体中文(zh-CN)
- 随意表达使用自然口语,正式表达使用正式中文。
- 仅使用简体字(除非用户明确要求,否则不要使用繁体字)。
- 每行字幕建议不超过 15 个汉字,每条字幕最多 2 行(超长字幕实在无法避免时可用 3 行)。
- 使用中文标点:“,”“。”“;”“:”“、”“——”。中文字幕中不要混用英文逗号或句号。
- 尽量少用指示词“这”“那”“这个”“那个”“那份”“那种”“那里”“那样”。 西班牙语到中文(以及英语到中文)的机器翻译常会因为源文中出现显式指示词而加入这些词,但中文通常会省略。示例:
- “这把我们带入二元世界的载体” → “把我们带入二元的载体”
- “运用那份能量” → 如有需要,可译为“运用这股能量”,也可直接译为“运用能量”
- “正是在这合一里” → “正是在合一中”
- “像罪人那样翻滚” → “像罪人翻滚” / “像罪人般翻滚”
- “那份精微的觉知” → “精微的觉知” 仅在确实表达含义时保留它们(指示、对比或“我就是那” / “tat tvam asi”等固定表达)。默认删去;只有在句意会因此变得含糊时才加回。
示例(西班牙语 → 中文):
Spanish: No pasa nada. → Chinese: 没关系。
Spanish: Vamos a ver qué pasa. → Chinese: 我们看看会发生什么。
Spanish: Me parece una locura. → Chinese: 我觉得这太疯狂了。
Spanish: ¿Qué quieres decir? → Chinese: 你是什么意思?
Spanish: La verdad es que no lo esperaba.
→ Chinese: 说实话,我没想到会这样。
翻译为英语(en)
- 使用自然的英语口语表达。避免翻译腔(“It is precisely through entering the body…” → “It's by entering the body…”)。
- 每行建议不超过 40–42 个字符(约 7–9 个词),每条字幕最多 2 行。每行硬性上限为 50 个字符。
- 使用 ASCII 标点:
,.;:—(长破折号)。避免使用 Unicode 弯引号,以确保.srt格式通用。 - 对于沉思或灵性内容,优先使用简单词汇,而非源自拉丁语的术语:“presence” 优于 “manifestation”,“wholeness” 优于 “totality”,“wake up” 优于 “awaken to consciousness”。
示例(西班牙语 → 英语):
Spanish: No pasa nada. → English: It's nothing.
Spanish: Vamos a ver qué pasa. → English: Let's see what happens.
Spanish: Me parece una locura. → English: This feels crazy to me.
Spanish: ¿Qué quieres decir? → English: What do you mean?
Spanish: La verdad es que no lo esperaba.
→ English: Honestly, I wasn't expecting this.
在标点处重新分段(必须)
Whisper 会按静音或换气分段,而不是按语法分段。结果几乎总会出现在句中结束的字幕(例如,“...es una forma de aterrizar,” 下一条字幕以 “el espíritu en el cuerpo...” 开头)。任何一次只处理一条字幕的 TTS 都会在原说话者并未停顿的位置插入不自然的停顿。配音前必须先修正这一点,同时也能改善屏幕上的阅读体验。
不同语言的标点集合有所不同:
- 中文字幕必须以
,。;:——或、结尾。 - 英文字幕必须以
,.;:—(长破折号)结尾;实际制作字幕时,偶尔也可以用单个破折号结尾。英文字幕绝不能在没有逗号的分句断点处结束,也绝不能在 “kind of” 或 “in order to” 这样的短语中间拆分。
规则:
- 每条字幕都必须以真正的标点符号结尾。 绝不能让字幕以名词、动词、连词或冠词结尾,导致语意延续到下一条字幕。
- 可以(而且通常有必要)将一条源字幕拆分成 2–4 条较短字幕,并根据原字幕时长内的字符位置插算时间戳。
- 如果前后两条字幕的尾部和开头构成一个分句,可以将它们合并;合并后的字幕沿用前一条字幕的开始时间和后一条字幕的结束时间。
- 每条字幕以 3–8 秒为目标。短于约 1.5 秒的字幕在屏幕上会显得过于零碎;长于约 10 秒的字幕通常意味着漏掉了标点断点。
一段典型的 2–3 分钟演讲,通常会从 12–18 条原始字幕整理成约 25–40 条以标点为界的字幕。不要试图保留原始字幕数量。
后续进行 TTS 配音时,以标点为界的结构能确保每段 TTS 音频都是完整的话语,带有恰当的句末语调;由于每段音频都在真正的停顿处衔接,拼接后的听感也会很自然。
SRT 输出规则
1
00:00:01,200 --> 00:00:04,800
中文字幕内容
2
00:00:04,800 --> 00:00:08,500
中文字幕内容
- 从
1开始按顺序为字幕编号。 - 时间戳格式:
HH:MM:SS,mmm。毫秒使用逗号,绝不能使用句点。 - 时间戳不得重叠。
- 保留原始时间,除非确有必要调整。
- 每条字幕通常应为 1–2 行。
- 如果某条字幕过长,且时间允许,应将其拆分成较短的字幕。
- 不要在字幕文件中添加说明文字。
双语输出
用户要求双语时:第一行放源文,第二行放译文:
1
00:00:01,200 --> 00:00:04,800
No pasa nada.
没关系。
规则:
- 源文在前,译文在后。
- 保留时间。
- 除非用户要求,否则避免添加额外说明。
- 两行都应足够简短,便于阅读。
输出格式
根据用户的要求,提供以下一种或多种格式:
- 仅含目标语言的
.srt - 双语
.srt(源文行 + 译文行) - 不带时间戳的目标语言文稿
- 源文与目标语言并排对照表
未作其他说明时,对“翻译这份 SRT”的默认输出为:仅含目标语言的 .srt + 必要时附上一条简短的不确定性说明。
文件命名
input.srt # source (e.g., from /wjs-transcribing-audio)
translated outputs:
input.zh-CN.srt # Simplified Chinese only
input.en.srt # English only
input.es-zh.srt # Spanish + Chinese bilingual
input.es-en.srt # Spanish + English bilingual
input.es-zh-en.srt # three-language
采用 BCP-47 风格的后缀,可以让人一眼看出目标语言,并便于将多种目标语言的输出并排存放。
处理音频不清标记
如果源 SRT 中包含 [inaudible] 或 [unclear]:
- 自然地翻译前后文。
- 在目标 SRT 中保留方括号内的标记(不要编造内容)。
- 如果
[unclear]片段导致目标语言中的字幕语法不通顺,应保留该标记,并在回复中添加说明(不要写入 SRT 文件)。
交付前质量检查
- 字幕编号连续
- 时间戳有效(
HH:MM:SS,mmm,无重叠) - 毫秒使用逗号
- 译文自然;保留说话者的语气
- 行长符合平台或单条字幕的限制
- 专有名词准确
- 没有字幕在分句或短语中间结束
- 没有编造内容
下游处理
/wjs-burning-subtitles— 将此 SRT 烧录到视频中,或软复用为可切换的字幕轨道。/wjs-dubbing-video— 根据此 SRT 生成 TTS 配音,并与原始时间点对齐。- 双语播放:大多数平台都支持软复用多个字幕轨道;但如果需要同时显示两种语言,请通过
/wjs-burning-subtitles直接烧录*.source-target.srt。
常见问题
- 翻译后字幕条目在句子中间结束。 原文按静音划分的字幕条目边界并不安全;务必按标点重新分段。
- 中文译文中出现多余的指示词。 机器翻译会因为原文中有
eso/that而插入「这」/「那」。请果断删掉。 - 句号毫秒数。 Whisper 本地生成的时间戳使用
.mmm;SRT 规范要求使用,mmm。务必统一格式。 - 翻译专有名词。 品牌名、地名、技术术语应保持原样,或使用目标语言中的惯用译法(例如,“OpenAI”保持不变,“New York”译为“纽约”)。
- 为了符合字幕条目长度上限而过度缩短。 如果一行确实超过上限,就将其拆分成两个字幕条目,并插入内插时间戳;不要为了符合上限而丢失含义。
- 未请求配音时忘记重新分段。 按标点划分的 SRT 也更便于阅读——在自然停顿处分行,符合观众的阅读习惯。即使只需烧录字幕,也要重新分段。