Python can be used to perform a variety of tasks. One of them is creating a voice recorder. We can use python’s sounddevice module to record and play audio. This module along with the wavio or the scipy module provides a way to save recorded audio.
- sounddevice: This module provides functions to play and record NumPy arrays containing audio signals. Let’s install it by running the following commapip3 install sounddevice.
- We can use either wavio and scipy to save the recorded audio in file format. We will see both of them here.
- To install wavio:
pip install wavio
To install scipy:
pip install scipy
Now, we are done with installing the required modules. So, let’s write the code.
First, import the required libraries.
# import required libraries
import sounddevice as sd
from scipy.io.wavfile import write
import wavio as wv
Now, before starting the recorder, we have to declare a few variables. The first one is the sampling frequency of the audio (in most cases this will be 44100 or 48000 frames per second) and the second is recording duration. We have to specify the duration in seconds so that it stops recording after that duration.
So, let’s declare them too.
# Sampling frequency
freq = 44100
# Recording duration
duration = 5
Now, we are ready to start the recorder. It will create a NumPy array of the recorded audio.
Channels – The position of each audio source within the audio signal is known a channel.
Here number of channels can be 1 or 2 only.
# Start recorder with the given values of
# duration and sample frequency
recording = sd.rec(int(duration * freq),
# Record audio for the given number of seconds
Now, we are done with recording the audio. So, let’s save it. To save the audio file, we can either use the scipy module or the wavio module. Let’s go through them one by one.
We will use the write function from scipy.io.wavfile to convert the NumPy array to an audio file.
# This will convert the NumPy array to an audio
# file with the given sampling frequency
write("recording0.wav", freq, recording)
We can also use the write function from the wavio library.
# Convert the NumPy array to audio file
wv.write("recording1.wav", recording, freq, sampwidth=2)
sounddevice as sd
wavio as wv
, freq, recording)
, recording, freq, sampwidth
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses
are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!