c - 检测特定频率和持续时间的蜂鸣声

标签 c audio fft portaudio

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

哪种策略更好?

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

最佳答案

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

关于c - 检测特定频率和持续时间的蜂鸣声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026483/

相关文章:

c++ - 使用Eigen::FFT执行FFT时的频率

matlab - 通过傅立叶空间填充进行插值

c - OpenSSL 中的 const 难题

c - 将整个数组传递给函数时获取垃圾值

javascript - 使用 recorder.js 录制语音并将其上传到 python-flask 服务器,但 WAV 文件损坏

audio - 哪种语言可以连续改变程序音量?

c - 函数指针,如何转换?

c++ - 将 XML 映射到自定义 C/C++ 函数

c++ - 用于同时创建和播放音频的 Python 音频库

python - 从 *.wav 文件中提取振幅列表以在 Python 中使用