C语言 检测特定频率和持续时间的蜂鸣声



如何从已知频率和持续时间但到达时间未知的音频数据中检测到哔哔声?我正在尝试实现一个带通滤波器来忽略任何未知频率的声音。我还没有成功。一旦我成功了,我将检查声音的振幅是否超过我固定时间内的某个阈值。这应该检测到蜂鸣音。有人告诉我,傅里叶变换也可以用来检测蜂鸣声。

哪种策略更好?

此外,在听录音时,我开始相信Windows或笔记本电脑的声音驱动程序(Inspiron 15R)正在麦克风输入上应用某种降噪滤波器。这在笔记本电脑上常见吗?如果是,有没有办法从麦克风中获取未触及的真实音频?我正在使用端口音频库来获取声音。

对于这种音调检测任务(其中音调频率是先验已知的),最简单和最常见的方法是Goertzel算法。它实际上只是一个目标频率的单箱DFT - 你采取输出和低通滤波器,当它超过经验得出的阈值时,你就检测到了你的音调。

最新更新