pythonでwavファイルのサンプリング周波数を変換する

はじめに

f:id:shirowanisan:20201221130657p:plain

pythonでwavファイルのサンプリング周波数を変換する方法を記述します。

必要なライブラリ

使うライブラリは「librosa」と「PySoundFile」なのでインストールします。

この記事は以下のバージョンでの実装を記述しています。

$ pip install librosa==0.8.0
$ pip install PySoundFile==0.9.0.post1

librosa — librosa 0.8.0 documentation

PySoundFile — PySoundFile 0.9.0 documentation

コード

以下のように記述すると、48kHzのinput.wavを24kHzのoutput.wavとして出力できます。down samplingでもup samplingでも大丈夫です。

import librosa
import soundfile as sf

orig_sr = 48000
target_sr = 24000

wav, _ = librosa.load('input.wav', sr=orig_sr)
resampled_wav = librosa.resample(wav, orig_sr, target_sr)
sf.write('output.wav', resampled_wav, target_sr, 'PCM_16')