pythonでwavファイルのサンプリングビット数(量子化ビット数)を変換します。
簡単にできるかと思いきや、調べてもあまり見つからなかったので自分でもまとめておきます。
PySoundFileライブラリで実現できるようなので、インストールします。
$ 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 |