fix: resolve "negative dimensions are not allowed" on windows

This commit is contained in:
jlqian98
2026-03-19 13:51:38 +08:00
parent f177900fb0
commit 33ad03f085
2 changed files with 12 additions and 9 deletions
+3
View File
@@ -289,6 +289,9 @@ class VocalDetector:
key = f"{base_name_no_ext}_{idx}" key = f"{base_name_no_ext}_{idx}"
start_sample = librosa.time_to_samples(start_ms / 1000, sr=sr) start_sample = librosa.time_to_samples(start_ms / 1000, sr=sr)
end_sample = librosa.time_to_samples(end_ms / 1000, sr=sr) end_sample = librosa.time_to_samples(end_ms / 1000, sr=sr)
# Use Python int to avoid 32-bit overflow on Windows
start_sample = int(start_sample)
end_sample = int(end_sample)
segment = y[start_sample:end_sample] segment = y[start_sample:end_sample]
write(f"{self.cut_wavs_output_dir}/{key}.wav", segment, sr) write(f"{self.cut_wavs_output_dir}/{key}.wav", segment, sr)
+9 -9
View File
@@ -109,10 +109,11 @@ def _merge_group(
) )
# ---------- time & audio ---------- # ---------- time & audio ----------
start_ms = get_attr(segments[0], "start_time_ms", 0) # Use Python int to avoid 32-bit overflow on Windows
end_ms = get_attr(segments[-1], "end_time_ms", 0) + end_extension_ms start_ms = int(get_attr(segments[0], "start_time_ms", 0))
start_sample = start_ms * sample_rate // 1000 end_ms = int(get_attr(segments[-1], "end_time_ms", 0)) + end_extension_ms
end_sample = end_ms * sample_rate // 1000 start_sample = int(start_ms * sample_rate // 1000)
end_sample = int(end_ms * sample_rate // 1000)
# ---------- naming ---------- # ---------- naming ----------
first_item_name = get_attr(segments[0], "item_name", "segment") first_item_name = get_attr(segments[0], "item_name", "segment")
@@ -195,12 +196,11 @@ def merge_short_segments(
for seg in segments: for seg in segments:
if isinstance(seg, dict): if isinstance(seg, dict):
start_time = seg.get("start_time_ms", 0) start_time = int(seg.get("start_time_ms", 0))
end_time = seg.get("end_time_ms", 0) end_time = int(seg.get("end_time_ms", 0))
else: else:
start_time = seg.start_time_ms start_time = int(seg.start_time_ms)
end_time = seg.end_time_ms end_time = int(seg.end_time_ms)
if ( if (
current_group current_group
and (start_time - prev_end > max_gap_ms and (start_time - prev_end > max_gap_ms