mirror of
https://github.com/RVC-Boss/GPT-SoVITS.git
synced 2025-10-08 16:00:01 +08:00
修复了切完漏音频的问题
This commit is contained in:
parent
326f2577f0
commit
9907fc1152
@ -424,22 +424,48 @@ class Slicer:
|
|||||||
return chunks
|
return chunks
|
||||||
|
|
||||||
|
|
||||||
|
# def merge_short_chunks(chunks, max_duration, rate):
|
||||||
|
# merged_chunks = []
|
||||||
|
# buffer, length = [], 0
|
||||||
|
# lengths = [len(chunk)/rate for chunk in chunks]
|
||||||
|
# print(lengths)
|
||||||
|
# for chunk in chunks:
|
||||||
|
# if length + len(chunk) > max_duration * rate and len(buffer) > 0:
|
||||||
|
# print(len(buffer))
|
||||||
|
# merged_chunks.append(np.concatenate(buffer))
|
||||||
|
# buffer, length = [], 0
|
||||||
|
# else:
|
||||||
|
# buffer.append(chunk)
|
||||||
|
# length += len(chunk)
|
||||||
|
|
||||||
|
|
||||||
|
# if len(buffer) > 0:
|
||||||
|
# print(len(buffer))
|
||||||
|
# merged_chunks.append(np.concatenate(buffer))
|
||||||
|
|
||||||
|
# print([len(chunk)/rate for chunk in merged_chunks])
|
||||||
|
|
||||||
|
# return merged_chunks
|
||||||
|
|
||||||
|
|
||||||
def merge_short_chunks(chunks, max_duration, rate):
|
def merge_short_chunks(chunks, max_duration, rate):
|
||||||
merged_chunks = []
|
if not chunks:
|
||||||
buffer, length = [], 0
|
return []
|
||||||
|
|
||||||
for chunk in chunks:
|
max_length = int(max_duration * rate) # 确保 max_length 是整数
|
||||||
if length + len(chunk) > max_duration * rate and len(buffer) > 0:
|
merged = []
|
||||||
merged_chunks.append(np.concatenate(buffer))
|
current = chunks[0] # 开始时 current 是第一个音频块
|
||||||
buffer, length = [], 0
|
for chunk in chunks[1:]: # 从第二个音频块开始遍历
|
||||||
|
if len(current) + len(chunk) <= max_length:
|
||||||
|
current = np.concatenate((current, np.zeros(int(0.1*rate)), chunk)) # 在合并前后加入一个0.1s作为间隔
|
||||||
else:
|
else:
|
||||||
buffer.append(chunk)
|
merged.append(current)
|
||||||
length += len(chunk)
|
current = chunk # 开始新的合并块
|
||||||
|
|
||||||
|
merged.append(current) # 添加最后一个块
|
||||||
|
return merged
|
||||||
|
|
||||||
if len(buffer) > 0:
|
|
||||||
merged_chunks.append(np.concatenate(buffer))
|
|
||||||
|
|
||||||
return merged_chunks
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -472,7 +498,7 @@ min_interval = float(args.min_interval)
|
|||||||
hop_size = float(args.hop_size)
|
hop_size = float(args.hop_size)
|
||||||
max_sil_kept = float(args.max_sil_kept)
|
max_sil_kept = float(args.max_sil_kept)
|
||||||
num_worker = int(args.num_worker)
|
num_worker = int(args.num_worker)
|
||||||
merge_short = bool(args.merge_short)
|
merge_short = eval(args.merge_short)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
slice_audio_v2_(input_path, output_dir, num_worker, min_duration, max_duration, min_interval, threshold, hop_size, max_sil_kept,merge_short)
|
slice_audio_v2_(input_path, output_dir, num_worker, min_duration, max_duration, min_interval, threshold, hop_size, max_sil_kept,merge_short)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user