From 1596f6f414f6f41da66506debb1dff19fffeb3ec Mon Sep 17 00:00:00 2001 From: 游雁 <zhifu.gzf@alibaba-inc.com> Date: 星期一, 24 六月 2024 11:55:17 +0800 Subject: [PATCH] fixbug hotwords --- funasr/datasets/large_datasets/utils/low_frame_rate.py | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-) diff --git a/funasr/datasets/large_datasets/utils/low_frame_rate.py b/funasr/datasets/large_datasets/utils/low_frame_rate.py new file mode 100644 index 0000000..87718e9 --- /dev/null +++ b/funasr/datasets/large_datasets/utils/low_frame_rate.py @@ -0,0 +1,30 @@ +import numpy as np + + +def build_LFR_features(data, m, n): + """ + Actually, this implements stacking frames and skipping frames. + if m = 1 and n = 1, just return the origin features. + if m = 1 and n > 1, it works like skipping. + if m > 1 and n = 1, it works like stacking but only support right frames. + if m > 1 and n > 1, it works like LFR. + + Args: + inputs_batch: inputs is T x D np.ndarray + m: number of frames to stack + n: number of frames to skip + """ + + LFR_inputs = [] + T = data.shape[0] + T_lfr = int(np.ceil(T / n)) + for i in range(T_lfr): + if m <= T - i * n: + LFR_inputs.append(np.hstack(data[i * n : i * n + m])) + else: + num_padding = m - (T - i * n) + frame = np.hstack(data[i * n :]) + for _ in range(num_padding): + frame = np.hstack((frame, data[-1])) + LFR_inputs.append(frame) + return np.vstack(LFR_inputs) -- Gitblit v1.9.1