From c880db53646ab9fd26417f4baf004ab44cc24e1a Mon Sep 17 00:00:00 2001
From: lingji-yidong <75744976+lingji-yidong@users.noreply.github.com>
Date: 星期五, 28 六月 2024 01:28:24 +0800
Subject: [PATCH] Fix: Return tuple ('', []) when char_list is empty to prevent ValueError (#1857)
---
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