TXT 转 ASS
或者粘贴字幕文本
选项
当源文件没有结束时间时使用(纯文本、LRC)。输出里的时间轴是在这里生成的,不是转换来的,所以填多少就是多少。
这次转换会改变什么
有 2 项会被丢弃或需要你决定
- 时间
时间轴本身——源文件不记录任何时间,因此输出的时间轴是生成的,而不是转换来的
- 精度
时间精度——输出的时间刻度更粗,因此每个时间戳都会四舍五入到最接近的 10 毫秒
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
TXT 里没有时间码,所以 TXT 转 ASS 的时间轴是这一步现排出来的,不是从文件里读出来的。第一行从 0 开始,之后每一行接着上一行的结束时间;每行占用多长时间由页面上的“时长”参数决定,默认 2000 毫秒。
排好之后再写成 ASS 脚本:每条字幕是一条 `Dialogue:` 行;若一条 cue 本身有多行正文,就用 `\N` 连接。因为 ASS 的时间只到百分秒,生成的时间槽会舍入到最近的 10 毫秒,单条最多移动 5 毫秒,行序不变。
有损说明同时列出两项:时间轴是生成的,以及精度退到百分秒。ASS 的样式表是转换器给出的默认值——TXT 里没有样式、定位或卡拉OK可以继承,产物也不会凭空多出这些字段。
这一页适合“只有文字稿、需要先得到一份能加载的字幕”的场景;真正与画面对齐还要靠平移、缩放或对轴工具。转换在浏览器内完成,文件不上传。
示例
一份典型的 TXT 文件转成 ASS
输入
The quick brown fox jumps over the lazy dog.
Second paragraph, first line.
Second paragraph, second line.
输出
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:02.00,Default,,0,0,0,,The quick brown fox jumps over the lazy dog.
Dialogue: 0,0:00:02.00,0:00:04.00,Default,,0,0,0,,Second paragraph, first line.
Dialogue: 0,0:00:04.00,0:00:06.00,Default,,0,0,0,,Second paragraph, second line.
这份产物丢掉了时间轴(它由本站排定)与精度;文字与行序逐行对应。
同一转换遇到带 BOM 与空行的 TXT
输入
Hello world.
Second block.
输出
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:02.00,Default,,0,0,0,,Hello world.
Dialogue: 0,0:00:02.00,0:00:04.00,Default,,0,0,0,,Second block.
真实文件常带 BOM、Windows 换行、前后空白和多层空行。可以对照上面那份干净样例,看看解析器能容忍到什么程度。
常见问题
TXT 转 ASS 的时间码是编出来的吗?
是。TXT 没有起止时间,第一行从 0 开始,之后每行接着上一行的结束;时间轴是这一页排出来的,不是从文件里转换出来的,有损说明里会明确列出这一项。
TXT 转 ASS 每行默认显示多久?
默认 2000 毫秒,也就是每行 2 秒。页面上的“时长”参数可以改成任意毫秒数,所有行共用同一个值,最后一条的结束时间等于行数乘以这个值。
TXT 转 ASS 的生成时间会被舍入吗?
会。ASS 只到百分秒,生成的槽位写到最近的 10 毫秒,单条最多偏 5 毫秒。顺序不会重排,每行相对前一行的间距也不会被拉开。
TXT 转 ASS 后,多行段落怎么表示?
用 `\N` 连接成一条 Dialogue。TXT 的解析模型是一行一条 cue,空行只是段落分隔;所以默认情况下每条字幕只有一行,`\N` 只在一条 cue 本身有多行正文时出现。
TXT 转 ASS 时空白行会变成空白字幕吗?
不会。空白行被当作段落分隔,不生成 cue;只有含文字的行才进入时间槽,所以时间轴里不会出现由格式造成的空洞。
TXT 转 ASS 的输出用什么编码?
输出固定是 UTF-8、Unix 换行符、不带 BOM。输入 TXT 若是 UTF-16 或 Windows 单字节编码,会先解码并在结果面板里说明。