ひばりログ

Apple関連やプログラミングなど趣味を書き綴る。

Pydubでモノラル変換やサンプリングレートを変えてwavを出力

目的

pythonを使って、wavファイルを一括でモノラル化やサンプリングレートなどを変更したい。

方法

まず、pydubのAudioSegmentを使って、音ファイルを読み込む。

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

ステレオからモノラルにしたいならば、set_channels()を使い、引数を1にする。

sound = sound.set_channels(1)

サンプリング周波数を変えるなら、set_frame_rate()、

量子化bitを変えるならset_sample_width()を使う。 ただし、引数はbyteなので、16bitにしたいならば2を指定する。

コード

コードはこちら。 globを使って、フォルダ内のwavファイルを一括処理できる。

import glob
from pydub import AudioSegment
from pathlib import Path

for name in glob.glob('before_wav/*.wav'):
    filename = Path(name).name
    sound = AudioSegment.from_file(name, format="wav")

    sound = sound.set_channels(1)
    sound = sound.set_frame_rate(24000)
    sound = sound.set_sample_width(2)
    sound.export("after_wav/"+filename, format="wav")

before_wavにあるwavファイルを全て、

モノラル、サンプリング周波数16000Hz、量子化ビット16bitのwavファイルを

after_wavに出力するというプログラムになっている。

参考

pydub/API.markdown at master · jiaaro/pydub · GitHub