pythonでwavファイルのサンプリングビット数(量子化ビット数)を変換する

はじめに

f:id:shirowanisan:20201221130657p:plain

pythonでwavファイルのサンプリングビット数(量子化ビット数)を変換します。

簡単にできるかと思いきや、調べてもあまり見つからなかったので自分でもまとめておきます。

やり方

PySoundFileライブラリで実現できるようなので、インストールします。

PySoundFile — PySoundFile 0.9.0 documentation

$ pip install pysoundfile

以下が実際のpythonのコードです。wavファイルを読み込み、サンプリングビット数をsubtypeで指定して書き込み。これで完了です。読み込み時のwavファイルは16, 24, 32bitのどれでも16bitとして書き込みできそうです。私は「32bit読み込み → 16bit書き込み」しか試していません。

import soundfile

data, fs = soundfile.read('input.wav')
soundfile.write('output.wav', data, fs, subtype='PCM_16')

指定できるサンプリングビット数は以下のようです。32bitはないんですね。読み込み時は32bitのwavファイルでも問題なく読み込めました。

subtype 説明
PCM_24 Signed 24 bit PCM
PCM_16 Signed 16 bit PCM
PCM_S8 Signed 8 bit PCM

参考文献

python - python3で24ビットのwavファイルを16または32ビットのファイルに変換する方法 - ITツールウェブ