发病检测峰值选择

信息处理 声音的 峰值检测 阈值
2022-01-25 14:15:31

我有一个吉他音乐信号,我想通过能量检测起始点。

这是信号示例:

信号

这是能量图:

活力

我的问题是定义阈值并因此找到峰值的最佳方法是什么。我认为我将不得不设置一个窗口长度和一个窗口步长(我想在 44.1KHz 采样率上分别有 1000 个和 100 个样本),然后每个循环定义一个新阈值(自适应/本地阈值)。每个循环我都必须找到窗口平均值并将其与阈值进行比较。我有这些问题:

1) 窗口长度 = 1000 个样本和窗口步长 = 100 是否合理?

2) 每个循环如何定义阈值以及与什么相关?

3)如果窗口超过长度,我会考虑其中的哪些样本是峰值?我认为它会在中间的某个地方,但它周围的范围是多少?

也许,窗口中间 - 窗口步骤 < 峰值样本 < 窗口中间 + 窗口步骤?

感谢您的帮助。

1个回答
  1. 从音频信号计算 RMS 以获得功率
  2. 做AGC(自动增益控制)
  3. 执行“离散微分”(最简单的是一阶:y[i]=x[i]x[i1])
  4. 如果该值大于某个阈值,则意味着我们有一个发作。您必须通过实验确定阈值或使用自适应算法。显然,您还需要某种低通滤波器来过滤噪声。

您可能需要交换步骤 2 和 3。

如果您可以使用软件库,请查看abio

https://stackoverflow.com/questions/294468/note-onset-detection的可能重复项