很多双语 .lrc 会把“上一句翻译”和“下一句原文”写在同一个时间戳上,例如:
[00:07.50]Moon's up high, shining wide.
[00:09.05]明月光,夜夜亮
[00:09.05]Counting sheep on my bed.
[00:11.68]让我来看看:有谁睡得不香?
部分播放器会因为连续相同时间戳而解析报错或显示错乱。
本工具用于自动修复这种问题:
- 修改模式:检测到连续相同时间戳时,将第一条时间戳减去
0.01s(10ms),让它们不再“抢同一个座位” - 还原模式:自动识别这种
-0.01s的修复痕迹并恢复为原来的相同时间戳 - 支持输入单个
.lrc文件或目录(仅扫描.lrc,可递归)
- ✅ 修复 连续相同时间戳(常见于“原文/翻译交错”的双语 LRC)
- ✅ 只动时间戳,不碰歌词内容
- ✅ 防重复:已修复过(形如
前一行 = 后一行 -0.01s)会自动跳过,避免越改越离谱 - ✅ 支持批量:输入目录扫描
.lrc(可递归) - ✅ 支持还原:可恢复到修复前的相同时间戳布局
- ✅ 自动备份:对发生改动的文件生成
.bak(默认开启)
只需要 Python 3.8+(建议 3.10+)
git clone <your-repo-url>
cd <repo-folder>
python lrc_timestamp_fixer.py没有第三方依赖,不需要
pip install。
运行脚本后会提示:
- 选择模式
1修改:连续相同时间戳 → 第一条减去 0.01s2还原:检测到 -0.01s 修复形式 → 恢复相同时间戳
- 输入路径
- 可以是单个
.lrc文件 - 也可以是目录(仅扫描
.lrc)
输入:
[00:01.01]
[00:01.01]
输出:
[00:01.00]
[00:01.01]
输入:
[00:01.00]
[00:01.01]
输出:
[00:01.01]
[00:01.01]
-
扫描每行的第一枚时间戳
-
当发现第
i行与第i+1行时间戳相同:- 若不是“已修复”的形态(
i + 0.01s == i+1) - 则将第
i行时间戳减去0.01s
- 若不是“已修复”的形态(
-
还原模式做相反操作:检测到
i + 0.01s == i+1时将i恢复为i+1
默认只处理带小数的时间戳(例如
[00:01.01])。 元信息标签行如[ar:xxx]、[ti:xxx]会被跳过。
首次运行会在脚本同目录生成 lrc_timestamp_fixer_config.json,可直接修改:
TICK_MS:默认10(即 10ms / 0.01s)MAKE_BACKUP:是否生成.bak备份RECURSIVE:目录扫描是否递归
- 如果你遇到“同一时间戳三连/四连”,目前策略是只对每组里的第一个做偏移 (这是为了尽量少改动,避免引入新的显示问题)
- 如果你希望改成“每条都错开 0.01 / 0.02 / 0.03 …”的更激进模式,欢迎提 issue(或你直接 PR,我给你点个大拇指)