Quel est le moyen le plus simple de lire un fichier son (.wav) en Python ? Par "le plus simple", j'entends à la fois le plus indépendant des plates-formes et celui qui nécessite le moins de dépendances. pygame est certainement une option, mais cela semble excessif pour un simple son.
Réponses
Trop de publicités?Pour Windows, vous pouvez utiliser winsound. Il est intégré dans
import winsound, sys
def beep(sound):
winsound.PlaySound('%s.wav' % sound, winsound.SND_FILENAME)
if __name__ == '__main__':
beep(sys.argv[1])
Vous devriez pouvoir utiliser ossaudiodev pour 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')
try:
from ossaudiodev import AFMT_S16_NE
except ImportError:
if byteorder == "little":
AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
else:
AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
dsp.setparameters(AFMT_S16_NE, nc, fr)
data = s.readframes(nf)
s.close()
dsp.write(data)
dsp.close()
(Crédit pour ossaudiodev : Bill Dandreta http://mail.python.org/pipermail/python-list/2004-October/288905.html )
La boîte à outils du son du goûter peut lire les fichiers wav, au et mp3.
s = Sound()
s.read('sound.wav')
s.play()
Utiliser définitivement Pyglet pour ça. C'est un gros paquet, mais c'est du pur python, sans modules d'extension. Ce sera certainement le plus facile pour le déploiement. Il est également doté d'un excellent support des formats et des codecs.
import pyglet
music = pyglet.resource.media('music.mp3')
music.play()
pyglet.app.run()
L'exemple sonore de pyMedia fait juste que . Cela devrait être tout ce dont vous avez besoin.
import time, wave, pymedia.audio.sound as sound
f= wave.open( 'YOUR FILE NAME', 'rb' )
sampleRate= f.getframerate()
channels= f.getnchannels()
format= sound.AFMT_S16_LE
snd= sound.Output( sampleRate, channels, format )
s= f.readframes( 300000 )
snd.play( s )