检测音频输入的频率 - Java?

时间:2010-11-30 16:09:52

标签: java audio signal-processing fft

我已经研究过几个月了。

我正在寻找工作示例代码来检测声卡音频输入中的频率,或者检测是否存在给定的频率组。我倾向于Java,但真正的要求是应该是比C 更高级/更简单的东西,而最好是跨平台。 Linux将成为目标平台,但我希望为Mac或甚至Windows打开选项。 Python也是可以接受的,如果有人知道一种语言可以使这更容易/有更好的预编写库,我愿意考虑它。

基本上我有一个定义的频率对将出现在声卡音频输入中,我需要能够检测到这对然后......做某事,例如记录以下音频最长持续时间,然后执行一些操作。 一个潜在的运行可以说5-10对,在运行时定义,不能在中编译:类似于频率1的东西~1秒,最大延迟~1秒,频率2~~ 1秒。

我发现了使用FFT或Goertzel算法的建议,但是找不到最简单的示例代码,似乎没有给出有用的结果。我还发现了Java音频的一些限制,并且无法以足够高的速率进行采样以获得我需要的分辨率。

有关库使用或工作代码的任何建议吗?我承认我不是最具数学倾向的,所以我在一些关于算法实际工作的技术描述中迷失了。

2 个答案:

答案 0 :(得分:0)

如果您的目标是检测频率对,那么您的工作与DTMF探测器非常相似。

尝试在sourgeforge等地方搜索DTMF,您会在许多编程语言中找到探测器。沿频谱放置的频率对似乎比您的规格更严格,因此您应该很好地使DTMF探测器适应您的输入。

答案 1 :(得分:0)

查看SNDPeek,它是一个跨平台的C ++应用程序,可从现场音频中提取各种信息; https://github.com/RobQuistNL/sndpeek