scikits.audiolabでwavデータの読み書きを行う
今までPython3を使っておりましたが、今更ながらGoogle App Engineを使いたかったこともあり、python2.7に移行しました。
こんなこともあろうかと、導入時に複数バージョンのPython環境を管理したり切り替えるためのツール、pyenvを入れていたので切り替えは非常に楽にできました。
Python3を使っていた頃は、waveとpcm2floatの組み合わせでwavデータの読み書きを行っていました。
from scipy.io import wavfile from utility import pcm2float import wave x = wave.open('test.wav', 'r') fs = x.getframerate() x = pcm2float(np.frombuffer(x.readframes(x.getnframes()), dtype='int16'), 'float64')
しかし、いちいち16bitのint型から-1~+1のfloat型に直して処理して、書き出す時にまたint型に変換する必要があったり、ステレオのデータを読み込むと1次元のアレイに左右左右と交互に信号が入ってたりと色々と面倒でした。
調べてみると、python2.7で使えるscikits.audiolabというライブラリが存在していて、かなりMatlabのwavreadライクに使えるとのことだったので導入してみました。
Python on Mac: scikits.audiolab のインストール
x, xfs, xfmt = al.wavread('test.wav')
うひょー!これ一行で読み込めます。読み込んだデータは-1~+1のfloat、そしてステレオではちゃんと2次元のアレイになっています。まさにMatlabライクでとても便利です。
導入がちょっと面倒なので、誰かとスクリプトをシェアする時はちょっと困るかもしれませんが、今後はこっち使っていこうと思います。
This Post Has 0 Comments