Plotting and visualizing an audio file is one of the most important processes in audio analysis. Audio analysis is the process of transforming, exploring, and interpreting audio signals recorded by digital devices so as to extract insights from the audio data.
In this article, we are going to plot a waveform of an audio file with matplotlib.
- Python installed
- Numpy installed
- Matplotlib installed
- Background in data analysis
As a first step, let's import the modules and libraries that we will need.
import wave import matplotlib.pyplot as plt import numpy as np
We will use wave module and numpy to preprocess the audio. We will use matplotlib for plotting the audio.
The audio file that we will use is a wave file.
Let's load the wave file that we want to plot
obj = wave.open('audio_file.wav', 'rb')
Let's print out the audio parameters such as number of channels, sample width, etc.
We will use
.getparams() method of the wave module
Output: Parameters: _wave_params(nchannels=1, sampwidth=2, framerate=22050, nframes=81585, comptype='NONE', compname='not compressed')
Now let's get the parameters that we will need for plotting the audio.
- Sample frequency, this is the number of samples per second
sample_freq = obj.getframerate()
- Number of samples, this is the total number of samples or frames in the audio file
n_samples = obj.getnframes()
- Signal wave, this is the wave amplitude which is the sound intensity.
signal_wave = obj.readframes(-1)
- Audio length, this is the duration of the audio.
duration = n_samples/sample_freq
Let's create a numpy object from the signal_wave. This will be plotted on the y-axis.
signal_array = np.frombuffer(signal_wave, dtype=np.int16)
Let's create a numpy object from duration. This will be plotted on the x-axis
time = np.linspace(0, duration, num=n_samples)
plt.figure(figsize=(15, 5)) plt.plot(time, signal_array) plt.title('Audio Plot') plt.ylabel(' signal wave') plt.xlabel('time (s)') plt.xlim(0, time) #limiting the x axis to the audio time plt.show()
In this article, we've learnt how to plot a waveform of an audio file. Apart from plotting the waveform, another plot we can get from an audio file is frequency spectrum. For the frequency spectrum, we plot sample frequency against time. To learn how to plot a frequency spectrum, checkout this link.