在AudioRecord Android中查找峰值频率

时间:2014-04-17 10:31:47

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

我需要连续识别出prek频率。我已经尝试FFTJTransform了但是我没有得到正确的频率并且它有很多噪音。我不知道如何纠正这个问题。我在google上搜索过,遗憾的是我找不到合适的搜索。
因此,如果您有任何其他工作示例确定峰值频率。

请与我们分享,

谢谢。

1 个答案:

答案 0 :(得分:1)

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

一般情况下,为了测试您的FFT,您需要合成纯音,例如32 Hz余弦音。

Synthetic 32 Hz cosine tone - Sooeet.com FFT calculator

使用FFT处理这种纯音时,你应该得到一个32 Hz的单峰:

FFT spectrum of synthetic 32 Hz cosine tone - Sooeet.com FFT calculator

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

Synthetic 32 Hz and 64 Hz cosine tones - Sooeet.com FFT calculator

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

FFT spectrum of synthetic 32 Hz and 64 Hz cosine tones - Sooeet.com FFT calculator

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

Guitar E2 note - Sooeet.com FFT calculator

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

FFT spectrum of guitar E2 note - Sooeet.com FFT calculator

使用此实际信号,您的峰值功率检测器应找到161 Hz峰值,此信号恰好是E2音符的第一个谐波。 80 Hz的低功率​​峰值是E2音符的真实基频。

可以使用Sooeet FFT calculator

生成合成信号和实际信号