1,过零率
-
过零率(zero crossing rate)是一个
信号符号变化的比率
,即,在每帧中,语音信号从正变为负或从负变为正的次数
。 这个特征已在语音识别和音乐信息检索领域得到广泛使用,通常对类似金属、摇滚等高冲击性的声音的具有更高的价值。 -
一般情况下,过零率越大,频率近似越高。
librosa.feature.zero_crossing_rate(y,frame_length = 2048,hop_length = 512,center = True,** kwargs)
-
参数:
-
y :音频时间序列
-
frame_length :帧长
-
hop_length :帧移
-
center:bool,如果为True,则通过填充y的边缘来使帧居中。
-
返回:
-
zcr:zcr[0,i]是第i帧中的过零率
-
y, sr = librosa.load(librosa.ex('trumpet'))
librosa.feature.zero_crossing_rate(y)
2, 在时间序列中计算过零点
librosa.zero_crossings(y, threshold=1e-10, ref_magnitude=None, pad=True, zero_pos=True, axis=- 1)
-
参数:
-
y :np.ndarray, 音频时间序列
-
threshold: float > 0 or None, 如果指定了
-threshold <= y <= threshold
的值将被剪切为0。 -
ref_magnitude:阈值相对于ref_magnitude大小缩放。
-
pad: boolean,如果为真,则认为第一个值是一个有效的过零点。
-
zero_pos: boolean, 如果为真,则值0被解释为带有正号。如果为False,则0、-1和+1都有不同的符号。
-
axis: int, 用来计算交叉零点的轴。
-
返回:
-
zero_crossings: np.ndarray [shape=y.shape, dtype=boolean]. 沿选定的轴过零点的布尔值。
-
y = np.sin(np.linspace(0, 4 * 2 * np.pi, 20))
z = librosa.zero_crossings(y)