How to Play Sound in Python

It is an easy task to play sound using Python script, because this language contains many modules to use script in order to to play or record sound. By using these modules, you can play audio files such as mp3, wav, and other audio file types. You must first install the sound module before using the module in the script. This tutorial will show how to install different types of Python modules to play sound.

Play Sound Using playsound

The playsound module is the simplest module to use for playing sound. This module works on both Python 2 and Python 3, and is tested to play wav and mp3 files only. It contains only one method, named playsound(), with one argument for Linux to take the audio filename for playing.

Installation:

Run the following pip3 command to install this module in Python 3:

Example: Playing wav and mp3 Files Using playsound

In the following script, a wav filename will be taken as input first and the file will be played using the playsound() method. Next, an mp3 filename will be input and played via the same method.

#!/usr/bin/env python3

# Import playsound module

from playsound import playsound


 

# Input an existing wav filename


wavFile = input(“Enter a wav filename: “)

# Play the wav file


playsound(wavFile)


 

# Input an existing mp3 filename


mp3File = input(“Enter a mp3 filename: “)

# Play the mp3 file


playsound(mp3File)

Output:

If both files exist, then the sound file will start to play.

How to Play Sound in Python Python

Play Sound Using pydub

The pydub module supports both Python 2 and Python 3. This module has many useful features other than Python sound modules. The pydub module supports different types of audio files. This module can be used to divide segments of any audio file or append segments to the audio files. You can also add a simple effect on top of the sound. This module directly depends on two other modules, called ffmpeg and libavcodec-extra. Before installing the pydub module, you must first install these modules.

Installation:

Run the following commands to install the pydub package of Python:

$ sudo apt-get install ffmpeg libavcodec-extra


$ pip3 install pydub

Example-1: Play Local wav and mp3 Files

This module uses the form_file() method for playing wav file and form_mp3() method for playing an mp3 file. The play() method is used here to play the wav and mp3 file:

#!/usr/bin/env python3

from pydub import AudioSegment

from pydub.playback import play

# Input an existing wav filename


wavFile = input(“Enter a wav filename: “)

# load the file into pydub


sound = AudioSegment.from_file(wavFile)

print(“Playing wav file…”)

# play the file


play(sound)

# Input an existing mp3 filename


mp3File = input(“Enter a mp3 filename: “)

# load the file into pydub


music = AudioSegment.from_mp3(mp3File)

print(“Playing mp3 file…”)

# play the file


play(music)

Output:

If both wav and mp3 filenames exist, then the sound will play, and the following output will appear:

How to Play Sound in Python Python

Example-2: Download and Play wav and mp3 Files from URL

The following example shows how any wav or mp3 file can be played after downloading the file from a valid URL location. The urllib module is used in the script to download the sound file.

#!/usr/bin/env python3

# Import necessary modules

from pydub import AudioSegment

from pydub.playback import play

import urllib

# Set the wav filename


filename = “service-bell.wav”

# Download the wav file from url

print(“downloading wav file….”)

urllib.request.urlretrieve(“http://soundbible.com/grab.php?id=2218&type=wav”, filename)

# load the file into pydub


sound = AudioSegment.from_file(filename)

print(“Playing wav file…”)

# play the file


play(sound)

# Set the mp3 filename


filename = “birds.mp3”

# Download an mp3 file

print(“downloading mp3 file….”)

urllib.request.urlretrieve(“http://soundbible.com/grab.php?id=2207&type=mp3”, filename)

# load the file into pydub


birdsound = AudioSegment.from_mp3(filename)

print(“Playing mp3 file…”)

# Play the result


play(birdsound)

print(“Finished.”)

Output:

The sound file will start to play after completing the download, and the following output will appear:

How to Play Sound in Python Python

Play sound using tksnack

The tksnack module depends on another module, named tkinter, to activate a tk object in the script.  tksnack commands can be used after initializing the tk object. You must install both tkinker and tksnack packages for Python 3.

Installation:

$ sudo apt-get install python3-tk


$ sudo apt-get install python3-tksnack

Example: Play wav File Using tksnack

In the following script, the tkSnack module is initialized by using the tkinter object, and the next play() method is used to play the wav file. Here, the blocking argument specifies that the sound will play asynchronously.

#!/usr/bin/env python3

# Import necessasry modules

import tkinter

import tkSnack

import os


 

# Initialize tk object to use tksnack


root = tkinter.Tk()


tkSnack.initializeSnack(root)


 

#Define tksnack object


sound = tkSnack.Sound()


 

# Input an existing wav filename


wavFile = input(“Enter a wav filename: “)


 

if os.path.exists(wavFile):


  # Read the file


  sound.read(wavFile)


  # Play sound


  sound.play(blocking=1)

else:


  # Print the message if the file path does not exist


  print (“Wav file does not exist.”)

Output:

The sound will start to play if the wav file exists, and the following output will appear:

How to Play Sound in Python Python

Play Sound Using simpleaudio

The simpleaudio module is a package of Python 3 that can play audio sounds. This module is mainly designed to play wav files and NumPy arrays. You will need to install the package before using this module. This sound package directly depends on another package called libasound2-dev. You will need to install the libasound2-dev package first, and after that, you can install the simpleaudio package.

Installation:

Run the following command to install the packages:

$ sudo apt-get install libasound2-dev


$ pip3 install simpleaudio

Example: Play wav File Using simpleaudio

In the following script, any wav filename will be taken as the input. If the file exists, then the script will play the sound file; otherwise, the script will display an error message.

#!/usr/bin/env python3

# Import simpleaudio sound module

import simpleaudio as sa

# Input an existing wav file name


wavFile = input(“Enter a wav filename: “)


 

# Play the sound if the wav file exists

try:


    # Define object to play


    w_object = sa.WaveObject.from_wave_file(wavFile)


    # Define object to control the play


    p_object = w_object.play()


    print(“Sound is playing…”)


    p_object.wait_done()


    print(“Finished.”)

# Print error message if the file does not exist

except FileNotFoundError:


    print(“Wav File does not exists”)

Output:

The sound file will play, and the following output will appear after playing the sound:

How to Play Sound in Python Python

Conclusion

The basic uses of four Python modules to play sound are explained in this tutorial by using a number of examples. The sound playing task is shown in this tutorial only, but you can record, edit, and different sound-related tasks by using Python script.

About the author

How to Play Sound in Python Python

Fahmida Yesmin

I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.