def _csl_cut(data, framerate):
window = int(np.round(150 * framerate / 2048))
data = data[:len(data) // window * window].reshape(-1, 150, data.shape[1])
rms = np.sqrt(np.mean(np.square(data), axis=1))
rms = [median_filter(image, 3).ravel() for image in rms.reshape(-1, 24, 7)]
rms = np.mean(rms, axis=1)
threshold = np.mean(rms)
mask = rms > threshold
for i in range(1, len(mask) - 1):
if not mask[i] and mask[i - 1] and mask[i + 1]:
mask[i] = True
from .. import utils
begin, end = max(utils.continuous_segments(mask),
key=lambda s: (mask[s[0]], s[1] - s[0]))
return begin * window, end * window
评论列表
文章目录