从android中的音频录制文件中获取频率和音高

时间:2013-07-30 06:18:20

标签: android fft android-audiorecord pitch-tracking

我正在尝试做一个应用程序,用户会说些什么,然后点击一个按钮,它会给出他们所说内容的频率值。我一直在搜索,我得出结论,我需要首先使用音频记录类,录制语音,然后使用FFT将其转换为频率。 我的主要问题是FFT给出了频率图,我不需要它,我需要频率和音高值。我怎么能这样做?

请帮帮我:)。

2 个答案:

答案 0 :(得分:3)

除非您正在收集纯音音(如正弦波),否则您的结果实际上是您目前使用FFT获得的频率范围(请查看this说明)。

声音的音高可以通过使用音高估计算法从FFT图中收集(参见答案here)。如果适合的话,Here's some links开源音高跟踪实现。

这绝对可行!

祝你好运。

答案 1 :(得分:0)

您可以使用很多东西来帮助完成此过程。 JTransforms是一个可以让您轻松进行FFT的库。您需要在多个点处进行FFT,以获得每个点的相应频率。当我说“点”时,我的意思是你应该将音频分解为将单独进行FFT的块。这些块可以重叠以提高精度。它们也可以在执行FFT之前加窗,以获得更高的精度。

然后,需要更多地操纵FFT的结果以使结果更准确。这可以使用倒谱分析或谐波产品频谱分析以及其他方式来完成。

最后,请记住除了FFT之外还有其他解决方案。自相关方法根本不使用频域。它检查实际的音频文件样本以确定频率。这可能在计算上更昂贵,但它也可以更准确。

相关问题