考虑到使用的 SoundFont,是否有可能尽可能准确地将音频分解为 MIDI?

Is it possible to, as accurately as possible, decompose an audio into MIDI, given the SoundFont that was used?

如果我知道 MIDI 到音轨使用的 SoundFont,理论上我可以将音频反转回它的(很可能)MIDI 组件吗?如果是这样,执行此操作的最佳方法之一是什么?

最终目标是尝试将音频(甚至语音样本)编码为 MIDI,这样我就可以比 BearFileConverter 更好地再现 MIDI 格式的原始音频。希望得到比带通滤波器或 FFT 更好的结果。

不,这不是针对任何有损音频压缩或 sheet 转录,这主要是出于我的好奇心。

仅适用于单声道音乐,没有背景音,并且如果您的 SoundFont 合成引擎和您的录音采样率完全匹配(同步到 1ppm 或更高,没有额外的效果,也都使用已知的 A440 参考频率,已知语调等),那么您可以尝试使用您录制的音频的一组互相关与一组合成波形样本在每个 MIDI 音高上从您的先验已知字体创建每个 MIDI 的统计可能性的时间线笔记。在您的音高范围、阈值和峰值选择中找到局部最大值,以找到最可能的 MIDI 音符开始时间。

另一种可能性是滑动声音指纹识别,但计算成本更高。

由于不完全匹配的采样率加上噪声、扬声器和房间声学效果、多路径混响等,这在现实生活中失败了。对于与其自身非常相似的音符波形,您可能还会得到误报泛音。语音样本与任何模板的差异更大。

忘掉带通滤波器或寻找 FFT 幅度峰值,因为这仅适用于接近纯正弦波的可靠工作,很少有乐器或有趣的字体听起来像(或一样无聊)。