We will download a WAV file of Austin Powers exclaiming "Smashing baby". This file can be converted to a NumPy array with the read()
function from the scipy.io.wavfile
module. The write()
function from the same package will be used to create a new WAV file at the end of this section. We will further use the tile()
function to replay the audio clip several times.
read()
function:sample_rate, data = wavfile.read(WAV_FILE)
This gives us two items – sample rate and audio data. For this section we are only interested in the audio data.
tile()
function:repeated = np.tile(data, 4)
write()
function:wavfile.write("repeated_yababy.wav", sample_rate, repeated)
The original audio data and the audio clip repeated four times appear in the following plot:
We read an audio clip, repeated it four times, and then created a new WAV file with the new array (see repeat_audio.py
):
from __future__ import print_function from scipy.io import wavfile import matplotlib.pyplot as plt import urllib.request import numpy as np response = urllib.request.urlopen('http://www.thesoundarchive.com/austinpowers/smashingbaby.wav') print(response.info()) WAV_FILE = 'smashingbaby.wav' filehandle = open(WAV_FILE, 'wb') filehandle.write(response.read()) filehandle.close() sample_rate, data = wavfile.read(WAV_FILE) print("Data type", data.dtype, "Shape", data.shape) plt.subplot(2, 1, 1) plt.title("Original audio signal") plt.plot(data) plt.grid() plt.subplot(2, 1, 2) # Repeat the audio fragment repeated = np.tile(data, 4) # Plot the audio data plt.title("Repeated 4 times") plt.plot(repeated) wavfile.write("repeated_yababy.wav", sample_rate, repeated) plt.grid() plt.tight_layout() plt.show()