¿Una forma más rápida de convertir del formato wav pcm de 24 bits a flotante?

Necesito leer datos de un archivo wav en formato pcm de 24 bits y convertirlos en flotante. Estoy usando Python 2.7.2.

El paquete wave lee los datos como una cadena, así que lo que he intentado es:

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

Esto es bastante más rápido que mis enfoques anteriores, pero sigue siendo bastante lento. ¿Alguien puede sugerir un método más eficiente?

Respuestas a la pregunta(2)

Su respuesta a la pregunta