GPT-SoVITS icon indicating copy to clipboard operation
GPT-SoVITS copied to clipboard

[Optimize]推理过程中,音频部分静音

Open vvip2u opened this issue 11 months ago • 2 comments

【问题】 推理后部分时段出现静音

【解决方案】 把每个片段做静音分析,如果符合静音时长超过一定时间重新将片段进行推理。现在就不会出现连续长时间静音的情况了

【目标】 将该问题出现率降低到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

vvip2u avatar Mar 30 '24 05:03 vvip2u

这段应该怎么修改呢,可以给出完整例子吗

wrl1224 avatar Apr 10 '24 01:04 wrl1224

这段应该怎么修改呢,可以给出完整例子吗

思路是用上述函数检测是否有静音,有静音就再次生成一次

vvip2u avatar Apr 17 '24 16:04 vvip2u