You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为MP3文件添加SYLT标签?使用Mutagen遇问题求指导

解决Mutagen添加SYLT同步歌词失败的问题

几个常见的坑和修复方法:

1. Windows路径转义错误

你写的路径"C:\Music\Ghost.mp3"里的\M会被当成转义字符,导致程序找不到文件。两种修复方式:

  • 用原始字符串(前面加r):
    aud = ID3(r"C:\Music\Ghost.mp3")
    
  • 把反斜杠转义成两个:
    aud = ID3("C:\\Music\\Ghost.mp3")
    

2. 时间戳不是整数

SYLT要求时间戳必须是整数类型,如果你的millisecond是字符串(比如从文本里读出来的),必须先转成int。比如:

# 正确格式:每个元素是(歌词文本, 整数时间戳)
sl = [("第一句", 1000), ("第二句", 3500), ("第三句", 6200)]

3. 原有标签未被覆盖

如果目标MP3已经有SYLT标签,用add()方法大概率不会替换掉旧标签,直接赋值更靠谱:

# 把add改成直接赋值
aud["SYLT"] = SYLT(encoding=Encoding.UTF8, format=2, type=1, text=sl)

4. 完整可运行代码

别忘了导入所有需要的模块,保存时指定ID3版本兼容性更好:

from mutagen.id3 import ID3, SYLT, Encoding

# 读取文件
aud = ID3(r"C:\Music\Ghost.mp3")

# 同步歌词列表
sl = [("Ghost", 0), ("I'm getting tired of you", 1200), ("You're a ghost", 2500)]

# 设置SYLT标签
aud["SYLT"] = SYLT(
    encoding=Encoding.UTF8,
    format=2,  # 2代表绝对时间(毫秒),无需修改
    type=1,    # 1代表歌词类型,无需修改
    text=sl
)

# 保存修改,指定v2.3版本兼容性更广
aud.save(v2_version=3)

验证标签是否生效

可以用这段代码检查是否成功添加:

from mutagen.id3 import ID3

aud = ID3(r"C:\Music\Ghost.mp3")
if "SYLT" in aud:
    print("同步歌词已添加成功:")
    for line, time in aud["SYLT"].text:
        print(f"{time}ms → {line}")
else:
    print("SYLT标签未找到,添加失败")

内容的提问来源于stack exchange,提问作者Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:05:18