WXRIW/Lyricify-Lyrics-Helper

集成 Lyricify 所需的歌词相关功能

C#

228

152 commits

updated Oct 7, 2026

See the code

README

Lyricify Lyrics Helper

Lyricify 家族中的 .NET 歌词工具库,为 Lyricify 歌词相关功能竭力打造,提供歌词解析、生成、搜索、解密和优化处理。

主要功能

歌词格式

格式解析生成说明
Lyricify Syllable✓✓Lyricify 逐字歌词
Lyricify Lines✓✓Lyricify 逐行歌词
LRC✓✓标准逐行歌词
QRC✓✓QQ 音乐逐字歌词
KRC✓✓酷狗逐字歌词
YRC✓✓网易云音乐逐字歌词
TTML✓—逐行、逐字;支持 Apple Music 扩展
Spotify (JSON)✓—未同步、逐行或逐字歌词
Musixmatch (JSON)✓—未同步、逐行或逐字歌词

ParseHelper 和 GenerateHelper 分别提供统一的解析、生成入口;TypeHelper 用于自动识别格式、转换类型以及获取格式的显示名称。

格式识别还支持 QRC (XML)、网易云音乐完整 YRC (JSON) 和 Apple Music (JSON) 等原始封装类型。

歌曲搜索与在线接口

SearchHelper 支持下表中的全部来源,可根据标题、艺人、专辑和时长查找最匹配的歌曲。

来源歌词能力其他常用接口凭据要求
QQ 音乐获取歌词及翻译歌曲、专辑、歌单和播放链接无需配置
网易云音乐获取 LRC、YRC 等歌词数据歌曲、专辑和歌单无需配置
酷狗音乐搜索歌词并获取 KRC歌曲搜索无需配置
汽水音乐从曲目详情获取歌词信息曲目详情无需配置
Apple Music获取 TTML 歌词曲目搜索获取歌词必须提供 Media User Token;Access Token 自动获取
Musixmatch获取逐字、逐行或未同步歌词及翻译曲目匹配User Token 自动获取,也可手动设置
Spotify获取未同步、逐行或逐字歌词曲目搜索必须提供 sp_dc Cookie
LRCLIB获取同步或纯文本歌词按曲目信息搜索、按 ID 查询无需配置
  • 已有歌曲信息、需要寻找对应平台曲目时,使用 SearchHelper
  • 已知来源、曲目 ID 或需要调用特定平台能力时,使用 ProviderHelper

在线接口依赖对应服务的可用性,返回结果也可能受到账号权限和地区限制。

歌词优化

  • 处理或还原 Explicit 歌词
  • 标准化 YRC、Musixmatch 歌词
  • 识别并处理信息行(标题行)
  • 解析 Apple Music TTML 扩展中的翻译、简体中文替换、歌曲元数据、背景人声和演唱者对齐信息

时间轴与结构处理

  • 为逐行、逐字歌词添加时间偏移
  • 将逐字歌词降级为逐行歌词等较低同步级别
  • 使用统一模型表示未同步、逐行、逐字和混合同步歌词

解密与通用工具

  • QRC、KRC 歌词解密与获取帮助
  • 中文简繁转换
  • 字符串和数学帮助方法

快速开始

引用项目

在解决方案目录中添加项目引用:

dotnet add path/to/YourProject.csproj reference Lyricify.Lyrics.Helper/Lyricify.Lyrics.Helper.csproj

解析与转换

using Lyricify.Lyrics.Helpers;
using Lyricify.Lyrics.Models;

var rawLyrics = File.ReadAllText("lyrics.txt");
var lyricsData = ParseHelper.ParseLyrics(rawLyrics); // 自动识别格式

if (lyricsData is not null)
{
    var lrc = GenerateHelper.GenerateString(lyricsData, LyricsTypes.Lrc);
    Console.WriteLine(lrc);
}

已知原始格式时,也可以显式传入类型:

var lyricsData = ParseHelper.ParseLyrics(rawLyrics, LyricsRawTypes.Qrc);

搜索与获取歌词

using Lyricify.Lyrics.Helpers;
using Lyricify.Lyrics.Models;
using Lyricify.Lyrics.Searchers.Helpers;
using SearchSource = Lyricify.Lyrics.Searchers.Searchers;

var track = new TrackMultiArtistMetadata
{
    Title = "RUNAWAY",
    Artists = new() { "OneRepublic" },
    Album = "RUNAWAY",
    AlbumArtists = new() { "OneRepublic" },
    DurationMs = 143264,
};

var match = await SearchHelper.Search(
    track,
    SearchSource.LRCLIB,
    CompareHelper.MatchType.Medium);

var lyrics = await ProviderHelper.LRCLIBApi.Get(
    track.Title,
    track.Artist!,
    track.Album,
    track.DurationMs / 1000d);

Console.WriteLine(lyrics?.SyncedLyrics);

其他在线来源可通过 ProviderHelper 中相应的 QQMusicApi、NeteaseApi、KugouApi、SodaMusicApi、AppleMusicApi、MusixmatchApi 和 SpotifyApi 访问。

