Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't get scipy.io.wavfile.read() to work

I am trying to read a .wav file into an array so that I can then plot the array and do a FFT. I got the file open with the wave module and now I am struggling. I was advised to use scipy.io.wavfile.read(filename, mmap=False) but am not having any luck. This function should do exactly what I want it to do but it isn't. I am running Python 2.7 and maybe that is it. Please help me figure out how to make this work. The code I have written is below.

import scipy
import wave
harp=wave.open('/Users/williamweiss2/Desktop/Test 2/harp.wav','r')
frames_harp=harp.getnframes()
harp_rate,harp_data=scipy.io.wavfile.read(harp,mmap=False)

This is the error I am getting when I try to run the program.

---> harp_rate,harp_data=scipy.io.wavfile.read(harp,mmap=False)

AttributeError: 'module' object has no attribute 'io'

Any help would be greatly appreciated. Thanks in advance.

like image 696
W. Weiss Avatar asked Jun 21 '16 01:06

W. Weiss


1 Answers

You have confused SciPy's WAV module with Python's. Remove import wave, use import scipy.io.wavfile, and call scipy.io.wavfile.read.

Example:

>>> import scipy.io.wavfile
>>> FSample, samples = scipy.io.wavfile.read('myfile.wav')

SciPy's module does the job of converting from a byte string to numbers for you, unlike Python's module. See the linked docs for more details.

like image 185
mtrw Avatar answered Sep 22 '22 16:09

mtrw