how to play wav file in python?

Tags: , , ,

I tried pygame for playing wav file like this:

import pygame

but It change the voice and I don’t know why! I read this link solutions and can’t solve my problem with playing wave file!

for this solution I dont know what should I import?

s = Sound()'sound.wav')

and for this solution /dev/dsp dosen’t exist in new version of linux :

from wave import open as waveOpen
from ossaudiodev import open as ossOpen
s = waveOpen('tada.wav','rb')
(nc,sw,fr,nf,comptype, compname) = s.getparams( )
dsp = ossOpen('/dev/dsp','w')
  from ossaudiodev import AFMT_S16_NE
except ImportError:
  if byteorder == "little":
    AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
    AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)

and when I tried pyglet It give me this error:

import pyglet

music ='mysound.wav')

nima@ca005 Desktop]$ python
Traceback (most recent call last):
  File "", line 4, in <module>
    music ='mysound.wav')
  File "/usr/lib/python2.7/site-packages/pyglet/", line 587, in media
    return media.load(path, streaming=streaming)
  File "/usr/lib/python2.7/site-packages/pyglet/media/", line 1386, in load
    source = _source_class(filename, file)
  File "/usr/lib/python2.7/site-packages/pyglet/media/", line 194, in __init__
    format = wave_form.get_format_chunk()
  File "/usr/lib/python2.7/site-packages/pyglet/media/", line 174, in get_format_chunk
    for chunk in self.get_chunks():
  File "/usr/lib/python2.7/site-packages/pyglet/media/", line 110, in get_chunks
    chunk = cls(self.file, name, length, offset)
  File "/usr/lib/python2.7/site-packages/pyglet/media/", line 155, in __init__
    raise RIFFFormatException('Size of format chunk is incorrect.') Size of format chunk is incorrect.
AL lib: ReleaseALC: 1 device not closed


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 ="/usr/share/sounds/alsa/Rear_Center.wav","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  

Source: stackoverflow