簡體   English   中英

如何使用pydub在靜音結束時拆分音頻文件,而不刪除靜音?

[英]How do I split an audio file at the end of a silence, without deleting silence, using pydub?

Python初學者正在尋求幫助。

我正在使用pydub的靜音模塊來拆分和導出音頻文件的塊。 我正在使用在此問題的頂級回復中找到的方法:

使用pyDub剪切長音頻文件

chunks = split_on_silence(sound, 
    # length of silence in ms
    min_silence_len=325,

    # consider it silent if quieter than -60 dBFS
    silence_thresh=-60
)

for i, chunk in enumerate(chunks):
    chunk.export(os.path.join(full_path, transcript_filename + "{0}.wav".format("%02d" % i)), format="wav")

但是,現在,沉默不包括在這些塊中。 我希望他們留在最后。 我假設我必須對pydub.silence函數進行修改,但是我不知道需要進行哪些更改。 現在是split_on_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])

謝謝你的幫助。

〜埃里克。

您可能會發現pydub.silence.detect_silence()函數很有用。 它返回檢測到無聲的范圍列表(在無聲分割功能中使用)

還有pydub.silence.detect_nonsilent(),以防萬一

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM