翻译日期:2026-03-08

前言 (はじめに)

关于将歌唱时机表现为数据,并使其在音乐相关软件中通用的“时间标签(Time Tag)”,早在 2000 年左右就由 駄歌詞屋本舗 汇总并公开了规格。在此表示感谢。但遗憾的是,随着托管服务的终止,该网页已不复存在。

虽然在 Internet Archive 中仍有留存(以下简称“原著”),但因搜索困难且访问缓慢,使用不便,故在此重新整理。此外,本文档还反映了最新的技术现状。

概要

本文档规定了时间标签。时间标签用于将歌曲中歌词发声的时机表现为数据。

时间标签最初并无正式的统一规格,但在“原著”中对当时通用的内容进行了整理。本文档在原著基础上反映了最新现状,并剔除了已过时的内容,进行了重新编排。

因此,虽然本文档并非唯一的时间标签规格说明书,但仍希望尽可能多的软件能够遵循本规格,从而消除软件之间的冲突。


时间标签规定的是“发声时机”。
关于“表现方法”(例如:字幕的位置或字体等),不在时间标签的规定范围内。


本文档与 HTML 的 <time> 元素完全无关。


时间标签的定义 (タイムタグの定義)

时间标签原则 (タイムタグの原則)

  • 以歌曲播放开始为基准表示时刻的标签称为“时间标签”。
  • 1 个时间标签由 [] 包围,中间包含表示时刻的数字及 :
  • 构成时间标签的所有字符必须为半角字符。
  • 时间标签分为“秒级时间标签”和“扩展时间标签”两种。

秒级时间标签 (秒単位タイムタグ)

格式 [xx:yy]

  • 这是以秒为单位表示从歌曲播放开始起算时刻的时间标签。
  • [] 之间,包含数字 2 文字(上述格式中的 xx 部分)、冒号 :、数字 2 文字(上述格式中的 yy 部分)。

    • 因此,包含 [] 在内总计为 7 个字符。
  • xx 为分钟单位的数字。1 位数时需在首位补 0,必须保持 2 位。0 分时 xx 为 00。

    • xx 的最小值为 00,最大值为 99。不能(且不得)表示此范围外的分钟。
  • yy 为秒钟单位的数字。1 位数时需在首位补 0,必须保持 2 位。0 秒时 yy 为 00。

    • yy 的最小值为 00,最大值为 59。不能(且不得)表示此范围外的秒数。
  • 秒级时间标签的最小值为 [00:00],最大值为 [99:59]
时刻✅ 正确示例❌ 错误示例
1 分 5 秒[01:05][1:05][01:5][1:5](位数不足)
[00:65](秒数超过最大值)
[01:05](使用了全角字符)

实现建议 (実装のヒント)

  • 虽然从技术上实现对错误示例中的时间标签进行扩大解释而不报错是可能的,但原著认为:为了正确普及该规格,不应容许错误的写法,因此推荐不将其作为时间标签识别。
  • 虽然由于历史经纬,秒级时间标签已被规格化,但在秒级标签下很难精确表现歌唱时机。虽然规格上要求能够正确读取秒级标签是必要的,但建议将秒级标签用于确保兼容性,而主要使用下一节的“扩展时间标签”。

扩展时间标签 (拡張タイムタグ)

格式 [xx:yy:zz]

  • 这是以 10 毫秒为单位表示从歌曲播放开始起算时刻的时间标签。
  • [] 之间,包含数字 2 文字(上述格式中的 xx 部分)、冒号 :、数字 2 文字(上述格式中的 yy 部分)、冒号 :、数字 2 文字(上述格式中的 zz 部分)。

    • 因此,包含 [] 在内总计为 10 个字符。
  • xx 以及 yy 关于分钟和秒钟的规定与秒级时间标签相同。
  • zz 为以 10 毫秒为单位的数字(换言之,即秒以下小数点后第二位的数字)。1 位数时需在首位补 0,必须保持 2 位。0 毫秒时 zz 为 00。

    • zz 的最小值为 00,最大值为 99。不能(且不得)表示此范围外的小数部分。
  • 扩展时间标签的最小值为 [00:00:00],最大值为 [99:59:99]
时刻✅ 正确示例❌ 错误示例
1 分 5 秒 75
(750 毫秒)
[01:05:75][1:05:75](位数不足)
[00:65:75](秒数超过最大值)
[01:05:750](秒以下位超过最大值)
[01:05:75](使用了全角字符)
2 分 3 秒 04
(40 毫秒)
[02:03:04][02:03:4](位数不足)
[02:03:40](会被视作 400 毫秒处理)

