From a9d643488b77df6a0dc433a070998d3f7759cdeb Mon Sep 17 00:00:00 2001 From: Paul Sajna Date: Sat, 25 Mar 2023 22:41:53 -0700 Subject: [PATCH] fix bugs introduced during slicing --- .../src/so_vits_svc_fork/inference/infer_tool.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/voice_conversion/so-vits-svc/src/so_vits_svc_fork/inference/infer_tool.py b/voice_conversion/so-vits-svc/src/so_vits_svc_fork/inference/infer_tool.py index ffa1a0b..4994043 100644 --- a/voice_conversion/so-vits-svc/src/so_vits_svc_fork/inference/infer_tool.py +++ b/voice_conversion/so-vits-svc/src/so_vits_svc_fork/inference/infer_tool.py @@ -79,13 +79,14 @@ def split_silence( yield Chunk( is_speech=False, audio=audio[last_end:start], start=last_end, end=start ) - if end-start > chunk_size_max: - while last_end < end: - yield Chunk(is_speech=True, audio=audio[last_end:last_end+chunk_size_max], start=last_end, end=last_end+chunk_size_max) - last_end = last_end+chunk_size_max - else: - yield Chunk(is_speech=True, audio=audio[start:end], start=start, end=end) - last_end = end + if end-start > chunk_size_max: + chunk_count = (end-start) // chunk_size_max + for i in range(0, chunk_count): + yield Chunk(is_speech=True, audio=audio[start+(i*chunk_size_max):start+((i+1)*chunk_size_max)], + start=start+(i*chunk_size_max), end=start+((i+1)*chunk_size_max)) + yield Chunk(is_speech=True, audio=audio[start+chunk_count*chunk_size_max:end], + start=start+chunk_count*chunk_size_max, end=end) + last_end=end else: yield Chunk(is_speech=True, audio=audio[start:end], start=start, end=end) last_end = end