課題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 しなくても大丈夫のはずです。