资讯动态

如何把人声快速变成精确的 MIDI 序列?开源歌唱音频MIDI提取工具 SOME 全攻略

发布时间:2026/8/18 15:08:06 来源:尧图企业网站定制
如何把人声快速变成精确的 MIDI 序列开源歌唱音频MIDI提取工具 SOME 全攻略【免费下载链接】SOMESOME: Singing-Oriented MIDI Extractor.项目地址: https://gitcode.com/gh_mirrors/so/SOME凌晨一点半实验室的灯还亮着。小周盯着屏幕上一段三分钟的人声干声手里刚生成一份音高标注里面密密麻麻的音符参数怎么看怎么别扭——某个长音被硬切成了三段颤音处标得忽高忽低。这是她做 DiffSinger 音源的第三周每天有一半时间耗在跟音准较劲上。如果把这段人声交给一台会听歌的程序让它自动吐出规整的 MIDI 序列是不是就不用熬夜了答案藏在今天的主角里——SOMESinging-Oriented MIDI Extractor一个专门面向歌唱音频的 MIDI 提取工具。它能把人声干声直接转成带音高信息的 MIDI 序列全程自动还能给出非整数的精确音高值。下面这套完整攻略从它凭什么能行讲到三分钟跑通再讲到哪些坑我替你踩过一次说透。一、先看懂对比SOME 与通用音高检测差在哪很多人第一次听说 SOME 都会问市面上的音高检测工具那么多为什么还要专门做一个歌唱音频MIDI提取项目问得好。通用音高检测工具擅长画音高曲线输出一串连续频率数值但拿不到哪个音从哪一秒开始、持续多久、该记成什么音名这种乐谱级信息。SOME 做的事更接近听写把一段唱出来的旋律整理成一条条规整的 MIDI 音符。维度通用音高检测工具SOME输出形态逐帧频率曲线带起止时间的 MIDI 音符序列音高精度通常取整到半音支持非整数 MIDI 值精度约 0.1 个半音训练数据需求往往需要大规模语料约 3 小时自定义歌唱数据即可出效果处理速度一般i5 12400 CPU 上约 9 倍于实时3080Ti GPU 上约 300 倍典型用途可视化、修音参考DiffSinger 音高标注、MIDI 转写一句话总结它不是告诉你音有多高而是直接把歌唱转成可以交给合成器的 MIDI。二、5 步完成环境搭建照着清单打勾就行别被搭建环境四个字吓到整个过程就是照着一张清单打勾。SOME 要求 Python 3.8 及以上强烈建议先在独立虚拟环境里操作免得污染你机器上其他项目的依赖。创建虚拟环境conda create -n some python3.8或python -m venv some然后激活它。这一步是为了隔离依赖出了问题删掉重建就行不心疼。安装 PyTorch 2.1到 PyTorch 官网按你的系统和显卡选对应的安装命令比如 Linux CUDA 环境一行 pip 指令就能装好。安装项目依赖把仓库克隆到本地后在项目根目录执行pip install -r requirements.txt。可选但推荐配置 RMVPE 模型下载 RMVPE 预训练模型解压到项目的pretrained/目录。它能明显提升音高提取的准确性属于花两分钟换更好效果的买卖。下载 SOME 预训练模型从官方 release 里拿到 .ckpt 模型文件放到任意目录推理时用--model指向它即可。三、三分钟上手人声转 MIDI 的三种打开方式环境就绪模型在手接下来就是见证奇迹的时刻。我们按三种常见用法一步步来。第 1 步单文件提取一行命令出 MIDIpython infer.py --model 模型路径/model.ckpt --wav 你的音频.wav命令结束后SOME 会在 wav 同目录自动生成同名 .mid 文件。想自定义输出路径或拍速用--midi指定输出文件用--tempo指定 MIDI 里的 BPM默认 120。更多参数随时敲python infer.py --help查看。第 2 步批量处理 DiffSinger 数据集如果你手头是一个现成的 DiffSinger 数据集含 transcriptions.csv字段为 name、ph_seq、ph_dur、ph_num批量标注只需要一句话python batch_infer.py --model 模型路径/model.ckpt --dataset 数据集目录 --overwrite⚠️ 这里有个必须说三遍的提醒--overwrite会直接覆盖数据集里的 transcriptions.csv往里写入 note_seq 和 note_dur。动手前一定先把原文件备份万一效果不理想你还有后悔药吃。另外--round_midi开关可以把音高取整成标准整数 MIDI需要传统 MIDI 时再启用它。第 3 步图形界面点点鼠标就出结果不喜欢命令行没问题。SOME 自带基于 Gradio 的 Web 界面跑起来后在浏览器里选模型、传音频、看结果全程零代码python webui.py --work_dir 模型存放目录它会自动扫描工作目录下的模型你在下拉框里选一个上传 wav点击生成MIDI 就到手了。四、避坑指南歌唱音高提取路上的翻车现场用 SOME 的过程中我踩过不少坑也围观过别人踩坑。整理成翻车现场 × 解决方案你直接对照着查。翻车①上传 MP3结果报错或输出诡异SOME 的核心链路围绕 WAV 设计。别硬刚先用 ffmpeg 之类的工具把音频转成 WAV——干净的单声道、44.1kHz 或 48kHz 采样率最稳妥。翻车②合唱、和声一起上提取结果一团乱麻SOME 主要针对单声部歌唱优化。遇到多声部先做声源分离把主唱单独拎出来再喂给它效果立刻不一样。翻车③批量处理完想后悔发现原 CSV 没了这正是第 2 步反复强调备份的原因。批量前先复制一份 transcriptions.csv 到别处养成习惯稳赚不赔。翻车④自己训练怎么练都不见好先检查数据质量。SOME 对数据量很友好约 3 小时即可但对质量毫不客气底噪、喷麦、混响过重的录音会直接拖累效果。记住音频干净比数量大更重要。翻车⑤想要整数 MIDI却拿到一堆小数这不是 bug是特性。SOME 默认输出非整数 MIDI 值正是为了 DiffSinger 这类需要精细变调标注的场景。若你确实需要标准整数 MIDI批量处理时加--round_midi即可。五、场景速查表谁适合用它、怎么用你是……推荐用法收获DiffSinger / 歌声合成开发者batch_infer.py 批量标注数据集一键生成精确音高标注告别手动标注的漫漫长夜音乐教育工作者infer.py 分析学生录音快速得到音高参考辅助音准教学作曲 / 编曲人infer.py 转写哼唱片段把灵感哼唱变成 MIDI 素材进 DAW 继续创作AI 音乐研究者train.py configs/ 自定义训练用约 3 小时数据训练自己的模型探索端到端音高建模业余爱好者webui.py 图形界面零命令行负担轻松玩转人声转 MIDI想自己训练模型的话训练入口在train.py任务逻辑在training/数据预处理在preprocessing/配置模板在configs/base、continuous、discrete、midi_conformer、two_head_model 等 yaml 都可参考。官方也提示训练脚本尚在整理中追求稳定可以等后续正式版。六、写在最后从熬夜标注到十分钟收工还记得开头那个熬夜的小周吗用上 SOME 之后她的一天变成这样上午用 batch_infer 把整批数据标注完下午抽查几条结果晚上还能早睡。工具解决的从来不是努力而是把力气花在对的地方。SOME 团队还在持续迭代方向上大致包括更准的神经网络结构、更广的音频格式兼容、更快的推理速度以及更多语言与歌唱风格的适配。作为开源项目它的想象力取决于社区里每一个使用者——包括正在读这篇文章的你。项目信息卡片项目名SOMESinging-Oriented MIDI Extractor一句话定位面向歌唱音频的 MIDI 提取器把歌声转成 MIDI 序列许可证MIT可自由使用、修改与分发商用也没问题上手方式git clone https://gitcode.com/gh_mirrors/so/SOME然后按上文清单完成环境搭建适合人群DiffSinger 开发者、音乐制作人、AI 音乐研究者、音准教学工作者从今晚开始不妨找一段你喜欢的歌唱音频试试看。三分钟之后你会拿到第一份属于自己的 MIDI 序列——那种原来这么简单的感觉值得亲身体验一次。【免费下载链接】SOMESOME: Singing-Oriented MIDI Extractor.项目地址: https://gitcode.com/gh_mirrors/so/SOME创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价