# -*- coding: utf-8 -*-
from pydub import AudioSegment
from pydub.silence import split_on_silence


def remove_silent_parts(input_file_path, output_file_path, min_silence_len=1000, silence_thresh=-40):
    """
    函数功能：删除音频文件中的无声部分，并将处理后的音频保存到指定输出路径

    参数:
    input_file_path: 输入音频文件的路径
    output_file_path: 输出音频文件的路径
    min_silence_len: 最小静音长度，单位为毫秒，默认值为1000毫秒
    silence_thresh: 静音阈值，单位为dBFS，默认值为-40dBFS，低于此阈值的部分被视为静音
    """
    # 从文件中读取音频
    audio_segment = AudioSegment.from_file(input_file_path)

    # 根据静音阈值和最小静音长度拆分音频
    chunks = split_on_silence(audio_segment, min_silence_len=min_silence_len, silence_thresh=silence_thresh)

    # 将拆分后的非静音部分重新拼接在一起
    final_audio = AudioSegment.empty()
    for chunk in chunks:
        final_audio += chunk

    # 将处理后的音频保存到输出文件路径
    final_audio.export(output_file_path, format="wav")


if __name__ == "__main__":
    # 首先使用命令行umx audio.wav来将音频拆分为
    input_file_path = "vocal/this is water_umxl/vocals.wav"
    output_file_path = "vocal/this is water_umxl/vocals_process.wav"

    remove_silent_parts(input_file_path, output_file_path)
