【问题标题】:Real-time pitch detection using FFT [closed]使用 FFT 进行实时音高检测
【发布时间】:2010-11-30 19:39:05
【问题描述】:

我正在尝试使用 C++ 进行实时音高检测。我正在测试一些来自 performous (http://performous.org/) 的代码,因为其他一切都对我不起作用。我肯定知道这行得通,但我就是不能让它工作。我已经尝试了几个星期,但我无法让任何音高检测代码正常工作。

【问题讨论】:

  • “不能上班”的意思是??? (不会编译?不会运行?把你的电脑变成一团火焰?)
  • 它可以编译,但输出频率从 0 到大约 1024
  • 看看FMOD library。他们的样本之一进行实时音高检测 IIRC。该库对开源免费,对商业应用价格适中。即使您不想使用该库,也许它会提供一些见解。
  • 那有什么问题?中间 C 为 440 Hz,因此如果对您的麦克风进行采样,该范围似乎是合理的。您期望的频率是多少?

标签: c++ audio signal-processing fft pitch-tracking


【解决方案1】:

您应该创建已知单一频率的数据,并通过程序运行它,看看它是否能得到正确的结果,而不是使用来自麦克风的输入。然后你可以给它添加谐波,看看它是否有效。真实世界的数据对于初始测试来说变化太大。

【讨论】:

    【解决方案2】:

    Performous 音频代码具有一些优化、频率限制和启发式方法,使其仅适用于唱歌(和其他类似音调)。最佳范围约为 80-600 Hz。

    【讨论】:

      【解决方案3】:

      C/C++/Obj-C Real-time algorithm to ascertain Note (not Pitch) from Vocal Input

      在此链接上检查接受的答案。

      我已经搜索了这个问题的答案,这是我找到的最有用的资源。

      Performous 似乎使用了这种算法,但很难从 Performous 代码中分辨出来

      编辑:我终于找到了一个可行的解决方案。如果有兴趣给我发电子邮件 sunfish|gmail|c0m

      【讨论】:

      • 你能告诉我oyu是怎么解决的吗?
      猜你喜欢
      • 1970-01-01
      • 2011-09-23
      • 2011-01-15
      • 1970-01-01
      • 2012-05-09
      • 2010-11-24
      • 2023-03-19
      • 2011-05-28
      • 2011-05-13
      相关资源
      最近更新 更多