mcpField
A
acestep-lyrics-transcription

acestep-lyrics-transcription

github.com/ace-step创意与媒体14.1k65 次安装9 周前更新
代码仓库

关于 acestep-lyrics-transcription

acestep-lyrics-transcription 是命令行技能,可通过 OpenAI Whisper 或 ElevenLabs Scribe 将音频转为带时间戳的歌词。支持 LRC、SRT 和 JSON 输出,并可配置服务提供方与 API 密钥。

主要功能

  1. 01使用两种 API 服务转录
  2. 02输出 LRC、SRT 和 JSON
  3. 03选择语言和服务提供方
  4. 04配置 API 密钥与默认项
  5. 05生成带时间戳的歌词

适用场景

  1. 01为歌曲生成 LRC 字幕
  2. 02将歌词导出为 SRT 或 JSON
  3. 03转录多语言音频
  4. 04对照原文修正识别歌词

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ace-step/ace-step-1.5 --skill acestep-lyrics-transcription

安装后在 Claude Code 中输入/acestep-lyrics-transcription确认已加载。

附带文件scripts/acestep-lyrics-transcription.shscripts/config.example.json

详细介绍

歌词转录技能

通过 OpenAI Whisper 或 ElevenLabs Scribe API,将音频文件转录为带时间戳的歌词(LRC/SRT/JSON)。

API 密钥配置指南

转录前,必须检查用户是否已配置 API 密钥。 运行以下命令进行检查:

cd "{project_root}/{.claude or .codex}/skills/acestep-lyrics-transcription/" && bash ./scripts/acestep-lyrics-transcription.sh config --check-key

此命令只会报告当前使用的服务商的 API 密钥是否已设置或为空,不会打印密钥的实际值。切勿读取或显示用户的 API 密钥内容。 请勿对密钥字段使用 config --get,也不要直接读取 config.json。config --list 命令是安全的——它会自动在输出中将 API 密钥屏蔽为 ***。

如果命令报告密钥为空,必须停止操作,并指导用户完成配置后再继续。没有有效密钥时请勿尝试转录,否则操作会失败。

使用 AskUserQuestion 询问用户是否要提供 API 密钥,并提供以下选项和说明:

  1. 告知用户当前使用的服务商(openai 或 elevenlabs)以及其 API 密钥尚未配置,并说明没有密钥就无法继续转录。
  2. 清楚说明如何获取密钥:
  3. 同时提供切换到另一家服务商的选项,供已有该服务商密钥的用户选择。
  4. 用户提供密钥后,使用以下命令进行配置:
    cd "{project_root}/{.claude or .codex}/skills/acestep-lyrics-transcription/" && bash ./scripts/acestep-lyrics-transcription.sh config --set <provider>.api_key <KEY>
    
  5. 如果用户希望切换服务商,也要运行:
    cd "{project_root}/{.claude or .codex}/skills/acestep-lyrics-transcription/" && bash ./scripts/acestep-lyrics-transcription.sh config --set provider <provider_name>
    
  6. 配置完成后,重新运行 config --check-key,确认密钥已设置后再继续。

如果 API 密钥已经配置,直接开始转录,无需询问。

快速入门

# 1. cd to this skill's directory
cd {project_root}/{.claude or .codex}/skills/acestep-lyrics-transcription/

# 2. Configure API key (choose one)
./scripts/acestep-lyrics-transcription.sh config --set openai.api_key sk-...
# or
./scripts/acestep-lyrics-transcription.sh config --set elevenlabs.api_key ...
./scripts/acestep-lyrics-transcription.sh config --set provider elevenlabs

# 3. Transcribe
./scripts/acestep-lyrics-transcription.sh transcribe --audio /path/to/song.mp3 --language zh

# 4. Output saved to: {project_root}/acestep_output/<filename>.lrc

前置条件

  • curl、jq、python3(或 python)
  • OpenAI 或 ElevenLabs 的 API 密钥

脚本用法

./scripts/acestep-lyrics-transcription.sh transcribe --audio <file> [options]

