← 返回信息流
AI 资讯Hacker News·2 小时前

Hacker News展示YouTube吉他谱解析工具

原标题:Show HN: YouTube Guitar Tab Parser

速览

该项目展示了一个从YouTube视频中提取吉他谱的解析器。它能够自动识别视频中的吉他指法并生成可读的曲谱。工具代码已开源,旨在帮助吉他爱好者快速获取和学习曲谱。不过目前仍属于早期项目,解析准确性有待提升。

AI 深度解读

背景

在吉他学习中,谱例(TAB 谱)是必不可少的工具,但许多优质教学视频仅以视频形式呈现,缺少可打印的乐谱。传统上,学习者需要手动观看视频、暂停、抄写或依赖第三方扒谱网站。Hacker News 上发布的 YouTube Guitar Tab Parser 是一个 CLI 工具,能够自动将 YouTube 吉他教学视频中的 TAB 谱区域提取出来,并生成一份干净的 PDF 文档。该工具利用 Claude 视觉模型(Claude Vision)识别谱区域、去重,并自动排版,无需任何手动配置即可使用。

核心内容

该工具是一个命令行程序,工作流程如下:

  1. 下载视频 – 使用 yt-dlp 下载 YouTube 视频,可通过 --max-height 参数限制下载分辨率(默认 720p)。
  2. 采样帧 – 使用 ffmpeg 按指定间隔(--interval,默认 2 秒)提取帧图像。
  3. 检测谱区域 – 在若干采样帧(--sample,默认 6 帧)上绘制一组水平条带标签,然后调用 Claude Vision 模型(默认模型 claude-sonnet-5)识别哪些条带包含乐谱内容。取所有采样帧中识别出的第一条和最后一条音乐条带的中位数(对离群值鲁棒),确定垂直范围;宽度保持全幅。该做法比直接要求视觉模型给出精确像素坐标更可靠。
  4. 裁剪 – 使用 sharp 库将所有帧裁剪到上述区域。
  5. 预去重 – 计算每帧的 dHash 感知哈希,丢弃哈希距离过小(--dedup-threshold,默认 12)的连续帧,以减少后续视觉模型调用成本。
  6. 小节号去重 – 对剩余帧,用 Claude Vision 读取每行乐谱开头印刷的小节号(measure/bar number),并判断该帧是否是真正的谱面。对于每个不同的小节号,只保留第一次出现的帧;同时丢弃非谱面帧(如标题卡、片头/片尾)。由于播放光标扫过一行时小节号不变,只有换行时才改变,该方法能将一行中所有近乎相同的光标帧折叠为一张页面。
  7. 生成 PDF – 使用 pdf-lib 将所有去重后的谱线按视频中出现顺序垂直拼接在 A4 页面上;若超出页高则自动分页。视频标题(从 yt-dlp 读取)用作文件名、PDF 首页的标题以及文档元数据中的标题。输出文件为 out/<video-title>.pdf

安装与使用(取自原文):

npm install
npm run build
cp .env.example .env   # 填入你的 ANTHROPIC_API_KEY
node --env-file=.env dist/cli.js "https://www.youtube.com/watch?v=WgU5tDGC-Vc"

ANTHROPIC_API_KEY 已导出环境变量,也可直接运行:

export ANTHROPIC_API_KEY=sk-ant-...
node dist/cli.js "https://www.youtube.com/watch?v=WgU5tDGC-Vc"

开发时跳过编译步骤:

node --env-file=.env --import tsx src/cli.ts "<url>"

可用参数

  • -i, --interval <seconds>:截图间隔(默认 2
  • --model <id>:Claude 视觉模型 ID(默认 claude-sonnet-5
  • --sample <n>:用于检测谱区域的采样帧数(默认 6
  • --dedup-threshold <n>:预去重时使用的汉明距离阈值,用于成本控制(默认 12
  • --max-height <px>:限制下载分辨率(默认 720
  • --keep-temp:保留中间帧和裁剪结果(用于调试)

工具的输出路径会打印到 stdout,进度信息输出到 stderr。一切都有合理的默认值,通常只需要提供视频 URL 即可。

关键要点

  • 该工具是一个完全无配置的 CLI,只需 YouTube 链接和有效的 Anthropic API Key。
  • 核心思路是借助 Claude Vision 进行粗粒度定位(识别乐谱所在的水平条带),而非精确像素坐标,大幅提高了可靠性。
  • 去重策略分两级:先基于 dHash 感知哈希快速过滤连续相似帧(成本控制),再基于小节号使用 Claude Vision 进行语义去重,确保每行谱只保留一帧。
  • 小节号去重利用了吉他谱每行开头印刷的固定数字,避免了播放光标移动造成的重复帧。
  • 输出 PDF 包含视频标题作为首页标题和文档元数据,谱线按视频顺序垂直排列,支持自动分页。
  • 工具使用 yt-dlp 下载视频,ffmpeg 提帧,sharp 裁剪,pdf-lib 生成 PDF;内部无需要用户额外安装其他系统依赖(但确保 yt-dlpffmpeg 已安装在 PATH 中)。
  • 可通过参数灵活调整采样间隔、检测帧数、汉明距离阈值、模型 ID 和分辨率上限。

意义与影响

  • 降低吉他学习门槛:学习者不再需要手动抄谱或依赖他人扒谱,直接提供视频链接即可获得可打印的乐谱,尤其适合那些需要离线练习或喜欢纸质谱的乐手。
  • 展示视觉语言模型在特定领域的高效应用:不同于通用 OCR 或图像分割方法,该项目巧妙利用 Claude Vision 的语义理解能力,结合简单的条带标签设计,在低成本下解决了乐谱区域检测问题。这种“粗定位 + 语义去重”的架构为其他视频内容提取任务(如 PPT 录制、代码演示、乐谱)提供了参考。
  • 开源生态贡献:项目代码已公开,其他开发者可以在此基础上扩展支持更多类型的乐谱(如五线谱、和弦图),或集成到更大型的学习平台中。
  • 可能的应用场景:类似方法可以推广
查看原文 →github.com