J'ai besoin de lire les données à partir d'un fichier wav au format pcm 24 bits, et convertir en flottant. J'utilise Python 2.7.2.Un moyen plus rapide de convertir le format wav pcm 24 bits en flottant?
Le paquet d'onde lit les données sous forme de chaîne, donc ce que j'ai essayé est:
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
Ceci est un peu plus rapide que mes approches antérieures, mais encore assez lent. Quelqu'un peut-il suggérer une méthode plus efficace?
Il est clair que vous avez NumPy. Pourquoi ne pas l'utiliser tout au long? –