发现脉冲信号的开始,基础知识?

信息处理 声音的 信号检测 冲动反应 音频处理
2022-02-07 01:18:35

我认为是信号处理的新手,但取得了良好的进展。

在 covid-19 时期,我产生了一系列(许多)脉冲,这些脉冲将用作模拟我们教堂的声学效果的脉冲响应。

几个问题,在细节之前:

  1. 检测冲动开始的最佳实践(和代码解决方案)是什么?

  2. 在考虑脉冲的频谱图时,频谱图的数据出现在波形之前和波形(db)之前是否不寻常?

细节:

拍板用于生成脉冲,使用我的 zoom H1n Handy Recorder 将其记录为 96000、16 位的 2 通道 WAV 文件。这些脉冲在数据中以相当规律的时间出现,尽管并不完全规律,因为板的拍打是用手完成的,可以说是在我内部鼓手的节拍下。

我已成功使用scipy.io.wavfile将数据拆分为两个通道,然后使用scipy.signal.find_peaks通过查找每个脉冲的峰值来获取(非常接近)每个脉冲的开始。但是,我可以看到这种方法错过了每个脉冲的实际开始,我想使用 python 更好地捕获这些单独的开始。

我一直在阅读,并且确信这是一个深刻而广泛的话题。但是,也许某个善良的灵魂可以帮助我详细说明如何找到这些发作的确切时间?我想这是信号处理中一个相当典型的问题类型,我意识到这是我要求的(相当)一点教育。

我真的希望有一个代码解决方案建议来找到这些脉冲数据的开始。

要清楚,

a) 显然,每个脉冲的最大峰值不是在开始时,也不一定是每个脉冲的第一个明显峰值,因为我查看了整个数据流。(我认为当这个延迟峰值出现时,反射信号的峰值比记录设备的直接响应更高。不过我不确定......)

b) 这些脉冲的波形在脉冲之间不一定会变为零,事实上,它们很少会变为零。信号接近于零,但并不精确。(我认为这与信号周围的环境噪声有关,但不确定......)

c) 波形可以先变为负值,也可以变为正值(与来自该样本脉冲的(初始)数据一样)。

在所附图像中,前五个图表显示了一组脉冲(数百个中的三个),随后增加的分辨率放大了该组中第一个脉冲的开始。

底部的两张图片是第一个脉冲的左通道,取自 Audacity 的屏幕截图。它们显示了第一个脉冲的波形、波形 (db) 和频谱图——左边是整个脉冲,右边是脉冲的开始。(我很困惑为什么频谱图似乎在波形和波形(db)之前有可测量的样本数量。)

虽然我在 Audacity 中绘制了频谱图,但我不确定如何访问 WAV 文件中的频谱数据,也不知道如何使用它来检测脉冲的开始。

起始问题的冲动图

我会尝试附上导致第一个冲动的数据,并在这个冲动中加入一些方法,但这些都是相当大的文件。我没有发送大型数据集的规则。

谢谢你的帮助,好心人。

我不确定 WAV 文件中发生了什么,但这里有 250 个从左通道采集的样本,我相信这些样本从第一个脉冲开始之前开始,并在某种程度上结束于脉冲本身:

