Не могу записать aiff-файл с плавающей запятой в Python
Я разработчик аудио и хотел бы читать и записывать 32-битные аудиофайлы с плавающей запятой из python для тестирования. После нескольких часов пукания я понял, что мои проблемы ограничены форматом с плавающей запятой. Я могу успешно написать 16-битный файл с фиксированной запятой из массива numpy (хотя в документации aifc нет примеров).
Я также видел пару других библиотек PySoundFile и Audiolab, хотя они или были очень старыми и / или не устанавливались должным образом.
Как правильно сделать это в Python? Поражает отсутствие результатов Google по написанию звуковых файлов на python.
Следующий код не работает, но основан на очень похожем коде, который работает для 16-битных данных с фиксированной точкой.
def write_test_float_aiff(data):
f = aifc.open('test.aiff', 'w')
f.setframerate(44100)
f.setnchannels(1)
f.setsampwidth(4)
f.writeframes(data)
f.close()
r = np.arange(0,1000,.1)
s = np.sin(r)
write_test_float_aiff(s.byteswap().tostring())