ktv
用 Remotion 在视频或音频上叠加 KTV 风格歌词:asr-to-lrc.py 调火山 openspeech 生成 LRC(可选逐词时间戳),再渲染歌词动画。 视频模式底部双行,音频模式全屏滚动高亮。需 DOUBAO_SPEECH_API_KEY 等,详见正文。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
用 Remotion 在视频或音频上叠加 KTV 风格歌词:asr-to-lrc.py 调火山 openspeech 生成 LRC(可选逐词时间戳),再渲染歌词动画。 视频模式底部双行,音频模式全屏滚动高亮。需 DOUBAO_SPEECH_API_KEY 等,详见正文。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
根据视频内容生成与画面匹配的解说旁白,使用 Ark TTS 合成有吸引力的配音并替换原音轨
根据视频情绪/风格从音乐库中自动匹配合适的 BGM 并混音,支持 ducking
基于豆包大模型 ASR(LAS-ASR-PRO)的高精度语音转写:支持视频自动抽取音轨、降噪预处理、超大文件与超长时长、 TOS 内网路径(tos://)输入;输出带时间戳的分句 JSON,可选说话人分离、情感/性别/语速、敏感词过滤等扩展分析。 异步 submit/poll。适用于台词精转、会议纪要、多语言音视频(支持多格式与自动语种检测)。需 LAS 侧鉴权与算子配置。
从视频或纯音频中提取音轨,并按固定时长切分;支持 wav/mp3/flac 等格式转换,输入输出可对接 TOS。 需 LAS_API_KEY。适用于批量抽音频、等长分段、给 ASR/剪辑流水线备料。
按自然语言描述从长视频中抽取片段:高光、指定场景、参考图找人/找物、长视频语义分段与带时间戳的摘要。 支持参考图锁定目标,结果多为 TOS 上的剪辑 URL。需 LAS_API_KEY 与算子区域配置。适合云端粗剪、素材初筛与自动化拆条。
OpenClaw 系统诊断和性能分析工具。分析 agent 推理耗时、Token 用量、工具调用统计、 Run 时间线、Gateway 重启历史。支持多种模式:批量分析(默认)、实时跟踪(-f)、 摘要统计(-s)、高级诊断(--advanced)。支持多 Agent 过滤。 使用场景:当用户询问 OpenClaw 运行状态、性能瓶颈、推理延迟、Token 消耗、 工具执行统计、错误排查、agent 活动分析时触发。 触发词:诊断、diagnostics、性能分析、推理耗时、token统计、运行状态、 agent分析、工具调用统计、Run详情、Gateway重启。 指令触发:/diag — 直接执行诊断,支持参数透传。
| name | KTV 歌词特效视频 |
| description | 用 Remotion 在视频或音频上叠加 KTV 风格歌词:asr-to-lrc.py 调火山 openspeech 生成 LRC(可选逐词时间戳),再渲染歌词动画。 视频模式底部双行,音频模式全屏滚动高亮。需 DOUBAO_SPEECH_API_KEY 等,详见正文。 |
| trigger | KTV 歌词、LRC、歌词特效、Remotion 歌词、卡拉OK 字幕、视频加歌词 |
使用 Remotion 在源视频/音频上叠加 KTV 歌词效果。通过独立的 asr-to-lrc.py 脚本调用火山引擎 openspeech 自动识别语音并生成 LRC 歌词(可选逐词时间戳),再由 Remotion 项目渲染歌词动画。视频模式下歌词叠加在视频底部(当前行+下一行),音频模式下歌词全屏滚动高亮显示。
当用户提到以下关键词时触发此 Skill:
本 Skill 分为两个独立阶段:
阶段 A — 语音识别(asr-to-lrc.py)
DOUBAO_SPEECH_API_KEY)words 字段),否则输出普通 LRC阶段 B — 歌词视频渲染(Remotion 项目)
Step 1:确认用户输入
向用户确认:
#00ff88(亮绿色)判断文件类型:
MODE = "video")MODE = "audio")Step 2:阶段 A — 生成增强 LRC 歌词
前置条件(仅首次):
ffmpeg.env,包含 DOUBAO_SPEECH_API_KEY=...使用独立脚本生成增强 LRC:
python scripts/asr-to-lrc.py <媒体文件路径> -o lyrics.lrc
asr-to-lrc.py 参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
media | (必填) | 音频/视频文件路径 |
-o/--output | lyrics.lrc | 输出 LRC 文件路径 |
--result-json | (自动) | 保存火山 ASR 完整结果 JSON(默认与输出同名,后缀改为 .asr.json) |
--no-enhanced | 关 | 输出普通 LRC(默认尽量输出逐词时间戳,若返回含 words 字段) |
--poll-interval | 5 | 轮询间隔(秒) |
--timeout-sec | 600 | 超时(秒) |
--keep-temp | 关 | 保留临时 mp3 |
输出格式为增强 LRC(逐字时间戳):
[00:05.20] <00:05.20>我<00:05.60>在<00:05.90>人<00:06.30>民<00:06.70>广<00:07.10>场<00:07.50>吃<00:07.90>炸<00:08.30>鸡<00:08.80>
如果用户自己有 LRC 歌词文件,可跳过此步骤。
Step 3:获取媒体时长
⚠️ 关键步骤:获取原始媒体的精确时长,用于保证输出视频时长对齐。
# 获取时长(秒,带小数)
DURATION=$(ffprobe -v error -show_entries format=duration -of csv=p=0 <媒体文件路径>)
echo "媒体时长: ${DURATION}s"
Step 4:阶段 B — 初始化 Remotion 项目
bash ktv-video-production/scripts/scaffold.sh
Step 5:导入文件并更新配置
将用户上传的媒体文件下载到 ktv-video-production-project/public/ 目录,重命名为 media.mp4 或 media.mp3
将增强 LRC 转为 JSON 并放入项目:
cd ktv-video-production-project
node scripts/parse-lrc.mjs ../lyrics.lrc 30 > src/data/lyrics-data.json
src/config.ts:export const MODE: "video" | "audio" = "video"; // 根据文件类型
export const MEDIA_SRC = "media.mp4"; // 媒体文件名
export const TOTAL_DURATION_SEC = 245.32; // ⚠️ 填入 Step 3 获取的精确时长
export const VIDEO_WIDTH = 1920;
export const VIDEO_HEIGHT = 1080;
export const FPS = 30;
Step 6:打包项目给用户
cd ktv-video-production-project && zip -r ../ktv-video-production-project.zip . -x "node_modules/*"
Step 7:告知用户使用方式
cd ktv-video-production-project
npm install
npm start # Remotion Studio 预览
npm run preview # Vite + Player 预览
npm run render # CLI 导出 MP4(推荐)
┌──────────────────────────────────┐
│ │
│ 源视频画面(全屏) │
│ │
│ │
├──────────────────────────────────┤ ← 渐变半透明蒙层
│ ▶ 当前行:我在人民广场吃炸鸡 │ ← 64px 亮色逐字填充
│ 下一行:而此时此刻你在哪里 │ ← 48px 半透明预览
│▁▁▁▁▁▁▁▁▁▁ 进度条 ▁▁▁▁▁▁▁▁▁▁▁▁│
└──────────────────────────────────┘
┌──────────────────────────────────┐
│ (已唱) 第一行歌词 │ ← 暗色,缩小
│ (已唱) 第二行歌词 │ ← 暗色,缩小
│ │
│ ★ 当前行:我在人民广场吃炸鸡 ★ │ ← 居中,最大,逐字填充
│ │
│ (下一行) 第四行歌词 │ ← 半透明
│ (下一行) 第五行歌词 │ ← 更半透明
│▁▁▁▁▁▁▁▁▁▁ 进度条 ▁▁▁▁▁▁▁▁▁▁▁▁│
└──────────────────────────────────┘
src/config.ts 中的 TOTAL_DURATION_SEC 控制输出视频的总帧数:
totalFrames = Math.round(TOTAL_DURATION_SEC * FPS),输出视频时长精确等于原始媒体务必通过 ffprobe 获取原始媒体精确时长并填入此字段。
.env 中有 DOUBAO_SPEECH_API_KEY