Musixmatch 默认使用 Android API,也可以在创建实例时通过配置委托选择桌面 API,或注入自己的请求发送函数:

var mobileApi = new Lyricify.Lyrics.Providers.Web.Musixmatch.Api();
var desktopApi = new Lyricify.Lyrics.Providers.Web.Musixmatch.Api(
    options => options.UseDesktop());

var searcher = new MusixmatchSearcher(desktopApi);

项目结构

Lyricify.Lyrics.Helper/
├─ Decrypter/        # QRC、KRC 解密
├─ Generators/       # 歌词生成
├─ Helpers/          # 统一入口、歌词优化与通用帮助类
├─ Models/           # 歌词、时间轴和曲目元数据模型
├─ Parsers/          # 歌词解析
├─ Providers/Web/    # 在线服务接口与响应模型
└─ Searchers/        # 歌曲搜索与匹配

Lyricify.Lyrics.Demo/
├─ Program.cs        # 使用示例
└─ RawLyrics/        # 示例歌词

Lyricify 家族

Lyricify Lyrics Helper 是 Lyricify 家族的开源成员之一,专注于为 Lyricify 系列应用及其他项目提供可复用的歌词处理能力。

Lyricify 主仓库

  • Lyricify App:Lyricify 系列应用的主仓库,包含 Lyricify 4、Lyricify Fusion、Lyricify Mobile 等产品的介绍、下载与使用指南。

Lyricify 系列的其他开源项目

  • Lyricify Backgrounds:面向 Lyricify 的可复用动态背景渲染器,提供跨框架接口以及 WPF、WinUI 实现。
  • Lyricify Lines Creator:Lyricify Lines 逐行歌词打轴工具,同时支持输出 LRC 歌词。

许可证

本项目基于 Apache License 2.0 开源。

欢迎开发者在自己的项目中引用本库。使用、复制、修改或分发本项目代码时,请遵守 Apache License 2.0,并履行许可证规定的相关义务。

如果希望对本项目进行改进、翻译或衍生开发,推荐直接 fork 本仓库并在此基础上继续维护,而非另行创建项目;同时建议保留原仓库名称或 Lyricify 标识,以便识别项目来源。

感谢与支持

特别感谢 @cnbluefire 和 @Raspberry Kan 提供的帮助与支持。

感谢以下第三方代码

lyricify
lyrics
parser
spotify

WXRIW/Lyricify-Lyrics-Helper

集成 Lyricify 所需的歌词相关功能

C#

228

152 commits

updated Oct 7, 2026

See the code

README

Lyricify Lyrics Helper

Lyricify 家族中的 .NET 歌词工具库,为 Lyricify 歌词相关功能竭力打造,提供歌词解析、生成、搜索、解密和优化处理。

主要功能

歌词格式

格式解析生成说明
Lyricify Syllable✓✓Lyricify 逐字歌词
Lyricify Lines✓✓Lyricify 逐行歌词
LRC✓✓标准逐行歌词
QRC✓✓QQ 音乐逐字歌词
KRC✓✓酷狗逐字歌词
YRC✓✓网易云音乐逐字歌词
TTML✓—逐行、逐字;支持 Apple Music 扩展
Spotify (JSON)✓—未同步、逐行或逐字歌词
Musixmatch (JSON)✓—未同步、逐行或逐字歌词

ParseHelper 和 GenerateHelper 分别提供统一的解析、生成入口;TypeHelper 用于自动识别格式、转换类型以及获取格式的显示名称。

格式识别还支持 QRC (XML)、网易云音乐完整 YRC (JSON) 和 Apple Music (JSON) 等原始封装类型。

歌曲搜索与在线接口

SearchHelper 支持下表中的全部来源,可根据标题、艺人、专辑和时长查找最匹配的歌曲。

来源歌词能力其他常用接口凭据要求
QQ 音乐获取歌词及翻译歌曲、专辑、歌单和播放链接无需配置
网易云音乐获取 LRC、YRC 等歌词数据歌曲、专辑和歌单无需配置
酷狗音乐搜索歌词并获取 KRC歌曲搜索无需配置
汽水音乐从曲目详情获取歌词信息曲目详情无需配置
Apple Music获取 TTML 歌词曲目搜索获取歌词必须提供 Media User Token;Access Token 自动获取
Musixmatch获取逐字、逐行或未同步歌词及翻译曲目匹配User Token 自动获取,也可手动设置
Spotify获取未同步、逐行或逐字歌词曲目搜索必须提供 sp_dc Cookie
LRCLIB获取同步或纯文本歌词按曲目信息搜索、按 ID 查询无需配置
  • 已有歌曲信息、需要寻找对应平台曲目时,使用 SearchHelper
  • 已知来源、曲目 ID 或需要调用特定平台能力时,使用 ProviderHelper

在线接口依赖对应服务的可用性,返回结果也可能受到账号权限和地区限制。

