Time for action – replaying audio clips

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.

  1. Read the file with the 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.

  2. Apply the tile() function:
    repeated = np.tile(data, 4)
  3. Write a new file with the 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:

    Time for action – replaying audio clips

What just happened?

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()
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset