# yuukilyrics

> YuukiLyrics是兼容RhythmicaLyrics的移动端打轴软件。

开源仓库：[https://github.com/asuharayuuki/yuukilyrics](https://github.com/asuharayuuki/yuukilyrics)

安卓下载：[yuukilyric-1.2.0-android-arm64.apk](https://proxy.z46.icu/https://github.com/asuharayuuki/yuukilyrics/releases/download/v1.2.0/yuukilyric-1.2.0-android-arm64.apk)

Windows下载：[yuukilyrics-1.2.0-windows-x64.7z](https://proxy.z46.icu/https://github.com/asuharayuuki/yuukilyrics/releases/download/v1.2.0/yuukilyrics-1.2.0-windows-x64.7z)

应用程序未实现数据库，不支持保存配色方案，不支持保存工程。

应用程序不支持下载视频或歌词文件的功能。

使用蓝牙耳机时，将不可避免地产生全局时间偏移。

如需下载视频，请使用 [Seal, Video/Audio Downloader for Android](https://github.com/junkfood02/Seal)。请在应用程序中点击设置>常规>更新 yt-dlp来确保下载视频时不会出现错误。

如需下载歌词，请使用支持插件或JS脚本的浏览器，然后自行导入解除复制限制的脚本或插件。

## 其他局限性

- 打轴：假名自动标注结果与RL不同（可以先用RL注音后导入编辑模式的文本）
- 打轴：Ruby连结的实现与RL不同（2.4）
- 打轴：不支持对Tag Check方式进行自定义（2.4）
- 打轴：不支持自定义注音字典
- 打轴：不支持批量替换注音
- 打轴：不支持局部调整时间轴
- 打轴：不支持任何快捷键
- 导出：不支持同时使用多个歌词文件
- 导出：不支持直接导出ニコカラメーカー兼容的歌词文件
- 导出：导出ASS字幕方式与ニコカラメーカー不兼容
- 配色：混合配色仅支持渐变色，不支持混合2种以上的配色
- 配色：不支持ニコカラメーカー的縁取り２色
- 文字：文字飾りの種類仅支持ブラー
- 文字：使用时，受移动平台局限性，自定义字体时不支持导入字体文件
- 文字：仅支持设置多种配色样式，不支持同时使用不同字体和字体大小
- 画面：仅支持自动下寄せ2行、下寄せ3行、下寄せ4行，不支持自定义
- 画面：不支持设置标题

## 快速开始

最佳实践方案是，~~使用RL标注，然后将标好的歌词以及视频发到QQ上，手机下载以后，出门打轴，打完了发回QQ，到家回电脑上打开RL然后导出。~~ 只用这个软件来做样式。

### 1.1 打开媒体与歌词

1. 在“时间Tag编辑”页面点击右上角的文件<img src="img/01.png" alt="01" style="zoom:50%;" />图标。

1. 选择“打开媒体文件”<img src="img/02.png" alt="02" style="zoom:50%;" />，载入要打轴的音频或视频。
2. 点击右上角的“切换文本编辑模式”<img src="img/03.png" alt="03" style="zoom:50%;" />，直接粘贴或输入歌词；空行可用于分段。
3. 文本编辑模式下支持直接从RL编辑模式导入文本<img src="img/04.png" alt="04" style="zoom:50%;" />。

媒体载入后，顶部会显示波形和当前时间。左右拖动波形可以定位，双指缩放或触控板缩放可以调整时间轴精度。

### 1.2 整理注音与检查点

打轴按钮只会处理已经存在的检查点。初次导入纯文本后，可以采用以下任一方式准备检查点：

- 点击工具栏的“自动添加注音与检查点”<img src="img/05.png" alt="05" style="zoom:50%;" />，自动为日语歌词获取读音并生成检查点。此功能需要联网，歌词文本会发送到云端处理。或者可以在RL注音后，将编辑模式的歌词直接粘贴到文本编辑框中。
- 在可视化歌词编辑器中选中字符，使用“添加检查点”或“删除检查点”<img src="img/06.png" alt="06" style="zoom:50%;" />调整Tag数量。
- 选中汉字或注音单元后，在工具栏下方出现的注音输入框中手动修改读音。
- 使用“与下一个字符合并”和“拆分字符”整理一个读音跨多个汉字、或需要拆开的情况。
- 使用“添加/删除抬键检查点”决定该单元是否记录松开按键的结束时间（RL中的[10]标签）。

### 1.3 开始打轴

1. 点击工具栏的“开始打标签”<img src="img/07.png" alt="07" style="zoom:50%;" />。光标会从第一个检查点开始。
2. 点击工具栏的“播放”<img src="img/08.png" alt="08" style="zoom:50%;" />。
3. 点击Tag，下一个从这里开始打。
4. 长按Tag，将时间轴定位到当前字的时间。
5. 每当当前字符开始演唱时，按下底部的 `Ciallo～(∠・ω< )⌒★` 大按钮：
   - 按下时记录当前Tag的开始时间。
   - 如果该单元已有行尾Tag（RL中的[10]标签），松开时记录结束时间。
   - 松开后自动前进到下一个Tag。
6. 打完最后一个检查点后，打轴状态会自动结束；也可以随时点击“结束打标签”。

打轴时可以将播放速度<img src="img/09.png" alt="09" style="zoom:50%;" />降到 `0.2×`—`1.0×`。默认按照RL设置偏移-230ms，使用“时间Tag输入偏移”<img src="img/10.png" alt="10" style="zoom:50%;" />补偿操作延迟。

### 1.4 检查并导出

打轴完成后拖动波形回放，观察歌词高亮是否与演唱一致。需要局部修正时，进入打Tag状态后点击目标检查点重新录入。

- 导出带时间Tag的歌词：右上角文件<img src="img/01.png" alt="01" style="zoom:50%;" />图标 → “导出带时间标签的歌词”<img src="img/11.png" alt="11" style="zoom:50%;" />。内容采用扩展 LRC 时间Tag格式，可直接粘贴到RL。默认保存为 `.txt`。
- 导出 ASS：打开左上角菜单<img src="img/12.png" alt="12" style="zoom:50%;" /> → “ASS 导出”<img src="img/13.png" alt="13" style="zoom:50%;" />，设置样式后点击右上角下载图标<img src="img/14.png" alt="14" style="zoom:50%;" /> → “导出 ASS 字幕”<img src="img/15.png" alt="15" style="zoom:50%;" />。
- 导出带字幕视频：必须先载入视频；在同一导出菜单中选择“导出带字幕视频”<img src="img/16.png" alt="16" style="zoom:50%;" />。音频文件不能使用此选项。

Android 和 iOS 会提供“分享”或“保存到设备”；桌面端会弹出保存位置选择器。

## 打轴界面

### 2.1 页面组成

<img src="img/17.png" alt="17" style="zoom:50%;" />

从上到下依次是：

1. 波形时间轴：显示播放位置，支持拖动定位和缩放。
2. 歌词编辑区：可视化显示字符、注音、检查点和活动光标。
3. 工具栏：播放、编辑检查点、自动注音、偏移和速度等功能。
4. 主打轴按钮：在打轴状态下记录当前Tag时间。

右上角两个按钮分别是“文件”和“切换文本编辑模式”。文本编辑模式适合粘贴歌词或直接检查扩展 LRC 内容；可视化模式适合选择字符和整理检查点。

### 2.2 工具栏功能

桌面端把鼠标停在图标上、移动端长按图标，可以查看对应的中文提示。

| 功能 | 用途 |
| --- | --- |
| 播放/暂停 | 控制当前媒体播放。 |
| 开始打标签/结束打标签 | 开启或退出连续打轴状态。 |
| 添加检查点 | 在当前选中字符或注音单元增加可打轴位置。 |
| 删除检查点 | 删除当前选中位置关联的Tag。 |
| 与下一个字符合并 | 将当前单元与后一个单元合并，适合连读或多字读音。 |
| 拆分字符 | 把已合并的单元重新拆开。 |
| 添加/删除抬键检查点 | 为当前单元增加或移除结束时间标记。 |
| 自动添加注音与检查点 | 联网获取日语读音，并自动生成适合打轴的结构。 |
| 时间标签输入偏移 | 对按下和松开时写入的时间统一补偿，范围为 `-500 ms`—`+100 ms`。 |
| 批量调整时间标签 | 以当前播放位置为基准移动时间轴，确认后将同一偏移应用到全部时间标签。 |
| 播放速度 | 将打轴播放速度设置为 `0.2×`—`1.0×`。 |
| 震动开关 | 控制打轴时是否震动 |

### 2.3 批量移动整首歌词

当整首歌词都固定偏早或偏晚时：

1. 把播放位置停在一个容易识别的基准点。
2. 点击“批量调整时间标签”。工具会记录原基准，波形变为橙色。
3. 拖动波形，把基准点移动到正确的新位置。
4. 点击工具栏中变为对勾的“确认批量调整”。

例如，长按歌词的首句第一个字，再移动波形图，使其正好从该字开始播放，即可确认。确认后，所有开始时间和抬键结束时间都会移动相同的毫秒数。

### 2.4 自动注音说明

自动注音按照下面的逻辑进行注音。同时，完整字块在注音时不会删除正文中已经存在的假名。例如<img src="img/18.png" alt="18" style="zoom:50%;" />。

<img src="img/19.png" alt="19" style="zoom:50%;" />

### 2.5 RL编辑模式兼容性说明

文本编辑模式与RL在以下配置时编辑模式的LRC扩展格式兼容。

<img src="img/20.png" alt="20" style="zoom:50%;" />

## ASS 导出与样式自定义（实验性功能）

导出样式预览（非默认配色和样式）：

<img src="img/28.png" alt="28" style="zoom:50%;" />

从左上角导航菜单进入“ASS 导出”。页面分为“配色”“文字”“画面”三部分。右上角的播放按钮用于预览，下载按钮用于选择导出类型。

预览需要同时载入媒体和歌词。预览画面中，双击左半边或右半边可后退或前进 5 秒；长按画面会临时以 2 倍速播放。右上角出现“警告与错误”时，可以打开查看字体或字幕渲染信息。

<img src="img/21.png" alt="21" style="zoom:50%;" />

### 3.1 配色

<img src="img/22.png" alt="22" style="zoom:50%;" />

“默认配色”用于没有匹配到歌手前缀的歌词。每套配色包含六项：

- 已演唱：文字颜色、描边颜色、装饰颜色。
- 未演唱：文字颜色、描边颜色、装饰颜色。

<img src="img/23.png" alt="23" style="zoom:50%;" />

每项都可以选择纯色或上下渐变。渐变的“上方（0%）”是字形顶部，“下方（100%）”是字形底部。内置预设不支持自定义；选中预设后仍可单独修改任意颜色。

<img src="img/24.png" alt="24" style="zoom:50%;" />

点击“添加歌手”可增加一条歌手专用配色。卡片中的“行首字符”就是匹配前缀；歌词行以该文字开头时，会切换到对应配色。匹配时优先使用较长的前缀。仅在该行以该文字开头时，才会套用配色方案。若该行开头未成功匹配列表中的文字，则继承上行配色，首行时使用默认配色。

### 3.2 批量导入歌手配色

点击“导入”，每行填写歌手名和六种颜色，共七列。可以使用 Tab 分隔，也支持 `|`。可以直接导入 Markdown 表格。纯色格式为 `#RRGGBB`，渐变格式为 `#上方颜色/#下方颜色`。

|              | 已唱高亮色      | 已唱边缘色 | 已唱飾り | 未唱高亮色 | 未唱边缘色      | 未唱飾り        |
| ------------ | --------------- | ---------- | -------- | ---------- | --------------- | --------------- |
| 青配色       | #0000af         | #ffffff    | #e1e196  | #e1e1ff    | #000000         | #96bfff         |
| 標準配色     | #eb0000         | #ffffff    | #e1e196  | #ffebeb    | #030303         | #e19696         |
| コーラス配色 | #ff9b00         | #ffffff    | #ffe19b  | #ffffff    | #3c2300         | #ffe19b         |
| 青配色2      | #0000af         | #ffffff    | #969664  | #e1e1ff    | #00009c         | #555580         |
| 紫           | #7732fe         | #ffffff    | #969664  | #e1e1ff    | #451d94         | #694a94         |
| 青紫混       | #0000af/#7732fe | #ffffff    | #969664  | #ffffff    | #00009c/#451d94 | #555580/#694a94 |
| CIEL         | #0c46bc         | #ffffff    | #e1e196  | #e1e1ff    | #0c46bc         | #9696e1         |
| Sooda        | #214f7b         | #ffffff    | #e1e196  | #ebebff    | #214f7b         | #a8daf5         |
| 空爽         | #0c46bc/#214f7b | #ffffff    | #e1e196  | #ffffff    | #0c46bc/#214f7b | #9696e1/#a8daf5 |
| ラケナリア   | #0572a4/#052951 | #ffffff    | #e1e196  | #dcf0fc    | #43464a         | #e19696         |

Markdown 表格示例如下：

```
|                | 已唱高亮色      | 已唱边缘色 | 已唱飾り | 未唱高亮色 | 未唱边缘色      | 未唱飾り        |
| -------------- | --------------- | ---------- | -------- | ---------- | --------------- | --------------- |
| 一歌           | #41B0EF         | #ffffff    | #e1e196  | #ffffff    | #41B0EF         | #33a6ee         |
| ミク           | #47d1c2         | #ffffff    | #e1e196  | #ffffff    | #47d1c2         | #1dbecd         |
| 咲希           | #f8de49         | #ffffff    | #e1e196  | #ffffff    | #f8de49         | #f2b40c         |
| 穂波           | #ee6666         | #ffffff    | #e1e196  | #ffffff    | #ee6666         | #ed6b79         |
| 志歩           | #c2e038         | #ffffff    | #e1e196  | #ffffff    | #c2e038         | #a5bf30         |
| ミク/穂波      | #47d1c2/#ee6666 | #ffffff    | #e1e196  | #ffffff    | #47d1c2/#ee6666 | #1dbecd/#ed6b79 |
| 一歌/穂波      | #41B0EF/#ee6666 | #ffffff    | #e1e196  | #ffffff    | #41B0EF/#ee6666 | #33a6ee/#ed6b79 |
| ミク/咲希      | #47d1c2/#f8de49 | #ffffff    | #e1e196  | #ffffff    | #47d1c2/#f8de49 | #1dbecd/#f2b40c |
| ミク/志歩      | #47d1c2/#c2e038 | #ffffff    | #e1e196  | #ffffff    | #47d1c2/#c2e038 | #1dbecd/#a5bf30 |
| ミク/一歌      | #47d1c2/#41B0EF | #ffffff    | #e1e196  | #ffffff    | #47d1c2/#41B0EF | #1dbecd/#33a6ee |
| 一歌/志歩      | #41B0EF/#c2e038 | #ffffff    | #e1e196  | #ffffff    | #41B0EF/#c2e038 | #33a6ee/#a5bf30 |
| ミク/一歌/穂波 | #073290         | #ffffff    | #e1e196  | #e1e1ff    | #073290         | #96bfff         |
```

标题行可以省略。同名数据以文本中后出现的行为准；导入前会显示有效行、歌手数量、覆盖和跳过情况。

### 3.3 文字

<img src="img/25.png" alt="25" style="zoom:50%;" />

| 设置 | 说明 |
| --- | --- |
| 字体 | 默认使用内置字体（kusogi Maru）；也可选择 `.ttf`、`.otf` 或 `.ttc` 字体文件。 |
| 字体样式 | 多字体样式文件可在这里选择具体字重或字面。 |
| 粗体 | 控制 ASS 主样式是否使用粗体。 |
| 文字样式 | 打开详细预览和尺寸设置。 |
| 模糊 | 设置 0—2 级边缘模糊浓度。参考ニコカラメーカー３相同实现。 |

“文字样式”对话框可以调整：字体大小、字符间距、装饰宽度、文字描边宽度、注音大小、注音描边宽度、注音与正文间距、行间距、字幕与画面底部间距、歌手图标大小、歌词与图标间距。

<img src="img/26.png" alt="26" style="zoom:50%;" />

标为“自动”的项目会随主字体大小按比例计算。人物图标只控制这个对话框内的歌手图标示例是否显示，不是最终导出的总开关。最终渲染是否显示歌手图标，由“歌词行首前缀 + 歌手配色条目 + 素材库图片”三者是否成功匹配决定。

### 3.4 画面

- 字幕分辨率：与实际导出视频的分辨率无关。分辨率越高，ASS渲染越精细。字幕分辨率可以远大于视频分辨率。实际以 16:9 计算宽度，可选择 720、1080、1440、2160 高度，也可输入其他高度。载入视频后可恢复按源视频计算的基准高度。
- 字幕布局（参考ニコカラメーカー３相同实现）：
  - “两行交替显示（左上/右下）”适合连续卡拉 OK 歌词。
  - “按空行分段”按歌词中的空行组织段落，适合预先排好段落的歌词。
- 左右余白：控制字幕排版区域与画面左右边缘的距离。
- 间奏倒计时：当两段歌词的空档超过设定秒数时显示间奏提示。
- 显示行首字符：默认关闭，匹配歌手所用的前缀会从字幕中移除；开启后保留该前缀。

## 歌手图标、配色与歌词联动（实验性功能）

歌手图标不是手动逐行选择，而是通过“素材库中的歌手名”“ASS 配色中的行首字符”和“歌词行开头”三者联动。

<img src="img/27.png" alt="27" style="zoom:50%;" />

### 4.1 添加歌手图标

1. 从左上角菜单进入“素材库”。
2. 点击“添加图片”，选择 PNG、JPG、JPEG 或 WebP。
3. 输入歌手名并确认。建议图片使用透明背景、主体居中，并让不同歌手的画布比例保持一致。
4. 素材库中可以修改歌手名、替换图片、删除图片或刷新目录。

应用会把素材保存到系统应用文档目录下的 `yuukilyrics/singer_avatars`。同一歌手只能保留一个图片文件；文件名比较不区分大小写，出现同名冲突时，该歌手图标不会正常加入导出，需要先整理冲突文件再刷新。

### 4.2 单人歌词联动

假设素材库中的歌手名为“ミク”：

1. 在“ASS 导出”→“配色”中添加歌手，行首字符填写 `ミク`。
2. 在该歌手第一次演唱的歌词行开头写上同样的前缀：

```text
ミク第一句歌词
第二句仍由ミク演唱
第三句仍由ミク演唱
```

导出器在第一行识别到 `ミク` 后，会使用“ミク”的配色和图标；后续没有新歌手前缀的行会沿用当前歌手。默认关闭“显示行首字符”时，第一行开头的 `ミク` 不会出现在成品字幕中。

建议前缀与素材库歌手名使用完全相同的文字和大小写。前缀中的空格或标点也是匹配内容的一部分，写法不一致会导致图标无法对应。

### 4.3 合唱与多人图标

合唱行可以使用 `/` 组合歌手名。例如素材库中分别存在“ミク”和“一歌”：

1. 在歌手配色中添加一条行首字符为 `ミク/一歌` 的合唱配色。
2. 歌词写成：

```text
ミク/一歌合唱部分
```

该行会使用 `ミク/一歌` 这一整条配色，并同时显示“ミク”和“一歌”的图标，歌词内容为“合唱部分”。多个图标之间的横向距离由排版自动计算；“歌词与图标间距”控制图标行与歌词的纵向距离。

---

