Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pydub在静默结束时分割音频文件,而不删除静默?_Python_Python 2.7_Pydub - Fatal编程技术网

Python 如何使用pydub在静默结束时分割音频文件,而不删除静默?

Python 如何使用pydub在静默结束时分割音频文件,而不删除静默?,python,python-2.7,pydub,Python,Python 2.7,Pydub,Python初学者,寻求一些帮助 我正在使用pydub的模块分割和导出音频文件的块。我使用的是在对这个问题的顶部回答中找到的方法: 然而现在,沉默并不包括在语块中。我希望他们被留在最后。我假设我必须对pydub.silence函数进行修改,但我不知道需要做什么更改。现在是“一对一沉默”: def split_on_silence(audio_segment, min_silence_len=1000, silence_thresh=-16, keep_silence=100): ""

Python初学者,寻求一些帮助

我正在使用pydub的模块分割和导出音频文件的块。我使用的是在对这个问题的顶部回答中找到的方法:

然而现在,沉默并不包括在语块中。我希望他们被留在最后。我假设我必须对pydub.silence函数进行修改,但我不知道需要做什么更改。现在是“一对一沉默”:

def split_on_silence(audio_segment, min_silence_len=1000, silence_thresh=-16, keep_silence=100):

    """
    audio_segment - original pydub.AudioSegment() object
    min_silence_len - (in ms) minimum length of a silence to be used for a split. default: 1000ms
    silence_thresh - (in dBFS) anything quieter than this will be considered silence. default: -16dBFS
    keep_silence - (in ms) amount of silence to leave at the beginning and end of the chunks. Keeps the sound from sounding like it is abruptly cut off. (default: 100ms)
    """

    not_silence_ranges = detect_nonsilent(audio_segment, min_silence_len, silence_thresh)

    chunks = []
    for start_i, end_i in not_silence_ranges:
        start_i = max(0, start_i - keep_silence)
        end_i += keep_silence

        chunks.append(audio_segment[start_i:end_i])
谢谢你的帮助

~Eric.

你可能会发现这本书很有用。它返回检测到静默的范围列表(在静默分割函数中使用)

还有pydub.silent.detect_nonsilent(),以防更有用

您可能会发现有用的。它返回检测到静默的范围列表(在静默分割函数中使用)

还有pydub.silent.detect_nonsilent()以防更有用

def split_on_silence(audio_segment, min_silence_len=1000, silence_thresh=-16, keep_silence=100):

    """
    audio_segment - original pydub.AudioSegment() object
    min_silence_len - (in ms) minimum length of a silence to be used for a split. default: 1000ms
    silence_thresh - (in dBFS) anything quieter than this will be considered silence. default: -16dBFS
    keep_silence - (in ms) amount of silence to leave at the beginning and end of the chunks. Keeps the sound from sounding like it is abruptly cut off. (default: 100ms)
    """

    not_silence_ranges = detect_nonsilent(audio_segment, min_silence_len, silence_thresh)

    chunks = []
    for start_i, end_i in not_silence_ranges:
        start_i = max(0, start_i - keep_silence)
        end_i += keep_silence

        chunks.append(audio_segment[start_i:end_i])