¿Crear un archivo wav flotante de 32 bits en python?

Quiero crear archivos flotantes WAV de 32 bits en Python (2.x). Mientras que los archivos WAV “estándar” generalmente usan int, muchas aplicaciones de audio profesionales procesan (y guardan) datos de audio como flotante. El módulo de wave estándar no es capaz de hacer esto: http://bugs.python.org/issue16525 ¿Alguien lo ha logrado sin usar módulos parcheados? Tnx por cualquier ayuda.

Esto sonaba divertido (mira mi asa), así que hice algo. Tal vez puedas usarlo. Si su secuencia de comandos de Python genera una forma de onda monofónica de valores numéricos que se encuentran entre [-1.0 .. 1.0], envíe esa forma de onda a través de sample_array y también especifique sample_rate (por ejemplo, 44100 o 48000). Esto le devolverá una matriz que puede escribir en el disco como un archivo .wav.

Probé la salida resultante de .wav en Windows Media Player, Apple QuickTime Player y VLC (todo en Windows 7). Todos lo jugaron.

 def float32_wav_file(sample_array, sample_rate): byte_count = (len(sample_array)) * 4 # 32-bit floats wav_file = "" # write the header wav_file += struct.pack(' 

Aquí está mi contribución … incluye tamaño de palabra arbitrario y número arbitrario de canales. Me he tomado la libertad de cambiar el archivo float32_wav_file para incluir un archivo guardado para prueba. Tenga en cuenta que la parte de datos multicanal de la estructura de archivos se entrelazó. Ese bucle podría ser muy python, estoy seguro.

 # see http://stackoverflow.com/questions/15576798/create-32bit-float-wav-file-in-python # see... http://blog.theroyweb.com/extracting-wav-file-header-information-using-a-python-script import struct def float32_wav_file(file_name, sample_array, sample_rate): (M,N)=sample_array.shape #print "len sample_array=(%d,%d)" % (M,N) byte_count = M * N * 4 # (len(sample_array)) * 4 # 32-bit floats wav_file = "" # write the header wav_file += struct.pack('