読者です 読者をやめる 読者になる 読者になる

wavread/wavwriteからaudioread/audiowriteへの移行

Matlab/Octave

Matlab R2012b以降のMatlabではwavread/wavwriteではなくaudioread/audiowriteが推奨されるようになり、エディタ画面でも黄色の警告メッセージ(「deprecatedだよ」)が表示されていました。Matlab R2014bのエディタ画面では赤色のエラーメッセージ(「removedだよ」)を表示するように変更になりました。まだMatlab R2014bでもwavread/wavwriteは使えていますが、近い将来には削除されることになるのは確実です。

そこで、wavread/wavwriteを使っていた箇所をどのようにaudioread/audiowriteで書き換えれば良いかを紹介します。

これまでのwavreadでは、信号、サンプリング周波数、量子化ビット数の3つの情報が得られていました。

[x, fs, nbits] = wavread('soundfile.wav');

audioreadではWAVファイルだけでなく、FLACや、プラットフォームによってはMP3やAACも読み込めます。そのため、量子化ビット数についてはオプション扱いに変更になりました。上記のコードと同じく3つの情報が欲しい場合には、以下のようにやります。

[x, fs] = audioread('soundfile.wav');
ainfo = audioinfo('soundfile.wav');
nbits = ainfo.BitsPerSample;

同様に、WAVファイルの書き出しの場合は

wavwrite(y, fs, nbits, 'soundfile_output.wav');

とやっていたのを以下のように変更します。引数の順序が変更になったので注意が必要です。

audiowrite('soundfile_output.wav', y, fs, 'BitsPerSample', nbits);

僕は、これまで実験用の音素材をWAVで保存していたのですが、これからは保存容量の節約のためにaudioread/audiowriteでFLACに保存しようと思います。 (ちなみに、Mac版のMatlabで書き出せるのはFLACAACOGG、WAVの4種類で、認識できる拡張子は.flac、.m4a、.mp4、.oga、.ogg、.wavの6種類です。読み込みだけならMP3などもOK。)