aneira mais rápida de converter do formato wav pcm de 24 bits para flutua
Preciso ler dados de um arquivo wav no formato pcm de 24 bits e converter para flutuar. Estou usando o Python 2.7.2.
O pacote wave lê os dados como uma string, então o que eu tentei é:
import wave
import numpy as np
import array
import struct
f = wave.open('filename.wav')
# read in entire wav file
wdata = f.readframes(nFrames)
f.close()
# unpack into signed integers and convert to float
data = array.array('f')
for i in range(0,nFrames*3,3):
data.append(float(struct.unpack('<i', '\x00'+ wdata[i:i+3])[0]))
# normalize sample values
data = np.array(data)
data = data / 0x800000
Isso é um pouco mais rápido do que minhas abordagens anteriores, mas ainda bem lento. Alguém pode sugerir um método mais eficiente?