流输入的android频谱分析
Posted
技术标签:
【中文标题】流输入的android频谱分析【英文标题】:android spectrum analysis of streaming input 【发布时间】:2010-09-21 16:57:14 【问题描述】:对于一个学校项目,我正在尝试制作一个 android 应用程序,该应用程序一旦启动,将对从麦克风或蓝牙耳机接收到的实时音频进行频谱分析。我知道我应该使用 FFT,并且一直在研究 moonblink 的开源音频分析器 (http://code.google.com/p/moonblink/wiki/Audalyzer),但不熟悉 android 开发,而且他的代码对我来说太难使用了。
所以我想我的问题是,有没有更简单的基于 java 或开源的 android 应用程序可以进行频谱分析,我可以参考?或者是否可以提供任何有用的信息,例如;需要采取哪些步骤来获取麦克风输入,将其放入 fft 算法,然后根据其输出显示频率和音高随时间变化的图表?
任何帮助将不胜感激,谢谢。
【问题讨论】:
没关系。我能够从 Moonblink 中拆分出 audalyzer 应用程序来获得我需要的东西。 您好,我也有类似的需求,您介意分享一下您是如何实现的吗? 我最终使用了 moonblink 的 audalyzer 作为我的基础应用程序。为此,我们创建了一个新项目,并从 hermitLibrary 中获取了 audalyzer 包和它所依赖的所有类。从那里我一步一步地通过代码找到我需要修改的所有部分。 【参考方案1】:建议....
这取决于你想用它做什么。如果您不需要整个光谱,那么您可能只需要一个滤波器,使用 FIR 滤波器即可轻松实现。请注意,通过意识到 HP 使用与 LP 相同的乘数,您可以非常快速地获得 3 个波段(LP、BP 和 HP),只是其中一些值是减法而不是加法。同样,BP 是通过从原始数据中减去 LP 和 HP 获得的(全通)。所以,如果你编码正确,你可以获得一个非常快速的 3 波段分析仪....如果这就是你所需要的。
如果您想使用 FFT,您可能会查看 Java 库中是否还没有可用的 FFT,使用 JNI (NDK) 接口用 C 语言编写。这将比用 java 自己编写要快得多。
希望对您有所帮助。
【讨论】:
以上是关于流输入的android频谱分析的主要内容,如果未能解决你的问题,请参考以下文章