Welcome, guest | Sign In | My Account | Store | Cart
'''
Module to play WAV files using PyAudio.
Author: Vasudev Ram - http://jugad2.blogspot.com
Adapted from the example at:
https://people.csail.mit.edu/hubert/pyaudio/#docs
PyAudio Example: Play a wave file.
'''


import pyaudio
import wave
import sys
import os.path
import time

CHUNK_SIZE
= 1024

def play_wav(wav_filename, chunk_size=CHUNK_SIZE):
   
'''
    Play (on the attached system sound device) the WAV file
    named wav_filename.
    '''


   
try:
       
print 'Trying to play file ' + wav_filename
        wf
= wave.open(wav_filename, 'rb')
   
except IOError as ioe:
        sys
.stderr.write('IOError on file ' + wav_filename + '\n' + \
        str
(ioe) + '. Skipping.\n')
       
return
   
except EOFError as eofe:
        sys
.stderr.write('EOFError on file ' + wav_filename + '\n' + \
        str
(eofe) + '. Skipping.\n')
       
return

   
# Instantiate PyAudio.
    p
= pyaudio.PyAudio()

   
# Open stream.
    stream
= p.open(format=p.get_format_from_width(wf.getsampwidth()),
        channels
=wf.getnchannels(),
        rate
=wf.getframerate(),
                    output
=True)

    data
= wf.readframes(chunk_size)
   
while len(data) > 0:
        stream
.write(data)
        data
= wf.readframes(chunk_size)

   
# Stop stream.
    stream
.stop_stream()
    stream
.close()

   
# Close PyAudio.
    p
.terminate()

def usage():
    prog_name
= os.path.basename(sys.argv[0])
   
print "Usage: {} filename.wav".format(prog_name)
   
print "or: {} -f wav_file_list.txt".format(prog_name)

def main():
    lsa
= len(sys.argv)
   
if lsa < 2:
        usage
()
        sys
.exit(1)
   
elif lsa == 2:
        play_wav
(sys.argv[1])
   
else:
       
if sys.argv[1] != '-f':
            usage
()
            sys
.exit(1)
       
with open(sys.argv[2]) as wav_list_fil:
           
for wav_filename in wav_list_fil:
               
# Remove trailing newline.
               
if wav_filename[-1] == '\n':
                    wav_filename
= wav_filename[:-1]
                play_wav
(wav_filename)
                time
.sleep(3)

if __name__ == '__main__':
    main
()

History