import math import numpy as np # 计算每一帧的过零率 def ZCR(frameData): frameNum = frameData.shape[1] frameSize = frameData.shape[0] zcr = np.zeros((frameNum, 1)) for i in range(frameNum): singleFrame = frameData[:, i] temp = singleFrame[:frameSize-1] * singleFrame[1:frameSize] temp = np.sign(temp) zcr[i] = np.sum(temp<0) return zcr # 分帧处理函数 def enframe(wavData, frameSize, overlap): coeff = 0.97 # 预加重系数 wlen = len(wavData) step = frameSize - overlap frameNum:int = math.ceil(wlen / step) frameData = np.zeros((frameSize, frameNum)) hamwin = np.hamming(frameSize) for i in range(frameNum): singleFrame = wavData[np.arange(i * step, min(i * step + frameSize, wlen))] singleFrame = np.append(singleFrame[0], singleFrame[:-1] - coeff * singleFrame[1:]) # 预加重 frameData[:len(singleFrame), i] = singleFrame frameData[
python 加窗分帧,检测能量,过零率,只有函数
最新推荐文章于 2024-06-09 09:45:45 发布