-
Notifications
You must be signed in to change notification settings - Fork 1
Supported Formats
ChouChiu edited this page Sep 23, 2026
·
3 revisions
| 格式 | 类型枚举 | 同步粒度 | 特征与载荷 |
|---|---|---|---|
| LRC | LyricsRawTypes::Lrc |
行级 | 纯文本,[mm:ss.xx] 时间标签与标准元数据标签 |
| QRC | LyricsRawTypes::Qrc |
逐字 | 纯文本,行头 [开始ms,时长ms],行内 文本(开始ms,时长ms)
|
| QRC XML | LyricsRawTypes::QrcFull |
信封 | XML 信封(<QrcInfos>),需先取出 LyricContent 属性方可解析 |
| KRC | LyricsRawTypes::Krc |
逐字 | 加密二进制,需 decrypt_krc 解密为纯文本后再解析 |
| YRC | LyricsRawTypes::Yrc |
逐字 | 纯文本,行头 [开始ms,时长ms],音节 (开始ms,时长ms,0)文本
|
| YRC JSON | LyricsRawTypes::YrcFull |
信封 | 网易云接口返回的 JSON 信封({"yrc":...}),需取出歌词字符串 |
| TTML | LyricsRawTypes::Ttml |
行级/逐字 | W3C XML 格式,Apple Music 及 AMLL TTML DB 使用 |
| Apple Music JSON | LyricsRawTypes::AppleJson |
信封 | Apple Music API 返回的 JSON 信封,需取出内嵌的 TTML 文本 |
| Spotify JSON | LyricsRawTypes::Spotify |
行级/逐字 | Spotify Color Lyrics 接口返回的 JSON 载荷 |
| Musixmatch JSON | LyricsRawTypes::Musixmatch |
行级/逐字 | Musixmatch 接口返回的 JSON 载荷(含 richsync 逐字) |
| Lyricify Syllable | LyricsRawTypes::LyricifySyllable |
逐字 | 纯文本,行头含对齐与分边标记(如 [4]、[7]) |
| Lyricify Lines | LyricsRawTypes::LyricifyLines |
行级 | 纯文本,行头含首尾时间戳 [开始ms,结束ms]
|
Note
三个信封格式(QrcFull、YrcFull、AppleJson)只能被 get_lyrics_types() 检测识别,parse() 对它们返回 None。必须先从外层结构中提取出歌词正文文本再进行解析。
| 格式 | 类型枚举 | 必需数据 | 说明 |
|---|---|---|---|
| LRC | LyricsTypes::Lrc |
行开始时间 | 任何同步类型均可降级导出;逐字数据会丢失音节时间 |
| QRC | LyricsTypes::Qrc |
音节级数据 | 输出 QQ 音乐逐字格式;行时长取自 LineInfo 的首尾时间 |
| KRC | LyricsTypes::Krc |
音节级数据 | 输出未加密的酷狗逐字文本 |
| YRC | LyricsTypes::Yrc |
音节级数据 | 输出网易云逐字格式,行时长取自 LineInfo 的首尾时间 |
| Lyricify Syllable | LyricsTypes::LyricifySyllable |
音节级数据 | 输出 Lyricify 逐音节文本,保留主行与子行对齐码 |
| Lyricify Lines | LyricsTypes::LyricifyLines |
行开始与结束时间 | 要求行必须同时具备开始时间和结束时间 |
行级同步格式,每行仅记录该行的开始时间。
[ti:Song Title]
[ar:Artist Name]
[al:Album Name]
[00:12.00]Hello World
[00:15.50]Second line
- 同步粒度:
LineSynced - 支持标准头部标签:
[ti:]、[ar:]、[al:]、[by:]、[offset:]等 - 时间格式:
[mm:ss.xx]或[mm:ss.xxx]
QQ 音乐逐字歌词格式。行头给出整行的绝对开始时间与持续时长,行内每个音节紧跟其绝对开始时间与持续时长。
[0,4390]Stop(0,274) (274,274)And(548,274) (822,274)Stare(1096,274)
[4390,4390]Lyrics(4390,190) (4580,190)by(4770,190)
- 同步粒度:
SyllableSynced - 行头语法:
[行开始时间ms,行持续时长ms] - 音节语法:
文本(开始时间ms,持续时长ms)(绝对毫秒时间轴,非相对偏移) - 行头的持续时长被记录为
LineInfo自身的结束时间,与最后一个音节的结束时间相互独立。末个音节唱完并不代表整行消失。 - 若括号内不是合法的
数字,数字,解析器会将其作为正文文本处理,并归入紧随其后的音节。 - 从 QQ 音乐网络接口直接获取的内容为十六进制密文,需经
decrypt_qrc()解密后才可解析。
酷狗音乐逐字格式,原始文件为二进制加密格式。
- 同步粒度:
SyllableSynced - 行头语法:
[行开始ms,行持续时长ms] - 音节语法:
<相对行首的开始ms,时长ms,0>文本 - 行头时长记录为行自身的结束时间;若行头缺失时长,则回退到末个音节的结束时间。
- 原始文件解密流程:Base64 解码 → 跳过前 4 字节魔数头(
krc1)→ 与固定 16 字节密钥逐字节循环异或 → zlib 解压 → 去除正文开头的 UTF-8 BOM(若存在)→ UTF-8 解码。
网易云音乐逐字格式,允许在正文中混排 JSON 元数据行。
{"t":0,"c":[{"tx":"作词: "},{"tx":"Ryan Tedder"}]}
[420,4440](420,1320,0)Lately(1740,0,0), (1740,570,0)I've (2310,600,0)been
- 同步粒度:
SyllableSynced - 开头的
{"t":...}为元数据行,不会作为歌词行放入lines - 逐字行语法:
[行开始ms,行时长ms](音节开始ms,音节时长ms,0)文本...(绝对毫秒)
W3C Timed Text Markup Language,基于 XML,Apple Music 与社区歌词库 AMLL TTML DB 均采用此格式。
- 同步粒度:
SyllableSynced或LineSynced - 使用
<p>表示歌词行,<span>表示音节 - 翻译与注音支持:
- Apple Music 风格:位于
<head>下的<itunes:translation> - AMLL 行内风格:
<p>内部的<span ttm:role="x-translation" xml:lang="...">解析为该行的翻译;<span ttm:role="x-roman">解析为注音(pronunciation);若位于ttm:role="x-bg"内则解析为背景和声子行的翻译或注音。两处均有翻译时,<head>优先。
- Apple Music 风格:位于
Lyricify 专用的逐字格式,行头包含对唱分边及对齐控制码。
[4]Hate (14872,393)to (15265,190)give (15455,262)
[7](How (93600,114)do (93714,208)you (93922,176)lie,
- 同步粒度:
SyllableSynced - 行语法:
[对齐码]文本(开始ms,时长ms)...(绝对毫秒) - 对齐码:
3= 未指定,4= 左对齐,5= 右对齐;子行(背景和声)对齐码在主行基础上偏移 +3(例如主行[4]对应子行[7])
Lyricify 专用的逐行格式,每行必须记录明确的起止时间。
[0,1000]Hello World
[1000,2500]Second line
- 同步粒度:
LineSynced - 行语法:
[开始ms,结束ms]文本
实测转换矩阵(- 表示 generate_string 返回 None):
| 输入 \ 目标输出 | LRC | QRC | KRC | YRC | Lyricify Syllable | Lyricify Lines |
|---|---|---|---|---|---|---|
| LRC(行级,无结束时间) | ✓ | - | - | - | - | - |
| Lyricify Lines(行级,有结束时间) | ✓ | - | - | - | - | ✓ |
| Spotify 逐行 | ✓ | - | - | - | - | - |
| QRC | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| KRC | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| YRC | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| TTML(逐字) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Spotify(逐字) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Musixmatch(richsync 逐字) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Lyricify Syllable | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
转换规则:
- QRC / KRC / YRC / Lyricify Syllable 生成器只输出音节级歌词行;若输入缺少音节数据,生成结果为空,函数返回
None。 - Lyricify Lines 要求每行必须同时具备开始与结束时间;标准 LRC 只有行开始时间,因此 LRC 无法转换为 Lyricify Lines。
- LRC 生成器只需要开始时间,任何输入格式均可降级导出为 LRC。