How to play audio file with pyaudio?

I do not understand the sample material for pyaudio. It seems they wrote a whole little program, and that threw me away.

How can I just play one audio file?

The format is not a problem, I just want to know the minimum code needed to play the audio file.

+4
source share
2 answers

The example seems pretty clear to me. You just save the example as a call to playwav.py:

python playwav.py my_fav_wav.wav

Wave example with additional comments:

 import pyaudio import wave import sys # length of data to read. chunk = 1024 # validation. If a wave file hasn't been specified, exit. if len(sys.argv) < 2: print "Plays a wave file.\n\n" +\ "Usage: %s filename.wav" % sys.argv[0] sys.exit(-1) ''' ************************************************************************ This is the start of the "minimum needed to read a wave" ************************************************************************ ''' # open the file for reading. wf = wave.open(sys.argv[1], 'rb') # create an audio object p = pyaudio.PyAudio() # open stream based on the wave object which has been input. stream = p.open(format = p.get_format_from_width(wf.getsampwidth()), channels = wf.getnchannels(), rate = wf.getframerate(), output = True) # read data (based on the chunk size) data = wf.readframes(chunk) # play stream (looping from beginning of file to the end) while data != '': # writing to the stream is what *actually* plays the sound. stream.write(data) data = wf.readframes(chunk) # cleanup stuff. stream.close() p.terminate() 
+12
source

Maybe this little shell (warning: created on their knees) of their example will help you understand the meaning of the code they wrote.

 import pyaudio import wave import sys class AudioFile: chunk = 1024 def __init__(self, file): """ Init audio stream """ self.wf = wave.open(file, 'rb') self.p = pyaudio.PyAudio() self.stream = self.p.open( format = self.p.get_format_from_width(self.wf.getsampwidth()), channels = self.wf.getnchannels(), rate = self.wf.getframerate(), output = True ) def play(self): """ Play entire file """ data = self.wf.readframes(self.chunk) while data != '': self.stream.write(data) data = self.wf.readframes(self.chunk) def close(self): """ Graceful shutdown """ self.stream.close() self.p.terminate() # Usage example for pyaudio a = AudioFile("1.wav") a.play() a.close() 
+13
source

All Articles