最近做了一个音乐相关的 Web 工具,ChordFold 。 地址: https://chordfold.com/ 主要功能是:用户选择一段 MP3 或 WAV 音频,AI 自动识别里面的和弦,以及和弦随时间的变化。 和一些需要上传音频到服务器的识别服务不同,我选择了浏览器本地推理的方案。 目前的技术方案: 使用 BTC 系列和弦识别模型 模型转换为 ONNX 格式 通过 ONNX Runtime Web 在浏览器里执行 WASM 推理 对音频进行解码和 CQT 特征提取 模型预测后对结果进行平滑,生成和弦时间轴 用户侧的操作流程也比较简单: 选择本地音频文件 首次使用时下载识别模型 在浏览器本地分析音频 得到按时间排列的和弦结果 点击时间轴上的和弦,可以跳到对应位置回听 可以切换查看支持的吉他和弦指法图、钢琴音符参考 目前限制音频最大 14MB 、最长 10 分钟。 选择本地推理主要有几个考虑: 第一,音频不需要上传服务器,相对更有隐私优势。 第二,不需要为每个用户的识别请求支付云端 GPU 推理费用...