WAVEファイルの読み込みと表示 (2018.4.29, 2020.10.4追記)

2018.5.5, 2018.5.20, 2019.2.15追記, 2020.10.4追記

Summary

PySoundFileやscipyでwavファイルを読み込んでmatplotlibでスペクトログラムを表示するサンプル。scipyは量子化ビット数16ビットまでのファイルしか読み込めない制約があるので、PySoundFileを推奨。スペクトログラムの色味をsoxのようにカッコ良くするにはmatplotlib.pyplot.clim(vmin, vmax)を使って表示される値のレンジを限定する必要がある。 importで指定されたpackageをインストールするには、PyCharmのメニューのFile –> Default Preferences –> Project Interpreterの画面で下部の+を押して検索して追加する。(Anacondaを使わずにPyCharmをインストールする方法の詳細はmacOSでPyCharmを使う(2018.4.30)に移動) “import soundfile as sf”では“PySoundFile”パッケージを使う。pysndfileやSoundFileではないので注意

2020.10.4追記 matplotlib関連のアップデートをしたtest6.pyが最新版です。そちらを参考にしてください。

WAVE readのサンプル

Pythonで音響信号処理というサイトを参考にしてMacでPythonを使ってWAVEファイルを読み込むサンプルコードを試してみた。

  1. test1.py: PySoundFile (import soundfile)というパッケージを使ってwavファイルを読み込む。 もとのサイトのソースでは、サンプル数がfftフレームをフレーム長の半分ずつシフトして処理していて、ちょうど端数サンプルなしに処理できるサンプル数でないと正しく処理できていなかった。最後に処理するフレームがfftサイズ未満の場合には、0を足してfftサイズにしてから処理するように修正した。

downloaded package

  1. test2.py: scipy.io.wavfileでもwavファイルを読み込めるが、量子化ビット数16ビットにまでしか対応していない。matplotlibで直接スペクトログラムの計算もできる。