从音频到MIDI:Basic Pitch 使用全攻略,让滑音与和弦都能被“写“下来

发布时间:2026/8/17 22:34:26
从音频到MIDI:Basic Pitch 使用全攻略,让滑音与和弦都能被“写“下来 从音频到MIDIBasic Pitch 使用全攻略让滑音与和弦都能被写下来【免费下载链接】basic-pitchA lightweight yet powerful audio-to-MIDI converter with pitch bend detection项目地址: https://gitcode.com/gh_mirrors/ba/basic-pitch想要把一段吉他即兴、钢琴弹唱甚至人声哼唱变成可编辑的 MIDI 乐谱Basic Pitch正是为这件事而生的轻量级音频转 MIDI 工具。它由 Spotify 音频智能实验室打造能在短短一条命令内把 WAV、MP3 等常见音频转成带音高弯曲信息的 MIDI 文件。更难得的是它体型小巧、安装简单却支持多音高同时检测即使面对复杂的和弦也能从容应对。它到底解决了什么痛点传统的音频转 MIDI 方案常常让人头疼不少工具只能处理单音旋律遇到和弦就漏音转出来的 MIDI 死板生硬滑音、弯音这些演奏细节全部丢失重型模型动辄几个 GB对普通电脑不友好部署成本高。Basic Pitch 的定位正是小而强。它的模型经过 ICASSP 2022 论文验证在保持轻量的同时多音高检测精度和音符准确性足以比肩更大、更耗资源的系统。它不挑乐器吉他、钢琴、人声都能转录也不挑平台macOS、Windows、Linux 通吃。能力速览能力维度具体表现适合谁多音高转录同时识别多个音符和弦也能处理需要整段音乐转录的用户音高弯曲检测保留滑音、弯音等连续变化吉他手、弦乐演奏者乐器无关钢琴/吉他/人声均可用多乐器素材的整理者多格式输出MIDI、CSV 音符事件、NPZ 模型输出、WAV 预览制作人、研究者多运行时支持TensorFlow / CoreML / TFLite / ONNX 可选桌面、苹果生态、移动端开发者 需要说明Basic Pitch 在单一乐器的音频上表现最佳。混有多个乐器同时演奏的复杂混音转录效果会打折扣。环境搭建两条命令搞定首先确认你的 Python 版本在 3.83.11 之间然后安装# 安装最新发布版 pip install basic-pitch # 如需升级 pip install --upgrade basic-pitch依赖方面无需操心它会自动适配macOS 默认装 CoreML 运行时Linux 装 TFLiteWindows 装 ONNX只有 Python 3.11 及以上才会默认附带 TensorFlow。⚠️ 避坑提醒Mac M1 芯片目前只支持 Python 3.10其他版本请使用虚拟机或容器环境。如果你想用 TensorFlow 跑推理可以补装pip install basic-pitch[tf]第一次运行三步出结果第一步准备一份音频支持常见的.wav、.mp3、.flac、.ogg、.m4a。立体声文件会被自动合并为单声道处理采样率也会统一重采样到 22050 Hz你不需要做任何预处理。第二步执行转录命令先建好输出目录再运行mkdir -p midi_results basic-pitch midi_results audio/demo_guitar.wav命令格式就是输出目录 输入文件。首次运行会先加载模型稍等片刻终端就会出现完成提示。第三步查看产物打开midi_results/目录你会看到一个名为demo_guitar_basic_pitch.mid的文件。把它拖进任意 DAW如 Logic Pro、Cubase、FL Studio或打谱软件就能看到带音高弯曲的音符了。 默认情况下程序会自动跳过已存在的同名输出文件避免误覆盖。按场景调参把参数用在该用的地方与其单独背参数不如跟着场景走。场景一钢琴独奏转谱想要干净利落的音符钢琴触键清晰、音头明确可以适当提高起点检测门槛来过滤杂音basic-pitch --onset-threshold 0.55 --frame-threshold 0.35 \ --minimum-note-length 150 midi_results/ audio/piano_solo.wav--onset-threshold音符起始的判定灵敏度默认 0.5值越高越严格--frame-threshold音符延续的判定门槛默认 0.3--minimum-note-length过滤过短音符单位毫秒减少误报。场景二吉他滑音想保留每一处弯音吉他的推弦和滑音是转录难点Basic Pitch 的亮点就在于此basic-pitch --multiple-pitch-bends midi_results/ audio/guitar_riff.mp3开启--multiple-pitch-bends后重叠音符可以各自携带独立的音高弯曲数据每个音高会被映射到独立音轨这样滑音就能被完整保留下来。场景三人声旋律提取聚焦人耳可感的音区限制频率范围能大幅减少干扰basic-pitch --minimum-frequency 80 --maximum-frequency 900 \ --frame-threshold 0.35 midi_results/ audio/vocal.wav只保留 80900 Hz 的频段基本锁定了人声主旋律所在的区域。更进一步把转录能力写进你的程序命令行只是入口你完全可以把 Basic Pitch 嵌入自己的 Python 工作流。核心 API 只有两个from basic_pitch.inference import predict, predict_and_save from basic_pitch import ICASSP_2022_MODEL_PATH # 方式一拿结果继续处理 model_output, midi_data, note_events predict(audio/demo_guitar.wav) # 方式二直接存文件参数与命令行一一对应 predict_and_save( [audio/demo_guitar.wav], midi_results, save_midiTrue, sonify_midiTrue, # 额外生成 MIDI 的 WAV 试听 save_model_outputsTrue,# 保存原始模型输出 NPZ save_notesTrue, # 保存音符事件 CSV model_or_model_pathICASSP_2022_MODEL_PATH, )predict返回三样东西原始模型输出可用于深度分析、PrettyMIDI对象、以及音符事件列表含起止时间、音高、力度、弯音。批量处理时建议先加载好模型对象再循环调用避免反复加载拖慢速度。常见报错与排障现象可能原因解决方案模型加载失败缺少对应运行时依赖检查安装环境pip install basic-pitch[tf]/[coreml]/[onnx]输出的音符明显偏多阈值过低或音频含噪音调高--onset-threshold、--frame-threshold和弦/快速琶音丢失音符过短被过滤调小--minimum-note-length处理长音频很慢模型加载耗时、未利用硬件批量时复用模型对象大文件会被自动分窗处理输出含多余高频杂音频率范围未限制设置--minimum-frequency/--maximum-frequency 排查利器加上--debug-file debug.json可以把推理过程的窗口参数、中间输出全部记录下来定位问题更轻松。几个提升效率的小技巧批量转录一个命令传多个文件即可格式还能混搭basic-pitch midi_results/ audio/a.wav audio/b.mp3 audio/c.flac输出组合按需勾选需要完整分析包就用--save-midi --save-note-events --save-model-outputs只想快速试听就把 MIDI 转成 WAV用--sonify-midi。指定模型格式在苹果设备上可显式切换运行时basic-pitch --model-serialization coreml midi_results/ audio/demo.wav可选值为tf、coreml、tflite、onnx默认按 TensorFlow → CoreML → TFLite → ONNX 的顺序自动寻找可用模型。跳过 Melodia 后处理--no-melodia可加快速度但如果发现旋律线断裂建议还是保留默认行为。总结与下一步回顾一下你只需要记住三件事装好依赖pip install basic-pitch一行命令跑通流程basic-pitch 输出目录 音频文件默认出 MIDI按需调参钢琴干净、吉他保弯音、人声限频段场景决定参数。接下来建议你拿起手头最熟悉的一段乐器录音跑出第一份 MIDI然后对比原始音频和转录结果感受一下哪些参数对音色影响最大。想深入了解模型设计可以查阅项目中的核心模块源码basic_pitch/inference.py、basic_pitch/predict.py想了解社区动态欢迎关注项目仓库的更新与讨论。从一段录音到一份可编辑的乐谱Basic Pitch 让这件事变得足够简单也足够有趣。现在就动手试试吧【免费下载链接】basic-pitchA lightweight yet powerful audio-to-MIDI converter with pitch bend detection项目地址: https://gitcode.com/gh_mirrors/ba/basic-pitch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考