【问题标题】:Finding Peak frequency in AudioRecord Android在 AudioRecord Android 中查找峰值频率
【发布时间】:2014-06-01 14:01:34
【问题描述】:

我需要连续识别 prek 频率。我试过FFTJTransform
但是我没有得到正确的频率并且它有很多噪音。我不知道如何纠正。我在谷歌上搜索过,不幸的是我没有找到合适的。
因此,如果您有任何其他确定峰值频率的工作示例。

请与我们分享,

谢谢。

【问题讨论】:

  • 也许这篇博文会有所帮助。它在 C 中,但有类似 java 代码的链接。 blog.bjornroche.com/2012/07/…
  • 你的测试输入是什么?你是如何计算频率的?你怎么知道结果不对?
  • 你的信号源是什么?您如何知道信号源的一个或多个峰值频率?什么有很多噪音,您的输入信号或频率分析的输出?
  • 我是来自this post

标签: android audio signal-processing fft android-audiorecord


【解决方案1】:

我仍然不确定您的输入信号是什么,或者您如何知道您从傅立叶分析和/或峰值检测器中得到了错误的峰值频率。

一般来说,要测试您的 FFT,您需要合成纯音,例如 32 Hz 余弦音。

当您使用 FFT 处理这种纯音时,您应该会得到一个 32 Hz 的单峰,如下所示:

要测试您的峰值检测代码,您需要将 32 Hz 音调衰减为半功率,并在 64 Hz 时添加另一个全功率纯音,如下所示:

当您使用 FFT 处理这两个谐波时,您应该在 32 和 64 Hz 处获得两个峰值,并且 32 Hz 峰值应该是 64 Hz 峰值的一半功率。

在您的代码与上述合成信号正常工作后,您应该尝试一个真实的已知信号,例如在原声吉他上弹拨的单个 E2 音符:

这个 E2 音符信号的 FFT 频谱如下所示:

有了这个真实信号,您的峰值功率检测器应该会找到 161 Hz 的峰值,对于这个信号,它恰好是 E2 音符的一次谐波。 80 Hz 处的低功率峰值是 E2 音符的真正基频。

使用Sooeet FFT calculator可以生成合成信号和真实信号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-24
    • 2017-05-22
    • 2012-06-10
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2011-05-24
    • 2016-01-20
    相关资源
    最近更新 更多