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

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

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

欢迎提供代码示例!

先感谢您!

最佳答案

用于检测特定音调是否存在的最简单方法是Goertzel Filter。这有效地只是评估了感兴趣的频率上的DFT,比评估完整的FFT然后丢弃一个输出仓位之外的所有其他方法要简单得多,并且计算量也更少。

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

09-16 06:07