对于学校项目我试图制作一个Android应用程序,一旦启动,将对从麦克风或蓝牙耳机接收的现场音频进行频谱分析。我知道我应该使用FFT,并且一直在关注moonblink的开源音频分析器(http://code.google.com/p/moonblink/wiki/Audalyzer),但我不熟悉android开发,他的代码对我来说太难了。
所以我想我的问题是,是否有更简单的基于java或开源的Android应用程序,我可以参考频谱分析?或者是否有任何有用的信息可以给出,例如;需要采取哪些步骤来获取麦克风输入,将其置于fft算法中,然后从输出中随时间显示频率和音高的图表?
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:3)
...建议
这取决于您想要使用它的内容。如果您不需要整个频谱,那么您可能只需要一个滤波器,使用FIR滤波器很容易实现。请注意,通过意识到HP使用与LP相同的乘数,您可以非常快速地获得3个波段(LP,BP和HP),只有一些值是减法而不是添加。同样地,通过从原始数据中减去LP和HP来获得BP(全部通过)。因此,如果您正确编码,您可以获得一个非常快速的3频段分析仪....如果这就是您所需要的。
如果您想使用FFT,您可能会查看Java库中是否还没有可用的FFT,使用JNI(NDK)接口用C语言编写。这比在java中编写自己的快得多。
希望有所帮助。