实现建议 (実装のヒント)


虽然从技术上实现对错误示例中的时间标签进行扩大解释而不报错是可能的,但原著认为:为了正确普及该规格,不应容许错误的写法,因此推荐不将其作为时间标签识别。


歌词文件的定义 (歌詞ファイルの定義)

歌词文件原则 (歌詞ファイルの原則)

  • 歌词文件采用通用的文本格式。
  • 字符编码原则上使用 UTF-8。

    • 对支持其他字符编码没有限制。
  • 换行符使用 0x0d,0x0a (CRLF) / 0x0d (CR) / 0x0a (LF) 中的任意一种。
  • 歌词文件的内容包含表现歌词的字符串、时间标签以及 @ 标签(后述)。

实现建议 (実装のヒント)

  • 关于 UTF-8,虽然原本 UTF-8 不需要加 BOM,但现实中存在很多带 BOM 的 UTF-8 文件,因此建议支持带 BOM 的 UTF-8。
  • 由于历史经纬,过去的软件多使用 Shift-JIS,因此强烈建议支持 Shift-JIS。
  • 关于换行符的读取支持,强烈建议支持全部 3 种类型。

歌词文件的种类 (歌詞ファイルの種類)

  • 歌词文件分为“行首时间标签歌词文件”和“卡拉OK标签歌词文件”两种。
  • 在记有时间标签的任意行中,若有哪怕一行满足“时间标签出现在歌词片段之后,且该行有多个时间标签”的条件,则该文件为“卡拉OK标签歌词文件”。

卡拉OK标签歌词文件示例:

…[00:02:95]兎[00:04:70]追[00:05:57]ひ[00:05:83]し[00:06:50]彼の[00:07:66]山小[00:10:85]鮒[00:11:80]钓[00:12:71]り[00:13:01]し[00:13:63]彼の[00:14:84]川
  • 若不满足上述条件,则为“行首时间标签歌词文件”。

行首时间标签歌词文件示例:

…兎追ひし彼の山小鮒釣りし彼の川

行首时间标签歌词文件 (行頭タイムタグ付き歌詞ファイル)

  • 包含时间标签的行由一个时间标签和表现一行歌词的字符串组成,时间标签必须始终位于行首。
❌ 错误示例
[00:10:00][01:40:00]あいうえお
あいうえお[00:10:00]
  • 同一歌词文件中不得混用秒级时间标签和扩展时间标签。
❌ 错误示例
[00:10]あいうえお
かきくけこ[00:10:50]
  • 歌词文件中后续的时间标签所指定的时间必须始终大于其前一个时间标签。

    • 不得出现连续相同的时间标签。
    • 不得出现时间倒置。
❌ 错误示例
[00:10:00]あいうえお
かきくけこ[00:10:00]
[00:10:00]あいうえお
かきくけこ[00:09:00]


部分在行首时间标签歌词文件中不被容许的写法,在卡拉OK标签歌词文件中是被允许的。

卡拉OK标签歌词文件 (カラオケタグ付き歌詞ファイル)

  • 所有时间标签必须为扩展时间标签。

    • 在秒级时间标签下通常很难实现卡拉OK式的表现。
  • 同一行内,时间标签可以有多个,中间夹杂歌词。
  • 允许不夹杂歌词而连续书写两个时间标签。
  • 若在不夹杂歌词的情况下连续出现三个以上时间标签,则仅首尾两个时间标签有效。

示例:
[00:10:00]あいうえおかきくけこ[00:20:00][00:25:00][00:30:00]は、[00:40:00]
[00:10:00]あいうえおかきくけこ[00:20:00][00:30:00]は、[00:40:00] 效果相同。

  • 时间标签不一定要位于行首或行尾。
✅ 允许的示例
あいうえおかきくけこ[00:10:00][00:20:00]
[00:10:00]あいうえおかきくけこ[00:20:00]

实现建议 (実装のヒント)


行的先头或行的最后没有时间标签时,通过认为前一行或下一行的换行不存在,可以对时间标签进行补全。
但是,由于规格上没有规定补全方法,需要注意根据软件的不同可能会发生解释上的差异。
特别是,在文件的开头或文件的末尾没有时间标签时的补全方法,软件之间可能会有所不同。

  • 允许出现相同时间的时间标签。
