我正在尝试提取 wav 文件(音乐)的每一帧的音高。我正在使用libsnd来读取 wav 文件。我也愿意使用其他库
我做了一些研究,发现我们可以使用零食库编写一个脚本来使用 wavsurfer 提取音高文件。小吃库在 C (链接) 中可用,但我认为我们不能从该库中提取音调。
我的最终目标是将这个库移植到 android。所以如果有一个已经移植到android的库,它将非常有用
从小吃手册的快速浏览看来,您将使用pitch
声音对象的方法来提取音高信息。我不知道小吃是否已移植到 Android。如果没有,您需要为此付出一些巨大的努力。自己实现音高检测算法可能要容易得多。Snack 的 pitch 方法被记录为使用AMDF。
当在黑暗的过去构建一个 DTMF(又名按键音)检测器时,我相信我们对样本数据包使用了 FFT,并将结果分箱以寻找与音调频率中心接近的匹配。但是 DTMF 被设计为易于检测。
音乐转录可能完全是另一种动物,很容易被器乐的谐波内容混淆。
aubio实现了几个音高估计算法。它主要是纯 C 代码,所以移植到其他操作系统/CPU 是微不足道的,只要您不关心性能。
也看看Sonic Visualizer。它可视化了许多音频功能。