0

助けを求めている 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])

助けてくれてありがとう。

〜エリック。

4

1 に答える 1

3

pydub.silence.detect_silence () 関数が役立つ場合があります。無音が検出された範囲のリストを返します (無音の分割関数内で使用されます)。

より役立つ場合に備えて、 pydub.silence.detect_nonsilent() もあります

于 2016-05-17T15:02:24.257 に答える