✅ 允许的示例
[00:10:00]あいうえお[00:10:00]
  • 原则上不得发生时间逆转。
❌ 原则外示例
[00:10:00]あいうえおかきくけこ[00:09:00]

实现建议 (実装のヒント)


在二重唱等需要男声部和女声部同时演唱的场景下,

男声部[00:20:00]女声部[00:20:00]

可能会出现如上所述被迫导致时间标签逆转的情况。
由于这属于例外情况,请注意根据软件的不同可能无法完全反映制作意图。
如果可能的话,建议通过分割歌词文件等方式,尽可能避免发生时间逆转的情况。


文件名等 (ファイル名など)

文件名

  • 若需将歌词文件与歌曲文件隐式关联,则歌词文件的文件名(除扩展名外)必须与歌曲文件相同。
歌曲文件歌词文件
ABC.mp3
ABC.mp4
ABC.lrc
ABC.kra
ABC.txt
  • 若软件显式指定歌词文件与歌曲文件对应,则不在此限。

扩展名 (拡張子)

  • 可被识别为歌词文件的扩展名为:lrc / kra / txt
  • 其中,kra 仅限用于“带卡拉OK标签的歌词文件”。

实现建议 (実装のヒント)


当三种扩展名的文件同时存在时,读取的优先级建议设为 kra > lrc > txt。

  • kra 是带卡拉OK标签的歌词文件。
  • lrc 既可能是带卡拉OK标签的歌词文件,也可能是行首带时间标签的歌词文件。
  • txt 则存在并非歌词文件、仅仅是普通文本文件的可能性。

文件夹 (フォルダー)

  • 若希望歌词文件与歌曲文件隐式关联,则歌词文件必须与歌曲文件位于同一文件夹内。
  • 若软件显式关联,则不在此限。

实现建议 (実装のヒント)


作为软件关联歌词与歌曲的手段,可以考虑诸如指定歌词文件夹等方法。
在这种情况下,如果歌曲同级文件夹和指定文件夹中同时存在歌词文件,需要考虑哪一方优先。
此外,还可以考虑一对一指定歌词与歌曲的方法。


@ 标签的定义 (@ タグの定義)

@ 标签原则 (@ タグの原則)

用于为歌词文件添加各种信息的标签称为“@ 标签”。

  • 1 个 @ 标签由以行首字符为 @ 的单行字符串表示。
  • @ 之前有任何字符的行不视为 @ 标签。
  • 可在文件中任意位置,顺序不限。

@ 标签格式 (@ タグの書式)

格式:@标签名=内容

  • 标签名是表示标签名称的字符串。
  • 内容是表示标签名对应内容的值或字符串。
  • 标签名与内容之间必须有且仅有一个 =
  • 允许在 = 前后包含若干个半角空格。
  • @、标签名、= 必须全部为半角。
  • 标签名不区分大小写。
  • 内容为数值时:

    • 必须全部由半角数字组成。
    • 不得带有单位。
    • 内容不得为空。
  • 内容为字符串时:

    • 包含行首字符在内的整行不得超过 1024 个字符。
    • 内容允许为空。
  • 不符合上述规则的 @ 标签视为无效。
  • 在同一个歌词文件中,不允许存在多个同名的 @ 标签。

@ 标签的透明性 (@ タグの透過性)

  • 凡是行首字符为 @ 的行,都必须作为 @ 标签处理。
  • 不得将 @ 标签作为歌词内容显示。
  • 当遇到未知或不支持的标签名时,必须忽略该 @ 标签。
  • 在保存文件时,必须保留这些未知或不支持标签的原始内容。

@ 标签的透明性 (@ タグの透過性)

  • 行首为 @ 的行应全部作为 @ 标签处理。
  • 不得将 @ 标签作为歌词显示。
  • 遇到不支持的标签名时,必须予以忽略,并在保存文件时保留其原始内容。

实现建议 (実装のヒント)


当歌词中确实存在 @ 字符时,为了防止其被作为 @ 标签处理,可以考虑以下方法:

  • 将 @ 放置在行首以外的位置
  • 使用数值字符引用 &#64;
  • 使用全角 @
    等。

个别 @ 标签 (個別の @ タグ)

曲目信息 @ 标签

