Apache License 2.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

Lyrico:一个开源的音乐标签编辑器

项目背景与痛点

Lyrico 项目旨在为 Android 平台提供一个功能全面且直观的音乐标签编辑解决方案。音乐文件通常携带丰富的元数据标签,包括歌词、专辑封面、作曲家等。在整理音乐收藏时,这些信息的准确性和完整性显得尤为重要。然而,市面上的很多标签编辑器要么功能单一,要么操作复杂,缺乏直观的逐字歌词支持及高效的标签管理功能。Lyrico 针对这一痛点,提供了一套简洁而强大的工具集,满足用户对音乐标签的细致管理和优化需求。

核心技术揭秘

深入 Lyrico 的技术架构,我们可以看到它是如何巧妙地结合多种技术来实现高效和灵活的标签编辑和管理。Lyrico 运用了现代化的软件架构模式,比如 MVC(Model-View-Controller)模式,以保证业务逻辑与用户界面分离,同时确保代码的复用性和可维护性。

此外,Lyrico 在处理逐字歌词方面表现尤为突出。它通过分析音频文件的时间戳,动态匹配歌词内容,实现逐字高亮展示。这一过程涉及到语音识别算法与音频文件的离散傅里叶变换(DFT)分析,以精确确定歌词时间轴上的对应位置。以下是 Lyrico 核心数据流的简要图解:

graph TD A[用户输入标签功能请求] --> B[控制器接收请求] B --> C[模型层处理业务逻辑] C --> D{"标签类型"} D -->|"编辑歌词"| E[逐字歌词编辑] D -->|"处理元数据"| F[元数据标签编辑] E --> G[标签更新到模型] F --> G G --> H[更新视图]

从上图中可以看出,Lyrico 通过控制器接收请求,并分发到模型层进行处理,针对不同的标签类型,触发相应的功能模块。这种架构使得每一层的功能清晰,并便于维护和扩展。

功能亮点与差异

Lyrico 最显著的特点之一在于其逐字歌词编辑功能,这是一个在同类应用中罕见的功能点。用户不仅可以编辑歌词的内容,还可以在每个字词上精确设置显示时间,大大提升了听歌时的沉浸感。此外,Lyrico 还扩展了对音频文件的基本元数据编辑范围,包括但不限于艺术家、作曲家、专辑、版权信息等,可以处理多种音频标签格式(如 ID3, Vorbis Comments)。

应用场景与落地建议

对于个人用户来说,Lyrico 是一个理想的音乐标签管理工具,尤其适合重度音乐爱好者,能帮助他们高效管理和优化音乐库。对于团队和个人开发者来说,Lyrico 的开放源代码和模块化设计提供了极佳的学习与扩展机会。不过,在生产环境中使用时,需要考虑相关版权问题,特别是涉及到歌词的逐字编辑和管理时。此外,音频文件的处理通常会消耗大量资源,因此在资源受限的设备上使用时需要适当调优。

综合评价

Lyrico 项目的优点在于它引入了一些先进的音频处理和标签编辑技术,满足了用户对高质量音乐管理工具的渴求。逐字歌词编辑和全面的标签管理功能是其主要亮点。然而,它在复杂的实时信号处理方面可能会遇到性能瓶颈,特别是在资源受限的设备上运行时。

总体而言,Lyrico 项目提供了有价值的开源贡献,为 Android 用户提供了一款功能强大且具有广阔提升空间的音乐标签编辑工具。

README

Lyrico

GitHub Release GitHub Downloads (all assets, all releases) License

Lyrico 是一款面向 Android 的开源本地音乐标签编辑与歌词管理工具。它用于整理本地音乐库、读写音频元数据,并通过插件化搜索源补全歌词、封面和其他歌曲信息。

功能特性

  • 本地音乐库管理:扫描本地音乐文件,按歌曲、艺术家、专辑、文件夹等维度浏览与搜索。
  • 音频元数据编辑:读取和修改标题、艺术家、专辑、专辑艺术家、年份、流派、音轨号、歌词、封面、注释和自定义标签等信息。
  • 多格式标签读写:基于 TagLib 处理 MP3、FLAC、OGG/Opus、M4A/AAC、WAV、APE 等常见音频格式。
  • 歌词与封面补全:通过插件搜索歌词、翻译、音译、封面和候选元数据,并写入本地音频文件。
  • 歌词格式处理:支持普通 LRC、增强型逐字歌词、TTML 等歌词内容的展示、匹配、转换与写入。
  • 批量整理流程:支持多选、批量匹配、批量编辑、批量重命名、批量响度分析、批量分享和批量删除。
  • 插件化搜索源:在线搜索能力由插件提供,应用本体负责运行时、配置界面、结果处理和标签写入。
  • 双界面风格:内置 Miuix 与 SaltUI 两套界面,切换后立即生效。

插件系统

Lyrico 的在线音乐信息搜索采用插件化架构。搜索源插件以 JavaScript 编写,运行在 Android 端嵌入式 quickjs-ng 运行时中。

插件可以声明并实现以下能力:

  • 搜索歌曲信息
  • 获取歌词
  • 搜索封面
  • 声明插件配置项

应用会根据插件 manifest 暴露配置界面、运行插件脚本,并将插件返回的结果转换为应用内部的歌曲、歌词和封面数据。插件文档从这里开始阅读:

已适配 Lyrico 外部编辑功能的播放器

接入方式见 外部编辑接入指南。如需加入下方列表,请提交 PR。

播放器名称 适配版本
光锥音乐 1.1.4+
Halcyon 1.1.0+
棱镜音乐 0.1.3+
mica-music 0.1.9.1+
Raws-Music 0.9.39-beta+
Salt Player 12.4.0-alpha01-2026091601+
MD3Music 5.5.0+

构建

推荐使用 Android Studio 打开项目,也可以直接通过 Gradle 构建。

基础环境:

首次构建前初始化源码子模块:

git submodule update --init --recursive

常用命令:

.\gradlew.bat :lyrico-app:assembleDebug

仅检查 Kotlin 编译:

.\gradlew.bat :lyrico-app:compileDebugKotlin

主要模块:

  • lyrico-app:Android 应用主模块,包含 UI、音乐库、搜索、插件运行时和业务逻辑。
  • lyrico-audiotag:音频标签读写模块,封装底层音频元数据处理能力。
  • docs:VitePress 文档站点,覆盖插件使用、插件开发和宿主 API。

维护取向

项目开发主要围绕维护者自身的实际使用需求展开,不追求覆盖所有可能的个性化场景。主线功能通常会优先考虑:

  • 对多数用户有实际价值
  • 交互和概念足够简单
  • 长期维护成本可控
  • 能通过插件或配置扩展的能力不硬编码进应用本体

高度定制化、使用场景过窄或会明显增加复杂度的功能,可能不会纳入主线,更适合通过插件、配置或 fork 项目实现。

参考项目与第三方组件

项目在开发过程中参考或使用了以下优秀项目:

捐赠

如果 Lyrico 对你有帮助,可以通过 爱发电 支持项目维护。

赞助者列表

许可证

Lyrico 本体代码基于 Apache License 2.0 开源。

项目使用的第三方组件仍遵循各自许可证。Gradle/Android 依赖的许可信息可在应用内“开源许可”页面查看;随源码引入或嵌入构建的组件见 THIRD_PARTY_NOTICES.md。

评论

暂无评论