課題3−2の音の書き出しについて - ShounoClassML/2018Memo GitHub Wiki
音の書き出しは、scipy
の io を使います。scipy.io.wavfile
モジュールから、write
メソッドを import すれば良いのですが、引数情報は
scipy.io.wavfile.write(fname, Fs, data) fname: ファイル名 Fs: サンプリング周波数(整数値) data: データ列。実数値の配列の場合は [-1, +1] の振幅であれば良い
です。
詳細は https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.io.wavfile.write.html を参照してほしいのですが、データ列の型は、実数型の場合、32bit float じゃないとだめっぽいです。
なので、配列を numpy.float32
で作るか、書き込む前に型変換してください。
write('hoge.wav', Fs, data)
な部分を
data2 = data.astype(float32) write('hoge.wav', Fs, data2)
のようにすることで対応可能です。
課題のサンプルコードは Fs
が実数値なので、エラーを吐きます。この場合は
write('hogehoge.wav', int(Fs), s.getSound.reshape((N,1)))
のようにFs
を整数値に変換して渡してください。
また、課題クラスの getSound
メソッドが1次元配列のモノラル信号しか返さないのであれば、
write( 'hogehoge.wav', int(Fs), s.getSound())
のように reshape
しなくても大丈夫のはずです。