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}"
start_sample = librosa.time_to_samples(start_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]
write(f"{self.cut_wavs_output_dir}/{key}.wav", segment, sr)
+9 -9
View File
@@ -109,10 +109,11 @@ def _merge_group(
)
# ---------- time & audio ----------
start_ms = get_attr(segments[0], "start_time_ms", 0)
end_ms = get_attr(segments[-1], "end_time_ms", 0) + end_extension_ms
start_sample = start_ms * sample_rate // 1000
end_sample = end_ms * sample_rate // 1000
# Use Python int to avoid 32-bit overflow on Windows
start_ms = int(get_attr(segments[0], "start_time_ms", 0))
end_ms = int(get_attr(segments[-1], "end_time_ms", 0)) + end_extension_ms
start_sample = int(start_ms * sample_rate // 1000)
end_sample = int(end_ms * sample_rate // 1000)
# ---------- naming ----------
first_item_name = get_attr(segments[0], "item_name", "segment")
@@ -195,12 +196,11 @@ def merge_short_segments(
for seg in segments:
if isinstance(seg, dict):
start_time = seg.get("start_time_ms", 0)
end_time = seg.get("end_time_ms", 0)
start_time = int(seg.get("start_time_ms", 0))
end_time = int(seg.get("end_time_ms", 0))
else:
start_time = seg.start_time_ms
end_time = seg.end_time_ms
start_time = int(seg.start_time_ms)
end_time = int(seg.end_time_ms)
if (
current_group
and (start_time - prev_end > max_gap_ms