【问题标题】:Extract pitch of wav file in C在C中提取wav文件的音高
【发布时间】:2013-10-29 20:20:03
【问题描述】:

我正在尝试提取 wav 文件(音乐)的每一帧的音高。我正在使用 libsnd 来读取 wav 文件。我也愿意使用其他库

我做了一些研究,发现我们可以使用零食库编写一个脚本来使用 wavsurfer 提取音高文件。 Snack 库在 C (link) 中可用,但我认为我们无法从该库中提取音高。

我的最终目标是将这个库移植到 android。所以如果有一个已经移植到android的库,那将是非常有用的

【问题讨论】:

    标签: android audio signal-processing pitch


    【解决方案1】:

    snack manual 的快速浏览看来,您将使用声音对象的pitch 方法来提取音高信息。我不知道小吃是否已移植到 Android。如果没有,您需要为此付出一些巨大的努力。自己实现pitch detection algorithm 可能要容易得多。 Snack 的 pitch 方法被记录为使用AMDF

    当在黑暗的过去构建一个 DTMF(又名按键音)检测器时,我相信我们对样本数据包使用了 FFT 并对结果进行分箱,以寻找与音调频率中心相近的匹配。但 DTMF 的设计初衷就是易于检测。

    音乐转录很可能完全是另一种动物,很容易被器乐的和声内容混淆。

    【讨论】:

      【解决方案2】:

      aubio 实现了几个音高估计算法。它主要是纯 C 代码,因此移植到其他 OS/CPU 是微不足道的,只要您不关心性能。

      还可以查看Sonic Visualizer。它可视化了许多音频功能。

      【讨论】:

      • aubio 不是很准确。 pYIN 在这方面做得更好。最简单的方法:从 soundsoftware 获取 pYIN,并使用 VAMP SDK 中提供的 vamp-simple-host 作为起点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2010-11-15
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多