# @applemusic-like-lyrics/lyric 中文文档

规范地址：https://npmcn.com/package/%40applemusic-like-lyrics/lyric/

版本：1\.1\.0
npm 元数据更新时间：2026-09-19T17:00:22.723Z
中文译文更新时间：2026-11-06T11:39:59.723Z
软件包许可：AGPL-3\.0-only

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40applemusic-like-lyrics/lyric
原文对照：https://npmcn.com/package/%40applemusic-like-lyrics/lyric/?lang=original
源码仓库：https://github.com/amll-dev/applemusic-like-lyrics

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：434 kB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2023-07-27T12:47:02.607Z
- 最新版本发布：2026-09-19T17:00:22.379Z
- 近 30 天下载量：4389（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：18（近 12 个月 7 个）

## 中文简介

一个歌词解析/生成模块，着重于歌词内容解析，支持多种格式

## 安装

```sh
npm install @applemusic-like-lyrics/lyric
```

也可以使用：`pnpm add @applemusic-like-lyrics/lyric`、`yarn add @applemusic-like-lyrics/lyric`、`bun add @applemusic-like-lyrics/lyric`

## README

# AMLL 语言解析器/撰写器

英文/英文 [简体中文](https://npmcn.com/package/%40applemusic-like-lyrics/lyric/README-CN.md)

这是原歌词包的重构版本. 文档尚未完成 .

下面是原始文件。 另见: [AMLL 文档](https://amll.dev/en/reference/lyric.html)。 。 。 .

* * *

> 警告: 这是一个个人项目,仍在开发中。 可能还有许多问题,所以请不要在生产环境中直接使用!

![AMLL-Lyric](https://img.shields.io/badge/Lyric-%23FB8C84?label=Apple%20Music-like%20Lyrics&labelColor=%23FB5C74) [![npm](https://img.shields.io/npm/dt/%40applemusic-like-lyrics/lyric)](https://www.npmjs.com/package/@applemusic-like-lyrics/lyric) [![npm](https://img.shields.io/npm/v/%40applemusic-like-lyrics%2Flyric)](https://www.npmjs.com/package/@applemusic-like-lyrics/lyric)

一个用于AMLL的活字解析/生成模块,完全用TypeScript来写.

由于这个模块只关注词性内容,因此它抛弃了与歌词无关的所有信息. 如果您需要从词典文件中获取详细的信息(如艺术家),请考虑使用其他框架.

### 解析和生成支持

| 格式 | 通用扩展 | 解析 | 生成 |
| --- | --- | --- | --- |
| **LyRiC (英语)** | `.lrc` | ✅ | ✅ |
| **LRC A2 数据** (增强LRC) | `.lrc` | ✅ | ✅ |
| **ESLyric逐字歌词** | `.lrc` | ✅ | ✅ |
| **盐玩家歌词 (SPL)** | `.spl` | ✅ | ✅ |
| **网易逐字歌词** | `.yrc` | ✅ | ✅ |
| **QQ音乐逐字歌词** | `.qrc` | ✅ | ✅ |
| **拼写可操作** | `.lys` | ✅ | ✅ |
| **拼写行** | `.lyl` | ✅ | ✅ |
| **拼写快速导出** | `.lqe` | ✅ | ✅ |
| **TTML 语言** | `.ttml` | ✅ | ✅ |
| **支助** | `.ass` | ❌ | ✅ |

* * *

### 格式化能力支持

每种格式都有不同的语法规则,因此它所支持的语法能力,如词级计时,翻译,和声段信息,也不同:

| 格式 | 时间颗粒性 | 翻译/转写 | 二重唱 | 背景声 | 元数据 |
| --- | --- | --- | --- | --- | --- |
| **LyRiC (英语:`.lrc`(中文(简体) )** | 行级 | XQ 以附加词行写入 | ❌ | QQ 文本包入 `()` | ❌ |
| **LRC A2( 微分数)`.lrc`(中文(简体) )** | 词层 | XQ 以附加词行写入 | ❌ | QQ 文本包入 `()` | ❌ |
| **ESLyric (英语:`.lrc`(中文(简体) )** | 词层 | XQ 以附加词行写入 | ❌ | QQ 文本包入 `()` | ❌ |
| **SPL (英语:`.spl`(中文(简体) )** | 词层 | XQ 以附加词行写入 | ❌ | QQ 文本包入 `()` | ✅ |
| **净值`.yrc`(中文(简体) )** | 字符级别 | ❌ | ❌ | QQ 文本包入 `()` | ❌ |
| **QQ音乐(`.qrc`(中文(简体) )** | 字符级别 | ❌ | ❌ | QQ 文本包入 `()` | ❌ |
| **可拼写符号( C)`.lys`(中文(简体) )** | 词层 | ❌ | ✅ | ✅ | ❌ |
| **拼写行( R)`.lyl`(中文(简体) )** | 行级 | ❌ | ❌ | QQ 文本包入 `()` | ❌ |
| **拼写快速导出( L)`.lqe`(中文(简体) )** | 词层 | ✅ | ✅ | ✅ | ❌ |
| **TTML (英语:`.ttml`(中文(简体) )** | 词层 | ✅ | ✅ | ✅ | ✅ |
| **支助`.ass`(中文(简体) )** | 词层 | ❌ | ❌ | QQ 文本包入 `()` | ❌ |

* * *

### 转换和退化规则

在通过AMLL的内部结构在格式之间转换时,当目标格式缺乏源格式提供的能力时,适用下列降解规则: 1

1.  **文字时间退化**: 当目标格式只支持行级歌词, 如 LyRiC `.lrc` 线条 `.lyl`,字级时间戳被剥去,一行上的所有字被合并为一行.
2.  **翻译和转写退化**数字 :
    -   在导出为 LRC-家族格式(LyRiC,LRC A2,ESLyric,或SPL)时,会将翻译和转写作为附加的有主行时间戳的活字行被插入.
    -   在导出到除TTML(YRC,QRC,LYS,或LYL)以外的词级格式时,会丢弃翻译和转写.
3.  **背景声**:当目标格式没有原生背景-vocal标记时,背景相声会用括号环绕词尾写出: `(...)`。 。 。 .
4.  **二重奏属性**:只有LYS,LQE和TTML保存二重奏信息. 它在导出到其他格式时丢失 .
5.  **元数据**: 要保存向 SPL 导出时的元数据, 将包含元数据的完整剖析结果传递给 `stringifySPL`元数据为 `[key:value]` 标记行,当再次解析时,键会转换为小写。 TTML和SPL以外的格式不支持元数据.
6.  **时间戳精度损失**: ASS卡拉OK效果使用百分秒(1克),因此从以毫秒为基础的格式导出到ASS的回合时间戳并可能损失高达10毫秒的精度.

## 使用核心语言元件

当它们一起使用时,注意 **两者的词条结构并不完全相同**。您需要以如下例子(使用LyRiC作为示例)的方式转换它们,以便正确解析:

```typescript
import { parseLrc } from "@applemusic-like-lyrics/lyric";
const lines = parseLrc("[00:00.00]test");
const converted = lines.map((line, i, lines) => ({
    words: [
        {
            word: line.words[0]?.word ?? "",
            startTime: line.words[0]?.startTime ?? 0,
            endTime: lines[i + 1]?.words?.[0]?.startTime ?? Infinity,
        },
    ],
    startTime: line.words[0]?.startTime ?? 0,
    endTime: lines[i + 1]?.words?.[0]?.startTime ?? Infinity,
    translatedLyric: "",
    romanLyric: "",
    isBG: false,
    isDuet: false,
}));
// Now you can pass converted to LyricPlayer
```

建议使用TypeScript,因为这样可以更容易地检测出错误.

## 大楼

```shell
wasm-pack build --target bundler --release --scope applemusic-like-lyrics
```

## 常见问题

### @applemusic-like-lyrics/lyric 是什么？

一个歌词解析/生成模块，着重于歌词内容解析，支持多种格式

### 如何安装 @applemusic-like-lyrics/lyric？

在项目目录运行 npm install @applemusic-like-lyrics/lyric，或使用 pnpm add / yarn add / bun add。

### @applemusic-like-lyrics/lyric 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @applemusic-like-lyrics/lyric 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @applemusic-like-lyrics/lyric 可以商用吗？

@applemusic-like-lyrics/lyric 使用 AGPL-3\.0-only 许可。最严格的 Copyleft：除分发外，通过网络向用户提供基于它的服务也需要开源对应源码。闭源 SaaS 使用前务必评估。以上为概括，不构成法律意见，请以许可原文为准。

### @applemusic-like-lyrics/lyric 的下载量有多少？

根据 npm 官方下载统计，@applemusic-like-lyrics/lyric 在 2026/10/07 – 2026/11/05 这 30 天内被下载 4,389 次，日均约 146 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @applemusic-like-lyrics/lyric 还在维护吗？

最新版本 1\.1\.0 发布于 2026/09/20（1 个月前）；至今共发布 18 个版本，其中过去 12 个月发布了 7 个；首次发布于 2023/07/27。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