歌词优化

  • 处理或还原 Explicit 歌词
  • 标准化 YRC、Musixmatch 歌词
  • 识别并处理信息行(标题行)
  • 解析 Apple Music TTML 扩展中的翻译、简体中文替换、歌曲元数据、背景人声和演唱者对齐信息

时间轴与结构处理

  • 为逐行、逐字歌词添加时间偏移
  • 将逐字歌词降级为逐行歌词等较低同步级别
  • 使用统一模型表示未同步、逐行、逐字和混合同步歌词

解密与通用工具

  • QRC、KRC 歌词解密与获取帮助
  • 中文简繁转换
  • 字符串和数学帮助方法

快速开始

引用项目

在解决方案目录中添加项目引用:

dotnet add path/to/YourProject.csproj reference Lyricify.Lyrics.Helper/Lyricify.Lyrics.Helper.csproj

解析与转换

using Lyricify.Lyrics.Helpers;
using Lyricify.Lyrics.Models;

var rawLyrics = File.ReadAllText("lyrics.txt");
var lyricsData = ParseHelper.ParseLyrics(rawLyrics); // 自动识别格式

if (lyricsData is not null)
{
    var lrc = GenerateHelper.GenerateString(lyricsData, LyricsTypes.Lrc);
    Console.WriteLine(lrc);
}

已知原始格式时,也可以显式传入类型:

var lyricsData = ParseHelper.ParseLyrics(rawLyrics, LyricsRawTypes.Qrc);

搜索与获取歌词

using Lyricify.Lyrics.Helpers;
using Lyricify.Lyrics.Models;
using Lyricify.Lyrics.Searchers.Helpers;
using SearchSource = Lyricify.Lyrics.Searchers.Searchers;

var track = new TrackMultiArtistMetadata
{
    Title = "RUNAWAY",
    Artists = new() { "OneRepublic" },
    Album = "RUNAWAY",
    AlbumArtists = new() { "OneRepublic" },
    DurationMs = 143264,
};

var match = await SearchHelper.Search(
    track,
    SearchSource.LRCLIB,
    CompareHelper.MatchType.Medium);

var lyrics = await ProviderHelper.LRCLIBApi.Get(
    track.Title,
    track.Artist!,
    track.Album,
    track.DurationMs / 1000d);

Console.WriteLine(lyrics?.SyncedLyrics);

其他在线来源可通过 ProviderHelper 中相应的 QQMusicApi、NeteaseApi、KugouApi、SodaMusicApi、AppleMusicApi、MusixmatchApi 和 SpotifyApi 访问。

Musixmatch 默认使用 Android API,也可以在创建实例时通过配置委托选择桌面 API,或注入自己的请求发送函数:

var mobileApi = new Lyricify.Lyrics.Providers.Web.Musixmatch.Api();
var desktopApi = new Lyricify.Lyrics.Providers.Web.Musixmatch.Api(
    options => options.UseDesktop());

var searcher = new MusixmatchSearcher(desktopApi);

项目结构

Lyricify.Lyrics.Helper/
├─ Decrypter/        # QRC、KRC 解密
├─ Generators/       # 歌词生成
├─ Helpers/          # 统一入口、歌词优化与通用帮助类
├─ Models/           # 歌词、时间轴和曲目元数据模型
├─ Parsers/          # 歌词解析
├─ Providers/Web/    # 在线服务接口与响应模型
└─ Searchers/        # 歌曲搜索与匹配

Lyricify.Lyrics.Demo/
├─ Program.cs        # 使用示例
└─ RawLyrics/        # 示例歌词

Lyricify 家族

Lyricify Lyrics Helper 是 Lyricify 家族的开源成员之一,专注于为 Lyricify 系列应用及其他项目提供可复用的歌词处理能力。

Lyricify 主仓库

  • Lyricify App:Lyricify 系列应用的主仓库,包含 Lyricify 4、Lyricify Fusion、Lyricify Mobile 等产品的介绍、下载与使用指南。

Lyricify 系列的其他开源项目

  • Lyricify Backgrounds:面向 Lyricify 的可复用动态背景渲染器,提供跨框架接口以及 WPF、WinUI 实现。
  • Lyricify Lines Creator:Lyricify Lines 逐行歌词打轴工具,同时支持输出 LRC 歌词。

许可证

本项目基于 Apache License 2.0 开源。

欢迎开发者在自己的项目中引用本库。使用、复制、修改或分发本项目代码时,请遵守 Apache License 2.0,并履行许可证规定的相关义务。

如果希望对本项目进行改进、翻译或衍生开发,推荐直接 fork 本仓库并在此基础上继续维护,而非另行创建项目;同时建议保留原仓库名称或 Lyricify 标识,以便识别项目来源。

感谢与支持

特别感谢 @cnbluefire 和 @Raspberry Kan 提供的帮助与支持。

感谢以下第三方代码

lyricify
lyrics
parser
spotify

Project health

Latest release

0.2.0 · Jul 6, 2026

Releases this year

1

Significant stargazers

ema

165 followers · starred May 2024

apoint123

16 followers · starred Jun 2025

Hans

179 followers · starred Jun 2025