fix: resolve "negative dimensions are not allowed" on windows
This commit is contained in:
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user