madderscientist/noteDigger
在线前端频谱分析扒谱 front-end music transcription
noteDigger – 前端音频转MIDI工具
功能说明
- 一个纯JavaScript网页应用,支持上传音频(或视频)文件,可视化其频谱图,并手动或自动提取音乐音符。
- 提取的音符可通过丰富的鼠标/键盘快捷键进行编辑,然后导出为标准MIDI文件,或保存为可后续继续编辑的自定义二进制“.nd”项目文件。
为何重要
- 大多数音频转MIDI工具是重量级桌面程序或云端服务。noteDigger 完全在浏览器中运行,无需外部库或框架,因此体积极小(仅几MB),但仍提供高级功能,如GPU加速的STFT/CQT、基于神经网络的转录、以及谐波去除。
- 通过将整个工作流保留在客户端,保护用户隐私(音频从不离开本地设备),并在初始页面加载后支持离线使用。
核心功能(详见README)
| 功能 | 工作方式 / 提供内容 |
|---|---|
| 音频导入 | 支持拖拽或文件菜单上传MP3、WAV,甚至视频文件(MP4、MOV等)。 |
| 频谱图分析 | 实时STFT;可选CQT(恒Q变换),可通过WebGPU实现GPU加速。 |
| 自动处理 | • 使用NNLS(非负最小二乘法)进行谐波去除,以增强基频。 • 使用传统信号处理算法进行节拍追踪与速度检测。 • 使用两个ONNX模型进行AI辅助转录:basicamt(与乐器无关的音高转录)和 septimbre(乐器分离转录)。 |
| 手动编辑 | 可在时间-频率画布上直接绘制音符;支持移动、拉伸、复制/粘贴、删除、锁定轨道。所有常见快捷键(Ctrl-Z/Y、Ctrl-C/X/V等)均受支持。 |
| 量化与对齐 | 两种导出模式:(1) 保留原始音符位置(秒)以实现“边听边画”工作流;(2) 根据用户设定的精度x量化到音乐节拍单位,支持按小节设置BPM变化。 |
| MIDI导入/导出 | 可导出为标准MIDI(类型1,多轨),支持自定义速度和量化。可导入现有MIDI文件;音符将映射到轨道,速度默认为127。 |
| 项目保存 | 二进制“.nd”文件保存频谱图、音符、轨道和小节信息,便于后续重新打开。 |
| 用户界面 | 现代化、无框架UI,支持轨道拖拽、右键上下文菜单、钢琴卷帘视图,以及顶部工具栏用于切换工具(如节拍对齐、小节对齐)。 |
| 性能优化技巧 | 降低重绘频率,用户任意操作后统一刷新,以及使用“tinySynth”JavaScript合成器实时播放编辑后的音符。 |
典型工作流程(来自README摘要)
- 在现代浏览器(推荐Chrome)中打开应用。
- 上传音频文件并选择分析方法(STFT或CQT;如有GPU则启用)。
- 运行可选自动步骤:节拍检测 → 谐波去除 → 调性检测。
- 点击“AI转录”按钮(“人工智障扒谱”)生成初始音符图谱。
- 手动优化结果:将音符对齐节拍、合并小节、锁定轨道等。
- 将最终结果导出为MIDI文件(量化用于乐谱)或保存项目以供后续编辑。
技术亮点
- WebGPU加速CQT – 即使在集成显卡上也能显著提升恒Q变换速度。
- 浏览器内ONNX Runtime – 无需服务器即可运行两个预训练神经网络,实现音高转录与乐器分离。
- 非负最小二乘法(NNLS) – 经典优化方法,用于减去谐波成分并突出基频。
- 纯JS架构 – 无React/Vue等框架;所有UI组件均为手写JS类,保持打包体积极小。
适用人群
- 希望快速、私密地从录音中提取音符的音乐人。
- 在浏览器中探索音频信号处理的教育者或学生。
- 寻找客户端频谱图可视化、基于WebGPU的CQT或JavaScript中ONNX推理参考实现的开发者。
试用方式
- 在线演示: https://maddersscientist.github.io/noteDigger/
- 视频教程(中文): https://www.bilibili.com/video/BV1LFRmBcEEU
以上所有信息均直接来自仓库的README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- Dispatch
- Dispatch