0

我已经有了播放器的程序,波形发生器,频谱分析仪,记录时间的列表框。这些东西在起作用。现在,我想添加一个功能,当您播放音频文件时,当它达到某个阈值或频谱的最大峰值时,该当前事件的时间将被记录到列表框中。我设法在列表框中添加了时间,所以现在,我唯一的问题是如何检测事件。我在频谱分析仪中使用了 FFT,但我坚持这一点。如何使用我当前的资源(如 FFT、波形发生器、频谱分析仪等)来做到这一点?

这是我需要的,

  1. 当我播放音频并且声音达到某个阈值时,将记录流的当前时间。

太感谢了。我的最后期限将在 36 小时后。每一个帮助将不胜感激。我的未来取决于此。祝我好运。:) 多谢你们!请给我一个样品或确切的事情要做。如果您需要有关我的项目的更多信息,我会给您我的资源。谢谢!上帝保佑。

PS 这个项目需要一个军鼓检测器。但是我没有太多时间了,所以我决定不检测军鼓,而是检测频谱的最高峰,因为大多数时候,军鼓比其他乐器(如贝斯、钹)产生的最高峰。多谢你们!

4

3 回答 3

0

检测军鼓最直接的方法是计算输入信号和军鼓敲击记录之间的互相关。当互相关性很高时,您可能会匹配。

这将优于测试 FFT,因为 FFT 计算输入信号与纯正弦波的互相关。

这种方法被称为“匹配过滤”,它在最优检测理论中是众所周知的。

于 2011-09-12T01:09:57.143 回答
0

如果您只想查看信号何时变得非常强大,则不需要 FFT。您可以使用Parseval 定理,该定理将时域和频域的功率联系起来。这允许您从平方样本的移动平均值创建 O(1) 滑动窗口能量检测器。

顺便说一句,这正是与DSP Stack Exchange相关的问题

于 2011-09-12T13:15:42.823 回答
0

只要您可以生成不断更新的频谱,那么您只需要在每次更新后迭代频谱并检查相关箱的幅度。通常,您可能会重叠每个样本窗口,例如,如果您的 FFT 大小和样本窗口大小为 N = 1024,那么您首先对样本 0..1023 进行 FFT,然后下一个块将是 512..1535。这 50% 的重叠有助于减少检测延迟(您可以增加重叠,但如果您走得太远,则可能会变得过于计算密集)。

于 2011-09-11T14:55:47.463 回答