WAVファイル, MP3ファイルを無音部分で分割
仕事で音声ファイルを無音部分で分割する必要がでてきたけど、 Audacityでやっても分割前の空音が残ってしまったり、保存時のファイル名指定が面倒だったり、 なかなか思い通りにならなかったのでPythonで処理しました。
必要なものなどのメモ書き。
環境
ライブラリのインストール
AnacondaでFFMPEGはmenpoさんが公開しているので、これを使った。
conda install -c menpo ffmpeg
また、pydubはpipでインストール.
pip install pydub
ファイルの読み込み~無音部分での分割
pydubにsplit_on_silenceというクラスがあるので、これを使うだけ。
from pydub import AudioSegment from pydub.silence import split_on_silence sound = AudioSegment.from_file("./untitled1.wav", format="wav") chunks = split_on_silence( sound, # 1500ms以上の無音がある箇所で分割 min_silence_len=1500, # -30dBFS以下で無音とみなす silence_thresh=-30, # 分割後500msだけ、無音を残す keep_silence=500 ) # 分割数の表示 print len(chunks)
表示された分割数で所望数通り、分割されているか確認してね。 silence_threshやmin_silence_lenのパラメータで多少の調整は必要。
ファイル名リストの作成~保存
作成したいファイル名が連番でなかったので、リストで作成(ここは好きにすればよい)。 その名前に従って分割した音声ファイルを保存。前節の分割数とfilelistの要素数が同じになるように注意。
filelist = ["file_hoge1","hogegennhogehoge","foo_bar","lucky_you",] for i, chunk in enumerate(chunks): chunk.export(u"./分割/"+filelist[i]+".wav", format="wav")
Easy peasy Japanesey!