ASSFun ‐ 字幕生成 - KyokuSai/ASSFont GitHub Wiki

如果输入字幕文件只有一个,并且主界面开启字幕生成,则会进行字幕生成操作。

字幕生成可以对原始字幕进行一些规范化修正、繁化、生成日语字幕、生成多样式字幕、应用卡拉OK模板化。

但不是总会有上述步骤,可以自行配置程序需要做什么。

默认为 極彩花夢 的通用配置,也就是说如果要使用那么你需要修改不少项目。

清理 Script Info 信息

开启后会对所有生成字幕进行 Script Info 的统一。

Script Info 是 ASS 字幕顶部的脚本信息,包含诸如脚本分辨率、色域空间、脚本相关作者等信息。

这里介绍一些常见条目。

ScriptType: v4.00+:脚本所适用的版本,绝大部分情况下请留下这条信息,并且设置为v4.00+,否则会造成一些字幕显示上的严重错误。

PlayResX / PlayResY:脚本分辨率,在 ASS 字幕中有不少坐标相关信息,均会按照脚本分辨率进行计算,不需要与视频分辨率一致。

如果脚本分辨率过低则显示字幕也会像低分辨率视频一样糊,但也不用专门设置得很高,1080p视频设置为1080p即可。

YCbCr Matrix:字幕显示的色域空间,绝大部分情况下设置为TV.709即可。

不要设置为TV.601——除非你知道你自己在做什么。

Language:这是我们默认添加的一个信息,它不是 ASS 字幕的标准信息,如果你不需要请自行删除。

因为在应用卡拉OK模板时获取不了很多 macro 可以获取的信息,所以我们加入了此项,可通过 meta 来获取值并配置脚本默认选项。

无论如何,你可以使用 {LANGUAGE} 表示一个根据字幕语言变化的值,并填入 Script Info 。

清理 Aegisub Project Garbage 信息

字幕在 Aegisub 中打开之后会有一些 Project Garbage 信息保存在字幕中,例如打开的音视频文件、关键帧文件、界面信息、当前行等。

为了避免显示文件路径造成的潜在信息泄露,可以删除掉这些不影响字幕显示的信息。

清理 furigana 样式

在应用卡拉OK模板化之后会在样式表中添加若干 furigana 样式。

这些样式是在部分 template 中才会用到的,其余情况下不需要保留。

并且程序会判断该样式是否真正被使用,对于没有用到的 furigana 样式才会进行清理,而用到的还是会被保留下来。

可以保持样式表的整洁。

清除空格

在打字幕的时候可能行末误加空格,即便这些空格绝大部分情况下不会影响显示但总之去掉也没什么问题。

如果打开清理所有重复空格则会将所有空格变为单一空格。

Unicode 码点转换为 UTF-8 字节

这个比较晦涩,总之效果是,将诸如"\u{3000}"这样的 Lua 中可能用到的 Unicode 码点表示转化为"\xE3\x80\x80"这样的 UTF-8 字节表示。

这个功能在绝大部分情况下没有意义,但总归可以解决一些小问题。

(特效代码中可能会用到码点表示)

繁化

使用繁化姬( https://zhconvert.org/ )对字幕进行繁化处理。

在繁化请求时会发送繁化姬需要的 JSON 数据,如果你不想多修改此部分数据也请将默认配置中的"Ex-KSY,Ex-invisible"删除。

使用 {ASSCONTENT} 表示字幕内容,绝大部分情况下只需要在 JSON 的 text字段填入此值即可(默认即是如此)。

然后本地会根据繁化设置,对请求返回的数据再进行一步处理。

例如设置繁化仅对部分样式生效、保留部分注释行。

关于保留部分注释行,如果改行被标记注释,并且特效未被标记 karaoke 则进行保留。

比如我们常会写一些注释,并且卡拉OK模板化时会对屏幕上显示的注释标记 karaoke ,而一些仅字幕中可查看的翻译注释则无 karaoke 标记,显示注释会被观众看到所以可以进行繁化,而不显示注释为了保证传达准确我们会保留原文。

繁中字幕会使用 assstyles.json 样式表中的样式,所以你可以专门为生成字幕配置繁中样式,例如替换一些简中字幕中使用的仅简中字体为专门的繁中字体。

生成日语字幕

如果原始字幕为双语字幕,那么你可能会需要专门生成一个单独的日语字幕。

我们平常的逻辑是,通过卡拉OK模板化直接将双语字幕转换为日语字幕,为了程序实现得更加简洁所以在 Script Info 中加入 Language 判断是否要生成日语字幕。

当然这个逻辑显然不适合绝大部分字幕组,所以额外有一个删除中文行的功能。

日语字幕会使用 assstyles.json 样式表中的样式,所以你可以专门为生成字幕配置日语样式。

生成多样式字幕

如果你不想生成多样式字幕请关闭此项。

我们平常的逻辑是,在制作字幕时会使用一个 style ,比如对于字幕 [KyokuSai] sample [CHS_JPN].kawaii.ass 的 style 即是 kawaii ,使用字体为圆体(黑体变体)。

然后使用此原始字幕进行其它样式的生成,比如额外想生成一个黑体字体风格的字幕供观众选择,就会将字幕替换为 sans 样式表,再生成 sans 的字幕。

style 判定在 ass 后缀之前两个小数点之间的值,你可以自行设为你想用的值,例如 style1 、style2 。

并且样式表存于 assstyles.json 中,你需要同时修改该文件中的数据来对应你自用的 style 。

该样式表位于 {root}/data/assstyles.json ,你可以在 https://github.com/KyokuSai/ASSFont/blob/main/data/assstyles.json 查看我们默认的样式表。

该表结构为:

{ "CHS_JPN": { "style1": "样式表1", "style2": "样式表1", "style3": "样式表1" }, "CHT_JPN": { "style1": "繁中样式表1", "style2": "", "style3": "" }, "JPN": { "style1": "日语样式表1", "style2": "", "style3": "" } }

第一个 key 为语言,请不要修改,因为这里的 key 仅作指向并不实际使用,如果你想用 简英、繁英、英语 的结构也是可以的(修改其它设置中会实际应用到文件中的值即可)。

然后是 style 的 key ,你实际可以指定一组 style 或者若干组,名称设为你实际需要的名称,例如我们常用的就是 kawaii 、 sans 、 serif 。

样式表的值为 ASS 中的 styleref 行,多行需要用\n分割。

简中的所有样式表都必须指定,而繁中和日语,如果值为空则会返回简中对应的样式表,也就是仅写入你想要修改的样式表。

卡拉OK模板化

需要用到 aegisub-cli ,在 https://github.com/Myaamori/aegisub-cli/releases 下载 exe 后放在你自己使用的 Aegisub 的同目录下。

开启后对所有生成字幕会应用一次卡拉OK模板。

需要载入视频文件,因为 Aegisub 有一些效果需要读取关键帧信息。

例如对于我们,无论是繁中日语还是额外的多样式,都需要进行一次卡拉OK模板化才行,字幕中的特效代码会根据不同样式表和配置产生不一样的结果。

文件名中的语言标识

此项仅作用于文件名,你可以改成你需要的标识,如 [CHS] 、 [GB] 、 [ENG] 等都是可以的。