Skip to content

Latest commit

 

History

History
161 lines (118 loc) · 4.76 KB

File metadata and controls

161 lines (118 loc) · 4.76 KB

一个歌词工具库,支持解析、生成与后处理

npm version npm downloads license

English | 简体中文 | 繁體中文

Warning

本项目目前仍在开发中,部分接口尚未稳定。

特性

  • 格式推断 — 支持通过输入内容自动推断格式
  • 插件系统 — 内置多种插件,可按需加载
  • 链式调用 — 链式调用,完全控制处理顺序

安装

npm install music-lyric-kit

使用

Pipeline

Pipeline 提供链式调用接口,让你完全控制歌词的处理顺序。

import { createParserPipeline } from 'music-lyric-kit'

const input = {
  content: '[00:01.114]Hello world',
}

const { format, result } = createParserPipeline(input)
  .infer()
  .parse()
  .backgroundExtract()
  .agentExtract()
  .pureExtract()
  .pureClean()
  .backgroundClean()
  .interludeInsert()
  .spaceInsert()
  .stressMark()
  .final()

console.log(format, result)

每个转换方法都接受可选的 options 参数来自定义行为,不传则使用插件默认配置。

const { result } = createParserPipeline(input)
  .infer()
  .parse()
  .interludeInsert({ checkTime: { first: 3000, normal: 8000 } })
  .spaceInsert({ original: true, extended: false })
  .final()

Plugin

如需更细粒度的控制,可以直接使用 Parser 类搭配插件。

import { Parser, Plugins } from 'music-lyric-kit'

const parser = new Parser()

// 格式插件
parser.plugin.add(new Plugins.Formats.Lrc.Parser())
parser.plugin.add(new Plugins.Formats.Ttml.AmllParser())

// 转换插件
parser.plugin.add(new Plugins.Transforms.Space.InsertPlugin())
parser.plugin.add(new Plugins.Transforms.Stress.MarkPlugin())

const input = {
  original: '[00:01.114]Hello world',
}

// 推断格式
const format = parser.infer({ content: input })

if (format) {
  const result = parser.parse(format, { content: input })
  console.log(result)
}

生成歌词

import { Generator, Plugins } from 'music-lyric-kit'

const generator = new Generator()

generator.plugin.add(new Plugins.Formats.Lrc.Generator())

const output = generator.generate('lrc', { content: result })
console.log(output)

包一览

主要

包名 说明
music-lyric-kit 主入口
@music-lyric-kit/core 插件系统
@music-lyric-kit/lyric 数据结构
@music-lyric-kit/utils 工具库

格式插件

插件 说明
@music-lyric-kit/plugin-format-lrc LRC
@music-lyric-kit/plugin-format-ttml TTML

转换插件

插件 说明
@music-lyric-kit/plugin-transform-space 规范空格
@music-lyric-kit/plugin-transform-pure 净化歌词
@music-lyric-kit/plugin-transform-interlude 插入间奏
@music-lyric-kit/plugin-transform-background 背景人声
@music-lyric-kit/plugin-transform-agent 多人合唱
@music-lyric-kit/plugin-transform-stress 重音标记

贡献者

Contributors

许可证

MIT

Copyright (c) 2026 - now, Folltoshe