检测增加信号的开始

信息处理 离散信号 声音的 信号检测 插值 边缘检测
2022-02-03 16:15:40

去噪和清洗后,我得到这样的幅度信号(y轴:dB):

在这三个图表的左下角,您可以看到本底噪声(接近“水平线”)。本底噪声在 < +-1 dB 的范围内波动。

如何检测真实信号何时开始,即信号何时开始增加?

这是我尝试过的:

成为信号第一次高于例如是信号第一次比本底噪声高 4 dB。tinoisefloor+i dBt4

, ,经过的曲线进行二次或三次插值f(t2,floor+2)(t4,floor+4)(t6,floor+6)

比让我们检查多项式何时穿过水平线fy=floor

它有时会起作用,而且比我迄今为止尝试过的所有方法都要好。但这并不完美:

  1. 这里绿色插值第一次与(虚线)交叉的地方或多或少是我要找的,但是有2个交叉点,如何选择最好的?有时是第一个选择,有时是第二个……,很随意。y=floor

在此处输入图像描述

  1. 这里绿色插值(虚线)相交的地方不存在!所以它根本不起作用:y=floor

在此处输入图像描述

怎么做比这更好?

注意:对信号何时高于的简单阈值检测作为“信号开始的时间”对于我的应用来说不够精确。noisefloor+0.5 dB

3个回答

除了使用“音频”标签之外,我们在这里处理的是哪种信号并不完全清楚。如果信号具有更宽的带宽,那么这将更接近于发病检测但这不是我们在这里要处理的。我们在这里处理的是一个缓慢变化的波形,当它从某种背景活动中出现时,它被认为是“开启”的。这种观点将使其更接近异常检测或“异常检测”类型的问题。

您可以在这里采取几种方法。一种是拟合一个包含“激活”参数的模型,然后尝试查看该参数何时转变为激活并将该点作为开始的开始。如果你开始了模型拟合的道路,最终你将不得不在这些曲线上训练你的模型,以便它了解所有可能存在的不同的“激活途径”。例如,第三条迹线显示背景活动,过渡到中间高原,在激活时过渡到完全,甚至在“激活”区域,它的斜率也可能显示出进一步的变化。

因此,在您开始研究这些技术之前,也许您可​​以尝试通过信号统计来检测异常值的普通老技术。

作为人类(?),您似乎很清楚何时将这条曲线视为“开启”。因此,收集“背景”区域内的所有信号样本,并使用箱线图或拟合此数据的分布。该分布的最简单示例是具有均值和标准差的高斯分布。这模拟了您的“正常”区域。从该分布中可能出现的任何价值都值得怀疑,它是否属于“背景”或“激活”部分。但并非所有值都如此,因为很快(随着时间向右发展),曲线将开始向分布的极值点推进,在该极值点处,生成此类值的概率会越来越小。

在那里设置一个硬阈值,可以让您估计“激活”区域的开始位置。

希望这可以帮助。

编辑:

在分享了有关该问题的更多信息后,我更倾向于建议一种直接作用于音频数据的起始检测技术。

无论如何,以下(洞穴)插图可能对本文中的早期建议有所帮助。

在此处输入图像描述

在确定从“背景”到“关键”的最早过渡点(而不是自动进行)时,“人类”评论开始发挥作用。您使用波形“背景”部分中的数据来估计来自“背景”部分的样本意味着什么的统计数据,并使用它来确定样本现在更有可能属于的阈值到“关键”部分。

或者: 在此处输入图像描述

通过在“Key on”斜率上对齐许多类似设置的镜头,并用一系列箱线图总结所有这些数据,每个箱线图都会告诉您在每个时间实例中您可以预期的值限制类型。然后使用该信息来选择与背景有偏差的时间点。

(分别来自本维基百科文章的箱线图和分布的插图。)

您是否尝试过绘制它是二阶导数的离散模拟。您甚至可能想应用曲率公式,但由于您来自水平方向,因此您得到的结果可能没有太大差异。y[n]=x[n+1]2x[n]+x[n1]

希望这可以帮助。

赛德


跟进:

我在评论中犯了一个小错误。这是带间距的“二阶导数”的正确公式:

x[n]=an2

x[n+s]=an2+a2ns+as2

x[ns]=an2a2ns+as2

x[n+s]2x[n]+x[ns]=2as2

x=2an

x=2a

x=(x[n+s]2x[n]+x[ns])/s2

您应该除以,而不是我在评论中所说的s2s

您的降噪和清洁可能是问题的一部分。人类可能会改为模式匹配开头嘈杂的不干净非谐波瞬态以检测音符开始。这可能或更可能不像多项式曲线拟合。