公司动态
音频转 MIDI 总翻车?我用 Basic Pitch 把一段即兴吉他变成了可编辑乐谱
音频转 MIDI 总翻车我用 Basic Pitch 把一段即兴吉他变成了可编辑乐谱【免费下载链接】basic-pitchA lightweight yet powerful audio-to-MIDI converter with pitch bend detection项目地址: https://gitcode.com/gh_mirrors/ba/basic-pitch晚上十一点我在客厅即兴弹了一段和弦进行顺手用手机录了下来。第二天想把它做成伴奏却发现连自己都忘了当时弹了什么。扒谱一个音一个音听太痛苦。就在我准备放弃时朋友扔给我一个叫Basic Pitch的开源工具——它能把任何音频直接转成 MIDI连滑音都保留。今天就把我从录音当夜到MIDI 到手的完整实践过程分享给你包含参数调优的干货和踩过的所有坑。一、先聊清楚它到底解决了什么难题市面上的音频转 MIDI 工具不少但大多有三个硬伤痛点传统工具的表现Basic Pitch 的做法多音符识别只能处理单音旋律一遇和弦就抓瞎支持多音高同时检测和弦照单全收音高变化滑音、弯音全被忽略谱面僵硬专门检测音高弯曲还原演奏细节乐器适配换一种乐器就失灵乐器无关吉他、钢琴、人声都能转它背后的模型来自 Spotify 音频智能实验室在 ICASSP 2022 发表了论文模型本身却非常轻量普通笔记本跑起来毫无压力。一句话总结这是一个小而能打的转录引擎专门解决扒谱难、转谱慢、和声丢的老大难问题。二、从零跑通第一次转换亲测 5 分钟搞定先别管那些花哨参数按下面这张清单走一遍你就能拿到人生第一份音频转 MIDI成果。第 1 步装环境需要 Python 3.7–3.11一条命令安装Mac M1 用户注意目前只支持 Python 3.10其他版本建议用虚拟机pip install basic-pitch想从源码折腾就克隆后以可编辑模式安装git clone https://gitcode.com/gh_mirrors/ba/basic-pitch cd basic-pitch pip install -e .第 2 步准备音频WAV、MP3、FLAC、M4A、OGG 都能喂给它。记住三个原则音源越干净越好、单乐器优先、先把人声和伴奏分离再转录。立体声也没关系模型会自动合并成单声道分析。第 3 步运行转换命令就一行——先写输出目录再写音频文件basic-pitch output_midi/ my_take.wav如果导入模型较慢TensorFlow 首次加载需要几秒属于正常现象。第 4 步检查输出转换完的目录里默认有.mid文件追加三个开关还能多拿三样东西--save-note-events把每个音符的起止时间、音高、力度导出成 CSV方便做数据分析--save-model-outputs保存模型的原始推理结果NPZ 格式供深度研究--sonify-midi把 MIDI 回放成一段 WAV方便直接对比转录后听起来像不像原曲第 5 步导入音乐软件把.mid拖进 Logic、Ableton、FL Studio 或 MuseScore 任意一款就能看到五线谱/钢琴卷帘窗开始编辑、量化、换音色。三、让结果更准三个参数调优技巧默认参数对大多数场景够用但能用和好用之间只差几次微调。技巧 1按音量调整起始点阈值场景轻柔的指弹独奏被转录得断断续续。解法降低起始点阈值默认 0.5让模型更敏感地捕捉微弱起音basic-pitch --onset-threshold 0.4 output_midi/ my_take.wav技巧 2按乐器限制频率范围场景钢琴转录混入了低音区的杂讯。解法用--minimum-frequency和--maximum-frequency框定音域比如只保留吉他主奏区82–880 Hz噪声和无关音轨瞬间被过滤。技巧 3砍掉细碎噪音音符场景结果里全是几十毫秒的短促杂音。解法把最小音符长度从默认的约 127ms 提高到 200msbasic-pitch --minimum-note-length 200 output_midi/ my_take.wav如果做了上面这些还不够准可以改用--model-serialization切换模型运行时——默认按 TensorFlow、CoreML、TFLite、ONNX 的顺序自动加载其中TensorFlow 版本精度最高有条件就优先用它。四、三个真实场景看看它有多能打场景 1给琴童做教学伴奏扒谱目标把教材示范音频转成可打印的谱子步骤独奏音频 → 限制 80–1000 Hz人声/乐器范围→ 导出 CSV 核对音符产出MIDI 音符事件 CSV注意示范音频常带伴奏务必先分离主奏音轨场景 2记录灵感即兴目标深夜灵光一现的哼唱/弹奏转天还能捡回来步骤手机录音 → 直接跑转换 → 深夜出片、白天精修产出MIDI 草稿可在 DAW 里继续润色注意环境噪音大时先降噪再转场景 3作品和声与旋律分析目标研究某首歌的进行走向步骤整曲转录 →--save-model-outputs存下原始输出 → 用 CSV 统计音符分布产出可量化的乐理数据注意复杂编曲混音效果差建议转单乐器分轨音频五、新手最容易踩的 5 个坑含解法音频糊成一团多乐器齐奏、底噪大 → 转录结果惨不忍睹。解法先分离音轨、去噪单乐器输入是它发挥最好的前提。参数一把梭阈值调太低结果全是幻听的音符调太高又漏掉真实音。解法小步试调听一段验证一段。缺模型依赖报错想用 TensorFlow 模型却没装对应依赖。解法pip install basic-pitch[tf]CoreML、ONNX 同理各自有对应的 extras。处理长音频卡顿整首半小时的专辑一口气跑磁盘和内存吃紧。解法分段处理或程序化调用时复用同一个已加载的模型对象源码在basic_pitch/inference.py的predict/predict_and_save。忽略 melodia 后处理为了提速关掉它--no-melodia结果旋律线残缺。解法默认开着就好真需要提速再权衡精度损失。六、写在最后你的下一步这一路走下来我最深的感受是Basic Pitch 把音频转 MIDI从技术活变成了家常事。和弦能识别、滑音能保留、还不用挑乐器几乎是为把声音变成可编辑的乐谱这件事量身定做的。接下来你可以先用自己手机里的一段录音跑通全流程感受下声音变乐谱的爽感再对着basic-pitch --help逐个试试参数找出适合你常用乐器的组合想深入研究的可以读读核心实现basic_pitch/models.py模型结构和basic_pitch/note_creation.py音符生成逻辑源码就躺在项目目录里等你翻别让灵感只在录音里吃灰打开终端试试你的第一段音频转 MIDI 吧。【免费下载链接】basic-pitchA lightweight yet powerful audio-to-MIDI converter with pitch bend detection项目地址: https://gitcode.com/gh_mirrors/ba/basic-pitch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考