GPT-SoVITS
GPT-SoVITS copied to clipboard
[Optimize]推理过程中,音频部分静音
【问题】 推理后部分时段出现静音
【解决方案】 把每个片段做静音分析,如果符合静音时长超过一定时间重新将片段进行推理。现在就不会出现连续长时间静音的情况了
【目标】 将该问题出现率降低到0.01%概率以下
【相关的代码】
"""
判断是否连续静音
audio_data - 音频数据
sample_rate - 采样率
silence_threshold - 静音阈值,判断静音依据,小于多少值算静音
silence_duration - 静音时长(单位:秒)
"""
def has_long_silence(audio_data, sample_rate, silence_threshold=0.01, silence_duration=2):
# 计算静音样本
is_silence = np.abs(audio_data) < silence_threshold
# 计算每个样本是否为静音
silence_samples = np.sum(is_silence)
# 计算静音时长(秒)
silence_duration_seconds = silence_samples / sample_rate
# 检查是否有连续超过指定时长的静音
consecutive_silence = 0
for sample in is_silence:
if sample:
consecutive_silence += 1
if consecutive_silence >= silence_duration * sample_rate:
return True
else:
consecutive_silence = 0
return False
这段应该怎么修改呢,可以给出完整例子吗
这段应该怎么修改呢,可以给出完整例子吗
思路是用上述函数检测是否有静音,有静音就再次生成一次