跳到主要内容
SubtitleMatrix

LRC 转 ASS

格式转换歌词(LRC)
或者粘贴字幕文本

选项

当源文件没有结束时间时使用(纯文本、LRC)。输出里的时间轴是在这里生成的,不是转换来的,所以填多少就是多少。

这次转换会改变什么

有 1 项会被丢弃或需要你决定

  • 时间

    字幕条的结束时间——源文件不记录这些时间,因此输出中的结束时间是生成的,而不是转换来的

这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。

LRC 转 ASS:每行歌词变成 `[Events]` 里的一条 `Dialogue:`,时间从 `[mm:ss.xx]` 改成 `0:00:04.13`,多行用 `\N` 连接。产物可以直接给播放器或字幕软件使用。

关键在结束时间:LRC 没有终点,ASS 必须有。这里用“下一行的开始”当这一行的终点,和歌词播放器推进高亮是同一规则;最后一行后面没有下一行,就用页面上设定的时长补出来,并在报告里注明这个时间是生成的。

有损清单是 timing:产物里的结束时间并非文件原有信息,而是推断的。`[offset:]` 标签会被读取并保留,不会自动加到时间轴上,所以产物与文件字面一致。

标题 `[ti:]` 会写进 `[Script Info]` 的 Title;`[ar:]` 艺人在 ASS 里没有对应字段。转换在浏览器里完成,不上传、不注册;批量可取消并打包。

示例

一份典型的 LRC 文件转成 ASS

输入

[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.

输出

[Script Info]
Title: Sample Song
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:12.00,0:00:15.30,Default,,0,0,0,,First line of the song.
Dialogue: 0,0:00:15.30,0:00:18.00,Default,,0,0,0,,Second line.\NSecond line, translated.
Dialogue: 0,0:00:18.00,0:00:21.50,Default,,0,0,0,,
Dialogue: 0,0:00:21.50,0:00:23.50,Default,,0,0,0,,Final line.

产物丢了结束时间;每一行的开始时间与文字逐行一致。

同一转换遇到一份脏文件

输入

[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]

输出

[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:03.00,0:00:05.50,Default,,0,0,0,,Out of order.
Dialogue: 0,0:00:05.50,0:00:07.00,Default,,0,0,0,,Leading zero omitted, one decimal.
Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,Second with no centiseconds.\NRepeated chorus line.
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Repeated chorus line.
Dialogue: 0,0:00:12.00,0:00:14.00,Default,,0,0,0,,

真实文件常见的损坏:BOM、混合换行、缺前导零的时间戳、重复的副歌行。解析器不抛异常,读不出的部分记进有损说明。

常见问题

LRC 转 ASS 时,每行歌词的结束时间从哪来?

从下一行的开始。歌词播放器也是这个规则;最后一行没有下一行,就用页面设定的时长补出来,并在报告里注明。

LRC 转 ASS 会应用 `[offset:]` 标签吗?

不会。偏移会被读取并保留原样,时间轴按文件字面转换;要抵消偏移请在本页的平移参数里自己做。

LRC 的 `[ti:]` 标题在 ASS 产物里还在吗?

在,写入 `[Script Info]` 的 Title 字段;`[ar:]` 艺人在 ASS 里没有对应字段,会丢失。

LRC 转 ASS 后,两行同时间戳的歌词会变成什么?

一条 cue 的两行文字,用 `\N` 连接,播放器一起显示;不会被拆成两条抢同一时刻的字幕。

LRC 转 ASS 的毫秒时间会变吗?

LRC 本来只到百分秒,ASS 也写到百分秒,所以 `[00:04.12]` 原样进入 `0:00:04.12`,没有额外舍入。

LRC 转 ASS 后,歌词顺序会变吗?

按开始时间升序输出;原文件乱序会被纠正,原本有序则保持不变。

相关工具