У меня есть проблема, написание 2d Numpy массив в виде файла волны (аудио)scipy.io: не могу написать WAVFile
Согласно документу я должен написать 2d Int16 Numpy массива
https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.io.wavfile.write.html
16-bit PCM -32768 +32767 int16
Как мой NumPy массив в пределах (-1,1) в формате float32 я сначала преобразовать его в 16 бит Int
stereoAudio = ((stereoAudio * bits16max)).astype('int16')
print "argmax : " + str(np.amax(stereoAudio))
print "argmin : " + str(np.amin(stereoAudio))
outWaveFileName = "out/file.wav"
print "writing " + outWaveFileName
wavfile.write(outWaveFileName,44100,stereoAudio)
я получаю следующий результат:
argmax : 4389
argmin : -4381
writing out/file.wav
Traceback (most recent call last):
File "/Users/me/file.py", line 132, in <module>
wavfile.write(outWaveFileName,44100,stereoAudio)
File "//anaconda/lib/python2.7/site-packages/scipy/io/wavfile.py", line 353, in write
bytes_per_second, block_align, bit_depth)
error: ushort format requires 0 <= number <= USHRT_MAX
мои значений между -4391 и 4389 в 16bits форматирования должно быть в порядке. но мои данные интерпретируются как ushort
ссылка на ваш вопрос мертв ... –