Options:
  -a, --audio      Audio file path (required)
  -l, --language   Language code (zh, en, ja, etc.)
  -f, --format     Output format: lrc, srt, json (default: lrc)
  -p, --provider   API provider: openai, elevenlabs (overrides config)
  -o, --output     Output file path (default: acestep_output/<filename>.lrc)

转录后的歌词校正(必须执行)

重要:转录完成后,在将 LRC 文件用于 MV 渲染前,必须手动校正。转录模型在处理演唱歌词时经常会出错:

  • 专有名词:“ACE-Step” → “AC step”,“Spotify” → “spot a fly”
  • 发音相似的词:“arrives” → “eyes”,“open source” → “open sores”
  • 合并或拆分的词:“lighting up” → “lightin' nup”
校正流程
  1. 使用 Read 工具读取转录得到的 LRC 文件
  2. 从 ACE-Step 输出 JSON 文件中读取原始歌词
  3. 将原始歌词作为整体参考:请勿尝试逐行对齐——转录结果与原文的分行方式经常不同,可能会拆分、合并或重新排列歌词行。应通读原始歌词以了解正确措辞,然后逐行检查 LRC,根据对原始歌词的理解修正所有识别错误。
  4. 修正转录错误:将识别错误的词替换为正确的原词,并保留时间戳
  5. 使用 Write 工具将校正后的 LRC 写回文件
校正内容
  • 将识别错误的词替换为对应的正确原词
  • 保持所有 [MM:SS.cc] 时间戳完全不变(转录得到的时间戳是准确的)
  • 请勿添加 [Verse] 或 [Chorus] 等结构标签——LRC 中只能包含带时间戳的文本行
示例

转录结果(错误):

[00:46.96]AC step alive,
[00:50.80]one point five eyes.

原始歌词参考:

ACE-Step alive
One point five arrives

校正结果(正确):

[00:46.96]ACE-Step alive,
[00:50.80]One point five arrives.

配置

配置文件:scripts/config.json

# Switch provider
./scripts/acestep-lyrics-transcription.sh config --set provider openai
./scripts/acestep-lyrics-transcription.sh config --set provider elevenlabs

# Set API keys
./scripts/acestep-lyrics-transcription.sh config --set openai.api_key sk-...
./scripts/acestep-lyrics-transcription.sh config --set elevenlabs.api_key ...

# View config
./scripts/acestep-lyrics-transcription.sh config --list
选项默认值描述
provideropenai当前使用的提供商:openai 或 elevenlabs
output_formatlrc默认输出格式:lrc、srt 或 json
openai.api_key""OpenAI API 密钥
openai.api_urlhttps://api.openai.com/v1OpenAI API 基础 URL
openai.modelwhisper-1OpenAI 模型(whisper-1 用于词级时间戳)
elevenlabs.api_key""ElevenLabs API 密钥
elevenlabs.api_urlhttps://api.elevenlabs.io/v1ElevenLabs API 基础 URL
elevenlabs.modelscribe_v2ElevenLabs 模型

提供商说明

提供商模型词级时间戳定价
OpenAIwhisper-1支持(片段级和词级)$0.006/分钟
ElevenLabsscribe_v2支持(词级)因套餐而异
  • OpenAI 的 whisper-1 是唯一支持词级时间戳的 OpenAI 模型
  • ElevenLabs 的 scribe_v2 返回词级时间戳,并支持按类型筛选
  • 两者均支持多语言转录

示例

# Basic transcription (uses config defaults)
./scripts/acestep-lyrics-transcription.sh transcribe --audio song.mp3

# Chinese song to LRC
./scripts/acestep-lyrics-transcription.sh transcribe --audio song.mp3 --language zh

# Use ElevenLabs, output SRT
./scripts/acestep-lyrics-transcription.sh transcribe --audio song.mp3 --provider elevenlabs --format srt

# Custom output path
./scripts/acestep-lyrics-transcription.sh transcribe --audio song.mp3 --output ./my_lyrics.lrc

评论

支持 Markdown