@ 标签名内容说明内容类型示例
@Artist艺术家/歌手名字符串@Artist=山田太郎
@Title曲名字符串@Title=故郷
@Album专辑名字符串@Album=日本の童謡 88 選
@TaggingBy制作时间标签的人员名字符串@TaggingBy=タグ人太郎
@EditedBy修正时间标签的人员名字符串@EditedBy=修正人二郎

时间标签补偿 @ 标签

@ 标签名内容说明类型示例
@Offset整体时间的偏移量。单位为毫秒(注意:非 10 毫秒)。
负值表示提前。补偿后的时刻若比时间标签的最小值还小,则作为最小值处理;若比最大值还大,则作为最大值处理。
反映到标签后应设为 @Offset=0(不得删除)。
数值@Offset=1000

背景 @ 标签

@ 标签名内容说明类型示例
@Bgfile背景文件名字符串@Bgfile=MyBackground.png
@Bgfolder背景文件夹路径字符串@Bgfolder=C:\Backgrounds

注音标签 (@ Ruby)

注音标签概要

@ 标签名内容说明类型示例
@RubyX表示注音的字符串字符串@Ruby1=為替,かわせ

格式:@RubyX=原文字,注音(省略可),开始时间(省略可),结束时间(省略可)

  • X 是从 1 开始的连号数字,例如 @Ruby1@Ruby2 等。

    • 由于同一歌词文件中不得存在多个相同的 @ 标签,因此通过编号来避免重复。
    • 连号不得在中间跳号。例如,@Ruby10 之后直接是 @Ruby12 是不被允许的。根据软件不同,可能导致 @Ruby12 无法被读取。
    • X 的上限没有规定,可以定义任意数量的注音。
  • 原文字(注音对象):指定想要标注注音的汉字或英文等。
  • 注音:指定汉字或英文等对应的读音。

    • 省略注音时:表示取消该原文字对应的注音。
    • 省略注音但仍需赋予“适用开始时刻”或“适用结束时刻”时,分隔符逗号不可省略
  • 适用开始时刻:通过时间标签指定。在此时刻之后(含此时刻)出现的原文字将被赋予注音。

    • 时间标签可以使用秒级或扩展格式。
    • 省略适用开始时刻时:默认视为 [00:00:00]
    • 省略适用开始时刻但仍需赋予“适用结束时刻”时,分隔符逗号不可省略
  • 适用结束时刻:通过时间标签指定。在此时刻之前(含此时刻)出现的原文字将被赋予注音。

    • 时间标签可以使用秒级或扩展格式。
    • 省略适用结束时刻时:默认视为 [99:59:99]
  • 修正补正:适用开始/结束时刻与歌词中附带的时间标签一样,均受 @Offset 的补正影响。
  • 字符规定:分隔符逗号必须使用半角。

实现建议 (実装のヒント)


时间标签可以使用秒级时间标签或扩展时间标签,但理所当然地必须遵守歌词文件的限制。
例如,在行首带时间标签的歌词文件中使用了扩展时间标签,若注音标签中使用秒级时间标签,则会导致时间标签格式混杂,这是不合适的。

注音标签描述示例

示例含义
@Ruby1=為替,かわせ,,[01:00:00]对从曲首到 1 分钟以前显示的“為替”,标注“かわせ”这一注音。
@Ruby2=為替,カワセ,,[01:00:00][02:00:00]对从 1 分钟以后到 2 分钟以前显示的“為替”,标注“カワセ”这一注音。
@Ruby3=為替,,[02:00:00]对从 2 分钟以后显示的“為替”,不标注注音。

通过适用开始时刻和适用结束时刻,可以应对如:1 段中将“運命”读作“うんめい”,而 2 段中将“運命”读作“さだめ”之类的歌词需求。

实现建议 (実装のヒント)

  • 在二重唱等场景下,若想在同一时刻对同一汉字标注不同的注音,建议分割歌词文件。
  • 例如,若指定了 @Offset=250,则在上述示例中,会对曲首起 1 分 00 秒 25 以前显示的“為替”标注“かわせ”注音。

注音标签内的时间标签嵌入

通过在注音中嵌入时间标签,可以指定注音的发声时机。

  • 在注音中嵌入的时间标签,视为相对于原文字发声开始时刻的相对时刻。
  • 在注音中嵌入的时间标签,必须确保不与原文字的发声结束时刻发生倒置。

