检测特定频率和持续时间的哔声

Posted

技术标签:

【中文标题】检测特定频率和持续时间的哔声【英文标题】:Detect a beep of a certain frequency and duration 【发布时间】:2014-01-09 16:57:25 【问题描述】:

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

哪种策略更好?

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

【问题讨论】:

我觉得这个问题应该移到dsp.stackexchange.com 【参考方案1】:

这种音调检测任务(音调频率已知先验)最简单和最常用的方法是Goertzel Algorithm。它实际上只是感兴趣频率上的单个 bin DFT - 您获取输出并对其进行低通滤波,当它超过经验得出的阈值时,您就检测到了您的音调。

【讨论】:

以上是关于检测特定频率和持续时间的哔声的主要内容,如果未能解决你的问题,请参考以下文章

Java 哔声:产生某些特定频率的声音

使用多线程获得连续的哔声

检测特定频率的算法? [关闭]

检测原始音频 (PCM) 中的特定频率/音调

在 C、MacOS 中播放哔声

iPhone:检测特定频率(幅度)的复制声音