3

我想获得音频信号的过零率。我试图编写这个公式的代码:

在此处输入图像描述

但我并不完全理解整个公式。

为了处理我的代码,我按块分割信号,我的意思是“帧阻塞”。例如,每个块的长度为 512(有 512 个信号样本)。假设我有 100 个街区。那么过零率是否会为每个区块返回一个值?我的意思是,根据公式,我的整个信号会有 100 个值吗?

而且我也不明白 w() 的意思。是我用来开窗的汉明吗?它如何计算nm?它很可能是一个负数?

我很困惑请帮助我?

4

1 回答 1

6

忘记公式——当你试图用这种方式表达它时,它会变得更复杂。

过零率是信号在给定时间段(通常为一秒)内改变符号的次数。这就是你需要知道的。通常,您只对它从负变为正或反之亦然的速率感兴趣,而不是每次符号变化时。查看它从负到正的次数可以用作信号频率的代理。

至于 w(nm) 是什么,那是一个窗口函数。这就是改变您的公式回答的问题的原因,即“信号有多少次过零?” 到“信号在最后 n 个样本中过零多少次?”。老实说,这有点让我眼花缭乱,所以不要因为不理解而感到难过——它也让我感到困惑。对于过零率,我们将选择一个窗口函数,使得 w 在一定范围内返回 1,否则返回零。(这称为矩形窗口)。为这种窗口表达这个公式的更好方法是忘记“窗口”作为一般概念,并限制 sigma 的界限(对不起,我不知道如何在 SO 上表达公式):

Z_n(m) = sum_{m=xn}^0|符号[x(m)] - 符号[x(m-1)]|

如果 n = 您的采样率,这将为您提供以 Hz 为单位的过零率。这更有意义:没有更多的 w 也没有更多的无穷大!您使用的源可能包含窗口以试图概括,但是,在这种情况下,没有任何收获(据我所知 - 但我不知道一切!)

于 2013-03-14T18:51:03.823 回答