介绍

在观看非母语的影视作品时往往都需要搭配一份母语字幕食用,然而经常会遇到好不容易找到的字幕其时间轴无法与作品相匹配的情况。人工调轴又会耗费大量时间和精力,对此,在这儿推荐一个可以对文本字幕进行批量自动调轴的工具:alass。

该自动调轴工具源自github仓库:kaegi/alass: “Automatic Language-Agnostic Subtitle Synchronization”
由于原仓库release版本较旧,个人编译了新版本并制作了批量bat工具以方便使用:Releases · dyphire/alass

效果示例:

Turn this: Into this:
img img

以下为使用教程

特别注意:所有路径不要有中文
特别注意:所有路径不要有中文
特别注意:所有路径不要有中文

第一步,配置环境

运行alass.bat

alass(xxx ver).bat中设置路径(已设好,无需变动)

以上操作只需配置一次,后续无需再执行此步骤

第二步,准备文件

  1. 参考文件为 <xxx.xxx>(参考文件可以是视频文件,也可以是另一份正确时轴的字幕)
  2. 原始字幕文件命名为 <xxx_TV.ass> or <xxx_TV.ssa> or <xxx_TV.srt>,视文件格式而定
  3. 需要用到的alass(xxx ver).bat(对应字幕文件的格式)

文件名最好不要有特殊符号,比如空格之类会导致程序出错

以上文件全部放在同一个文件夹中(参考文件和原始字幕文件可以通过硬链接或符号链接(推荐)放入alass所在文件夹)

批量重命名可使用好压批量命名工具(内置)也可以选择自己喜欢的批量重命名工具

创建符号链接的工具推荐 :Hardlink Shell Extension(内置)

第三步,开工

把参考文件<xxx.xxx>拖到alass(xxx ver).bat上(一次性可处理多个)

泡一杯咖啡等待,bat会自动依次处理所有的字幕,直到全部处理完毕

BDsub文件夹内是调轴后的字幕

TVsub文件夹内是原始字幕

Log文件夹内是调轴记录日志

第四步,人工查错

打开Log目录下生成的<xxxx_check.log>文件,人工检查提示的有问题的行和画面字

注释

更多灵活的参数用法请参考README.md或运行alass --help获取详细的命令行参数

原理解释
alass是利用了字幕靠卡音频打轴的特点,将字幕和音频或其他正确字幕进行对比,并参考此时间的差值对字幕时间轴进行平移的,所以台词基本上都是准的,但画面字不一定准。理论上,声音的波形越容易辨识,调轴就越准,理论上如此。

特殊用法

  1. 关于参考文件可以为另一份正确时轴的字幕这点,其实存在一些骚操作

    • 比如用来调轴不同字幕组版本以供食用,经测试极为方便(
    • 美剧之类还可以把nf/亚马逊的官中字幕当作参考字幕来调轴字幕组版本,未测试。
    • 理论上其他语言的正确时轴字幕也可以当作参考字幕(比如英文字幕),但往往这类字幕会多很多的背景音标注字之类。所以不先批量去除干扰的话效果应该不会很好,未测试。经他人测试这一方案可行
    • 注意:参考字幕和需调轴的字幕其中一方不能有漏译问题,否则无法正确处理(缺失相同的对话时无影响)
  2. 这工具还可以通过视频制作带时间轴的空srt文件,以便制作字幕使用

    • 命令行参考:alass myMovie.mkv _ reference.srt,经测试120分钟视频生成时间轴的空srt文件大概耗时1-2分钟

已知问题

  • 原始字幕缺译较多时无法正确处理(字幕本身漏译或BD增加新的对话场景)
  • BD片源开头/结尾处和放送源不一致时无法正确处理(常见于前情提要和下集预告的缺失)
  • 字幕开头存在画面字时无法正确处理(可以先行移除后再处理)
  • srt字幕单个时轴存在多行字幕时可能无法正确处理(常见于双行)

备注:bat文件和使用指南制作参考sushi批量操作包作者 Shizuru @Kamigami Sushi: 自动调轴工具批量处理,特此感谢!