尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

3分钟搞定音频转MIDI:Basic Pitch智能转录工具实战全指南

3分钟搞定音频转MIDI:Basic Pitch智能转录工具实战全指南 3分钟搞定音频转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——一个由 Spotify 音频智能实验室开源的音频转MIDI工具轻量、免费还自带音高弯曲检测一首歌从导入到导出MIDI前后不到三分钟。它能为你解决什么旧痛新解过去把音频变成MIDI是件让人血压飙升的事痛点一单音限定。老式转录器遇到和弦直接投降一个音一个音地蹦复杂的和声根本无从下手。痛点二滑音丢失。吉他推弦、弦乐滑奏这类连续音高变化传统工具要么忽略要么转成一段段生硬的半音阶。痛点三模型臃肿。不少专业转录系统需要庞大的模型和高配硬件普通笔记本跑起来又慢又烫。Basic Pitch 给出的解法截然不同——它走的是小而精的路线老问题新方案只能转单音支持多音高检测和弦、复调照单全收弯音被抹平内置音高弯曲检测滑音、推弦细节完整保留挑乐器、挑音色与乐器无关吉他、钢琴、人声通吃单乐器表现最佳依赖重型算力模型仅十几兆CPU 上跑得飞快换句话说它把过去专业工作室才有的转录能力压缩成了一个普通人也能随手用的工具。相关的技术原理发表在 ICASSP 2022 会议上论文题为《A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation》想深究的读者可以去翻。快速上手从零到第一份MIDI第一步检查环境Basic Pitch 对系统相当友好macOS、Windows、Ubuntu 都支持Python 3.7 到 3.11 均可。唯一的坑是Mac M1 芯片目前只认 Python 3.10其他版本请用虚拟机兜底。第二步安装装起来几乎不费力气一条命令就完事pip install basic-pitch如果你以后想升级补上--upgrade参数即可。想从源码折腾的朋友也可以把仓库 clone 下来本地安装git clone https://gitcode.com/gh_mirrors/ba/basic-pitch cd basic-pitch pip install -e . 关于模型运行时Basic Pitch 默认不会强制安装 TensorFlow。Linux 默认配 TensorFlowLitemacOS 默认配 CoreMLWindows 默认配 ONNX。需要 TensorFlow 的话用pip install basic-pitch[tf]单独加装。第三步跑出第一条命令安装完成后终端里输入下面的格式指定一个输出目录和一个音频文件basic-pitch 输出目录 音频文件比如basic-pitch ./midi_out ./samples/echoes.flac稍等片刻你会看到程序打印出一串 ✨ 花字提示随后midi_out/目录里就出现了echoes_basic_pitch.mid——你的第一份转录成果诞生了。一次完整的实战演练把一段钢琴独奏变成MIDI假设你现在有一份piano_sketch.mp3想转成可编辑的MIDI。跟着下面的步骤走第 1 步准备干净的输入。优先用单乐器、无背景噪音的录音。多乐器混音不是不能转但效果会打折扣——记住它的脾气一次只伺候一件乐器。第 2 步限定频率范围。钢琴的音域大约从 27.5 Hz最低键A0到 4186 Hz最高键C8但人耳能听清、模型最擅长的核心区在 50~2000 Hz。转钢琴时不妨显式指定范围减少杂讯basic-pitch --minimum-frequency 50 --maximum-frequency 2000 ./midi_out ./piano_sketch.mp3第 3 步带上附加产物。想同时拿到原始模型输出和音符事件表方便回头分析就追加两个开关basic-pitch --save-model-outputs --save-note-events ./midi_out ./piano_sketch.mp3第 4 步检查结果。此时midi_out/下会多出三类文件piano_sketch_basic_pitch.mid——标准的 MIDI 文件拖进任何 DAWLogic Pro、Ableton Live、FL Studio都能打开piano_sketch_basic_pitch.npz——模型三层输出音符、起始点、音高轮廓的原始数据适合做研究分析piano_sketch_basic_pitch.csv——逐条音符事件包含起止时间、音高、力度和弯音值可以直接用 Excel 打开。第 5 步导入DAW微调。把 MIDI 拉进工程量化、改力度、换音色随你发挥。整个流程熟练后3 分钟绰绰有余。如果你更习惯写 Python 代码而不是敲命令行basic_pitch/inference.py里提供了现成的函数from basic_pitch.inference import predict from basic_pitch import ICASSP_2022_MODEL_PATH model_output, midi_data, note_events predict(piano_sketch.mp3) midi_data.write(piano_sketch.mid)批量处理多个文件时建议先把模型加载一次、在循环里复用避免反复加载拖慢速度from basic_pitch.inference import predict, Model from basic_pitch import ICASSP_2022_MODEL_PATH model Model(ICASSP_2022_MODEL_PATH) for f in [a.mp3, b.mp3, c.mp3]: _, midi_data, _ predict(f, model) midi_data.write(f.replace(.mp3, .mid))核心参数深度讲解调到最合适的音准转录质量好不好参数占一半。Basic Pitch 的 CLI 参数集中在basic_pitch/predict.py中定义下面是几个决定成败的关键旋钮。阈值三件套模型对每一帧音频都会输出这里是起始点/这里在延续/这里是某个音高的置信度阈值就是过滤低置信度的闸门参数默认值作用调低效果调高效果--onset-threshold0.5判定音符开始的最低置信度更容易捕捉轻柔的起音但也更易误报起音更干净弱音可能漏掉--frame-threshold0.3判定音符持续的最低置信度适合连奏、长音多的曲子音符更短促断奏感强--minimum-note-length127.7ms过滤掉过短的音符保留装饰音过滤碎音谱面更整洁实践建议录音偏柔、气声多就把--onset-threshold降到 0.4想消除一堆几毫秒的杂音把--minimum-note-length提到 150~200ms。频率与弯音--minimum-frequency/--maximum-frequency以 Hz 为单位裁剪音域。吉他solo大致在 82~880 Hz人声旋律在 80~1000 Hz 附近对着乐器的真实音域设限能显著提升准确率。--multiple-pitch-bends默认情况下重叠音符共享一条弯音信息加上这个开关后每个音高会被映射到独立的 MIDI 轨道各自拥有独立的弯音曲线——处理复杂滑音时非常有用代价是 MIDI 文件里会出现多个音轨。--no-melodia跳过 Melodia 后处理步骤。这个步骤能提升旋律线的平滑度但会增加耗时追求速度时可以关掉代价是精度可能略降。输出相关--sonify-midi额外生成一份 MIDI 的 WAV 试听文件方便不用 DAW 也能直接对答案。--midi-tempo默认 120 BPM决定 MIDI 播放时的节拍速度。--sonification-samplerate试听 WAV 的采样率默认 44100 Hz一般不用动。--debug-file写入一份调试 JSON内含窗口切分、各层输出和最终音符估计排查问题的一把利器。另外模型格式可以手动指定四种运行时各有千秋# 手动指定模型格式 basic-pitch --model-serialization tf ./midi_out ./a.wav basic-pitch --model-serialization coreml ./midi_out ./a.wav basic-pitch --model-serialization onnx ./midi_out ./a.wav basic-pitch --model-serialization tflite ./midi_out ./a.wav格式加载优先级适用场景TensorFlow第一顺位功能最完整桌面研究首选CoreML第二顺位macOS/iOS 生态TensorFlowLite第三顺位移动端、低资源设备ONNX第四顺位跨平台部署模型文件就放在basic_pitch/saved_models/icassp_2022/目录下四种格式一应俱全。进阶玩法和真实工作流的三种结合场景一批量整理旧录音素材手头有一堆 WAV/MP3 老录音要归档成 MIDI命令行天然支持多文件basic-pitch --save-note-events ./archive ./tape1.wav ./tape2.mp3 ./tape3.flac一次投喂多个文件程序逐个处理再配合 CSV 音符事件你可以快速给每段素材做内容摘要建一个可检索的音符级索引库。场景二音乐教学中的乐谱还原老师想让学生练习某段示范音频的旋律可以用频率限制把人声或乐器分离出来先转录再导出 CSV 统计音高分布、节奏特征把听写变成对照。核心步骤就是前面实战演练里的三件套命令配合--save-note-events输出分析起来相当顺手。场景三嵌入自己的Python工具链如果你在写一个音频→乐谱→自动伴奏的小程序predict()返回的三样东西正好够用model_output是原始三层输出basic_pitch/note_creation.py里的model_output_to_notes()可以继续深加工midi_data是可直接落盘的 PrettyMIDI 对象note_events是逐音符数据。批量场景记得复用Model实例否则每次调用都要重载模型慢得让人抓狂。踩坑与排查手册症状一报错 not a file path / does not exist诊断输入路径写错或文件不在指定位置。药方检查路径拼写和引号把音频和输出目录都换成绝对路径再试。注意输出目录必须提前创建好。症状二提示 already exists and would be overwritten诊断输出目录里已经有同名文件工具拒绝覆盖。药方换个输出目录或先手动清掉旧文件记得别用危险命令手动在文件管理器里删即可。症状三模型加载失败 / 找不到运行时诊断当前环境缺少对应模型格式的推理库。药方按需补装——TensorFlow 用pip install basic-pitch[tf]CoreML 用pip install basic-pitch[coreml]ONNX 用pip install basic-pitch[onnx]实在不行就pip install basic-pitch --force-reinstall整体重来一遍。症状四转录结果杂音多、错音多诊断大概率是输入太脏或参数没卡好。药方优先换更清晰的单乐器录音再依次尝试收紧--onset-threshold、提高--minimum-note-length、用--minimum-frequency/--maximum-frequency锁死音域。这三板斧能解决大部分糊的问题。症状五处理大文件很慢诊断模型内部按 2 秒窗口滑动处理音频文件越长耗时越线性上升Melodia 后处理也吃时间。药方加--no-melodia跳过平滑步骤把长音频先切成若干段分批转录磁盘空间不足时优先处理更短的片段。总结与行动清单至此你应该明白了Basic Pitch 是个麻雀虽小五脏俱全的音频转MIDI神器——多音高、弯音、乐器无关三大看家本领齐活安装只要一条命令四种模型格式随取随用还能用几个阈值参数把精度调到舒服的位置。它可能不是功能最花哨的转录器但绝对是最容易上手的那一个。现在就可以动手的四件事装起来跑一次pip install basic-pitch然后拿你手机里随便一段录音试转。调一遍参数用--onset-threshold、--frame-threshold、--minimum-note-length各转一遍同一段音频对比差异建立手感。写个小脚本调用predict()把你的音频目录批量转成 MIDI顺便用--save-note-events生成 CSV 分析报告。深入源码读一读basic_pitch/inference.py推理管线、basic_pitch/note_creation.py音符合成、basic_pitch/predict.py命令行入口再对照tests/目录下的测试用例理解行为你就能把它改造成自己的转录工具箱。资源参考官方文档README.md命令行入口basic_pitch/predict.py推理与保存逻辑basic_pitch/inference.py音符事件与MIDI生成basic_pitch/note_creation.py模型文件目录basic_pitch/saved_models/icassp_2022/测试用例tests/【免费下载链接】basic-pitchA lightweight yet powerful audio-to-MIDI converter with pitch bend detection项目地址: https://gitcode.com/gh_mirrors/ba/basic-pitch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表