Java 识别麦克风或音频文件中的拨号音

Java 识别麦克风或音频文件中的拨号音,java,audio,signal-processing,fft,Java,Audio,Signal Processing,Fft,我在谷歌上搜索了很多,但都没有成功地解决我的问题。我需要识别wav文件中的拨号音,或者直接从麦克风中识别拨号音,或者更好:检测线路(直接连接到声卡的线路输入)是否空闲 在我的国家(意大利),拨号音是425赫兹的声波。我的想法是将麦克风a 2s记录注册到wav文件中,然后加载数据并应用离散FFT,然后在结果中搜索该频率。但是我不知道该怎么编码 我有一些问题: 1) 使用哪个DFT库 2) 字节和双字节之间的转换 3) 转换完成后,如何从复杂阵列中检测所需频率是否存在 欢迎使用代码示例 提前谢谢你

我在谷歌上搜索了很多,但都没有成功地解决我的问题。我需要识别wav文件中的拨号音,或者直接从麦克风中识别拨号音,或者更好:检测线路(直接连接到声卡的线路输入)是否空闲

在我的国家(意大利),拨号音是425赫兹的声波。我的想法是将麦克风a 2s记录注册到wav文件中,然后加载数据并应用离散FFT,然后在结果中搜索该频率。但是我不知道该怎么编码

我有一些问题: 1) 使用哪个DFT库 2) 字节和双字节之间的转换 3) 转换完成后,如何从复杂阵列中检测所需频率是否存在

欢迎使用代码示例


提前谢谢你

检测特定音调是否存在的最简单方法是。这实际上只是在感兴趣的频率上评估DFT,这比评估一个完整的FFT然后丢弃除一个输出单元以外的所有输出单元要简单得多,计算成本也要低得多


关于使用Goertzel算法进行音调检测,例如DTMF检测,有许多问题和答案-您可能需要研究其中一些问题和答案,因为它们包含有用的信息和示例代码。

我认为您的思路是正确的。(这正是我将如何实现它)FFT可能有点过头了,数字带通滤波器似乎更容易实现。是的,非常好的方法!非常感谢。