示例:
@Ruby1=為替,かわせ
本日の為替レート[00:00:50][00:01:00][00:01:00][00:10:00][00:12:00][00:20:00]

  • “為替”的注音“かわせ”中的“わ”的发声开始由 [00:00:50] 指示,但这并不意味着是从曲首起算的 0 秒 50。
  • 由于原文字“為替”的发声开始显示为 [00:10:00],因此在该时刻加上 [00:00:50]
    [00:10:00] + [00:00:50] = [00:10:50](10 秒 50)
    即为“わ”的发声开始时刻。
  • 此外,由于原文字“為替”的发声开始为 [00:10:00],发声结束为 [00:12:00],因此嵌入注音的时间标签最大仅允许到 [00:02:00] 为止。

实现建议 (実装のヒント)


由于嵌入在注音标签中的时间标签是相对时刻,因此会“间接地”受到 @Offset 的补正影响。
在上述示例中,若指定了 @Offset=250,“かわせ”中的“わ”的发声开始将变为:
[00:10:25](为替受到的补正时刻) + [00:00:50](相对时刻本身不接受补正) = [00:10:75](10 秒 75:结果上受到了补正)。


软件特有的 @ 标签 (ソフトウェア独自の @ タグ)

本文档不涉及软件自主使用的 @ 标签。请参阅相关软件的帮助文档等。

示例:
@Emoji
@HeadOffset

此外,根据“@ 标签的透明性”原则,即使歌词文件中存在特有的 @ 标签,也不会产生负面影响。


对应必须项目 (対応必須項目)

在开发遵循本文档的软件时,理想情况下应对应所述的所有项目。
但是,如果需要为开发设定优先级,也可以仅对应以下所示的必须项目。

项目对应必要性
秒级时间标签✅ 必须
扩展时间标签✅ 必须
行首时间标签歌词文件✅ 必须
卡拉OK标签歌词文件任意
@ 标签的定义(原则~透明性)✅ 必须
个别 @ 标签任意

与原著的主要差异点 (原著との主な相違点)

歌词文件的字符编码

在原著中,歌词文件的字符编码原则上使用 Shift-JIS。
鉴于时代的发展,Shift-JIS 无法表现的字符增多,且目前仍在持续开发的软件大多已对应 UTF-8,且原著本身也未限制其他字符编码,因此本文档将原则定为 UTF-8。

@ 标签的字数

当 @ 标签的内容为字符串时,整行不得超过 1024 字符。在原著中,这一限制是半角 1024 字符。
在 UTF-8 中,一个字符可能占用 3 字节以上,若按半角换算会导致限制过于严苛,因此本文档规定为不分字符种类的 1024 字符。

@ 标签的透明性

原著中仅明确记载了不得将 @ 标签作为歌词显示的旨趣。
为了进一步减少软件之间的冲突,本文档增加了相关描述。

注音标签

将注音扩展规格整合进了本文档中。


废弃的 @ 标签 (廃止された @ タグ)

以下标签由于过时或意义不明,已废弃。不应在新文件中添加:
@TimeRatio, @TimeType, @SilencemSec, @Silence, @Flames, @TotalSec


备忘录 (備忘録)

行首时间标签歌词文件中的重复扩展

在行首时间标签歌词文件中,通过在行首添加多个时间标签来表现副歌等重复内容的手法,例如:
[00:15:00][00:45:00]あいうえお
这种写法在原著中因“极易导致与卡拉OK标签歌词文件混淆”而不被允许。
本文档同样不允许此类写法。

注音标签

作为注音的表现手法,曾考虑过诸如“為替(かわせ)”这样用括号括起来等多种方法。
在其中,由于以下理由最终确定了现在的形式:

  • 可以明确原文字与注音的对应范围
  • 不会对不支持的软件产生副作用(遵循 @ 标签的透明性)
  • 遵循时间标签规格的其他部分

软件示例 (ソフトウェアの例)

2015 年以后有更新的兼容软件:

  • KbMedia Player (Kobarin) - Windows
  • RhythmicaLyrics (MIZUSHIKI) - Windows
  • ニコカラメーカー (1/2/3) (SHINTA) - Windows

    • 在 ニコカラメーカー 3 的示例文件夹内有带卡拉OK标签的歌词文件(故郷.lrc)。

参考链接 (参考リンク)


主要改订履历 (主な改訂履歴)

  • 2025/09/01 初版。
  • 2025/09/03 加笔“软件特有 @ 标签”。
  • 2025/10/07 加笔“注音 @ 标签”实现建议。
最后修改:2026 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