Python を使って 無音部分で分割する

インストール

pip install git+https://github.com/jiaaro/pydub.git@master
pip install simpleaudio

コード

from pydub import AudioSegment
from pydub.silence import split_on_silence
from pydub import silence
from pydub.playback import play

sound = AudioSegment.from_file("prec.wav", format="wav")

#chunks = split_on_silence(sound, min_silence_len=1000, silence_thresh=-16,seek_step=1, keep_silence=100)
chunks = split_on_silence(sound, min_silence_len=2000, silence_thresh=-40, keep_silence=600)

for i, chunk in enumerate(chunks):
    chunk.export("dat/"+"output" + str(i) +".wav", format="wav")
    play(chunk)

print(silence.detect_nonsilent(sound, min_silence_len=1000, silence_thresh=-16,seek_step=1))
  • min_silence_len: |デフォルト:1000 サイレント・セクションの最小長 (ミリ秒単位)。オーディオセグメントの長さよりも長い場合は、空のリストが返されます。
  • silence_thresh: |デフォルト: -16 静粛性の上限は dBFS の無音です。
  • seek_step デフォルト:1 無音性をチェックするためのステップのサイズ (ミリ秒単位)。小さいほど正確です。正の整数である必要があります。
  • keep_silence |デフォルト:100 msまたはboolで保持する沈黙の量。チャンクの最初と最後に沈黙を残します。音が突然途切れたように聞こえないようにします。 無音の長さがkeep_silenceデュレーションよりも短い場合は、前後の無音でないセグメントに均等に分割されます。 True が指定されている場合、すべての無音部分が保持され、False が指定されている場合、何も保持されません。

Python

Posted by eightban