No olvides que en la informática un error casi siempere puede tener varias resoluciones, por lo tanto nosotros aquí enseñaremos la mejor y más eficiente.
Solución:
>>> from scipy.io.wavfile import read
>>> a = read("adios.wav")
>>> numpy.array(a[1],dtype=float)
array([ 128., 128., 128., ..., 128., 128., 128.])
por lo general, serían bytes que luego son enteros … aquí solo lo convertimos a tipo flotante
puede leer sobre leer aquí https://docs.scipy.org/doc/scipy/reference/tutorial/io.html#module-scipy.io.wavfile
Siete años después de que se hiciera la pregunta…
import wave
import numpy
# Read file to get buffer
ifile = wave.open("input.wav")
samples = ifile.getnframes()
audio = ifile.readframes(samples)
# Convert buffer to float32 using NumPy
audio_as_np_int16 = numpy.frombuffer(audio, dtype=numpy.int16)
audio_as_np_float32 = audio_as_np_int16.astype(numpy.float32)
# Normalise float32 array so that values are between -1.0 and +1.0
max_int16 = 2**15
audio_normalised = audio_as_np_float32 / max_int16
Utilizar librosa
paquete y simplemente cargue el archivo wav a numpy array con:
y, sr = librosa.load(filename)
carga y decodifica el audio como una serie de tiempo y, representada como un punto flotante NumPy unidimensional array. La variable sr contiene la frecuencia de muestreo de y, es decir, el número de muestras por segundo de audio. Por defecto, todo el audio es mixed a mono y remuestreado a 22050 Hz en el momento de la carga. Este comportamiento se puede anular proporcionando argumentos adicionales a librosa.load().
Más información en la documentación de la biblioteca de Librosa
Te mostramos comentarios y puntuaciones
Si eres capaz, tienes la libertad de dejar una crónica acerca de qué le añadirías a este ensayo.