Skip to content

Latest commit

 

History

History
161 lines (118 loc) · 4.78 KB

File metadata and controls

161 lines (118 loc) · 4.78 KB

一個歌詞工具庫,支援解析、生成與後處理

npm version npm downloads license

English | 简体中文 | 繁體中文

Warning

本專案目前仍在開發中,部分介面(API)尚未穩定。

特性

  • 格式推斷 — 支援透過輸入內容自動推斷格式
  • 外掛系統 — 內建多種外掛,可按需載入
  • Pipeline — 鏈式呼叫 API,完全控制處理順序

安裝

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