wav_left_subset = array([
          -23,    -16,    -20,    -19,    -18,    -19,    -15,    -20,
          -18,    -21,    -20,    -22,    -22,    -18,    -22,    -17,
          -22,    -20,    -17,    -24,    -14,    -21,    -16,    -16,
          -16,    -13,    -17,    -11,    -18,    -14,    -18,    -14,
          -16,    -13,    -12,    -13,     -9,    -16,    -11,    -16,
          -16,    -13,    -16,    -14,    -14,    -15,    -13,    -13,
          -11,    -14,     -9,    -12,    -12,    -13,    -15,    -13,
          -15,    -15,    -13,    -16,     -8,    -14,    -12,    -12,
          -13,    -11,    -11,    -12,    -10,     -8,     -8,     -8,
           -6,     -9,     -6,     -7,     -5,     -6,     -2,     -3,
           -2,     -1,     -4,     -2,     -4,     -1,      0,     -1,
            2,      0,     -1,      3,     -3,      6,     -2,      9,
            4,      5,      7,      4,      7,      9,      1,     10,
            6,     11,     13,      9,     13,     15,     12,     18,
           15,     17,     20,     20,     22,     20,     21,     23,
           20,     23,     25,     24,     32,     27,     33,     30,
           32,     29,     33,     34,     36,     41,     39,     43,
           42,     49,     47,     55,     51,     59,     60,     63,
           67,     67,     72,     70,     78,     75,     83,     85,
           88,     93,     96,    102,    106,    111,    115,    124,
          127,    135,    143,    146,    161,    163,    181,    185,
          197,    209,    222,    239,    249,    269,    281,    303,
          322,    344,    369,    399,    431,    466,    501,    544,
          588,    642,    701,    779,    858,   1003,   1152,   1466,
         1706,   1921,   1352,    -13,  -4626, -11419, -14567, -17320,
       -19721, -21829, -23673, -14863,  -2840,   2088,   6363,  10091,
        13343,  16173,  18656,  20820,  22727,  24392,  25864,  27162,
        28305,  29329,  29056,  30424,  31358,  31919,  28408,  22294,
        15638,   8584,   1428,  -3153,  -7130, -10605, -13629,  -4656,
         5684,   9787,  13358,  16474,  19186,  14213,   8269,   6929,
        12547,  18601,  21081,  23248,  25145,  26811,  28274,  28920,
        13555,   5571], dtype=int16)

1个回答

检测冲动开始的最佳实践(和代码解决方案)是什么?

...

这些脉冲的波形不一定在脉冲之间变为零,事实上,它们很少这样做。信号接近于零,但并不精确。(我认为这与信号周围的环境噪声有关,但不确定......)

当您在空旷的场地录制时,这两种情况都是预期的。对于脉冲响应数据,您可以测量背景电平的平均强度,然后将脉冲的开始视为波形“突破”该噪声电平的电平。类似地,当波形恢复到与背景噪声相当的水平时。

如果您想进行快速测试,这在 Audacity 中作为噪声门实现。

显然,每个脉冲的最大峰值不是在开始时,也不一定是每个脉冲的第一个明显峰值,因为我查看了整个数据流。(我认为当这个延迟峰值出现时,反射信号的峰值比记录设备的直接响应要高。不过我不确定......

如果源和麦克风之间有直接的视线,那么第一个到达就是直接的,纯粹根据波必须传播的距离来判断。现在,声音不会直线传播。声音在密度较高的介质(包括不同温度和压力的空气)中传播得更快。但是要开始评估这些影响对您正在处理的房间的影响程度,您必须模拟声音传播以找出特定录音背后的原因。

(我很困惑为什么频谱图似乎在波形和波形(db)之前有可测量的样本数量。)

频谱图视图在 Audacity 运行 DFT 的时间实例之间进行插值。您可以在此处了解更多信息

从理论的角度来看,脉冲是时域中的一个尖锐的不连续性,这将导致一个广泛的频谱(需要更多的正弦曲线,以便当它们相加时,它们可以准确地再现该不连续性)。

因此,不连续性在频谱图中显示为一个明亮的垂直条,但由于此处解释的原因,频谱图在准确定位脉冲应该开始的位置方面没有额外的好处。

...这是从左通道采集的 250 个样本,我相信从第一个脉冲开始之前开始,并在某种程度上结束于脉冲本身:

您正在以 96kHz 录制。您在主要脉冲之前看到的是压力波前在撞击麦克风时的累积。

如果源和麦克风之间有直接的视线,您可以将主脉冲(最高峰)t=0

希望这可以帮助。