10

I'm looking for an elegant way, without a ton of dependencies as in some of the solutions I googled up.

Thanks for any ideas.

GJ.
  • 5,226
  • 13
  • 59
  • 82

3 Answers3

41

If you want to do away with external dependencies entirely, and are running OS X 10.5+, you can use the included command-line audio player, afplay, along with the subprocess module.

I haven't tested it, but this should work:

import subprocess
audio_file = "/full/path/to/audio.wav"

return_code = subprocess.call(["afplay", audio_file])
Andrew
  • 12,821
  • 2
  • 26
  • 18
  • Tested it. Works great. Simple and effective on OS X. It does freeze the execution, however, while it plays. Perhaps there is an async call for this? – Praxiteles Feb 04 '16 at 06:41
  • This works very well for me on Mac OS X El Capitan, with Python 3.5. Thanks so much! –  Mar 20 '16 at 11:05
  • on linux after installing tool called `sox` above code works if you replace afplay with just play – Scott Stensland Apr 17 '18 at 21:23
4

As far as I know PyGame is the most portable way to play music: http://www.pygame.org/docs/ref/music.html

You can find its package here: http://www.pygame.org/download.shtml

0

The leanest most portable way I've found to play .mp3 and .wav files is playsound.

import playsound

# wait for the sound to finish playing?
blocking = True

playsound.playsound("yourfile.mp3", block=blocking)
user2682863
  • 3,097
  • 1
  • 24
  • 38