def frame_blocking(signal, framerate, sampletime=0.025, overlap=0.5):
"""
??
?N???????????????????????N???256?512???????
?20~30ms??
:param framerate:???
:param signal:????
:param sampletime:??????
:param overlap:????????????
:return: ????????
"""
samplenum = len(signal) # ??????
framesize = int(framerate * sampletime) # ?????
step = int(framesize * overlap) # ?????
framenum = 1 + math.ceil((samplenum - framesize) / step) # ??????
padnum = (framenum - 1) * step + framesize
zeros = np.zeros((padnum - samplenum,))
padsignal = np.concatenate((signal, zeros))
indices = np.tile(np.arange(0, framesize), (framenum, 1)) + np.tile(np.arange(0, framenum * step, step),
(framesize, 1)).T
indices = np.array(indices, dtype=np.int32)
frames = padsignal[indices]
return frames
评论列表
文章目录