audio – how to play wav file in python?

audio – how to play wav file in python?

You can use PyAudio. An example here on my Linux it works:

#!usr/bin/env python  

import pyaudio  
import wave  

#define stream chunk   
chunk = 1024  

#open a wav format music  
f =,rb)  
#instantiate PyAudio  
p = pyaudio.PyAudio()  
#open stream  
stream = = p.get_format_from_width(f.getsampwidth()),  
                channels = f.getnchannels(),  
                rate = f.getframerate(),  
                output = True)  
#read data  
data = f.readframes(chunk)  

#play stream  
while data:  
    data = f.readframes(chunk)  

#stop stream  

#close PyAudio  

The reason pygame changes your audio is mixer defaults to a 22k sample rate:

initialize the mixer module
pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=4096): return None

Your wav is probably 8k. So when pygame plays it, it plays roughly twice as fast. So specify your wav frequency in the init.

Pyglet has some problems correctly reading RIFF headers. If you have a very basic wav file (with exactly a 16 byte fmt block) with no other information in the fmt chunk (like fact data), it works. But it makes no provision for additional data in the chunks, so its really not adhering to the RIFF interface specification.

audio – how to play wav file in python?

Works for me on Windows:

>>> from playsound import playsound
>>> playsound(/path/to/a/sound/file/you/want/to/play.wav)

NOTE: This has a bug in Windows where it doesnt close the stream.
Ive added a PR for a fix here:

Leave a Reply

Your email address will not be published. Required fields are marked *