Skip to content

Latest commit

 

History

History
80 lines (47 loc) · 43.7 KB

fourier_transform.md

File metadata and controls

80 lines (47 loc) · 43.7 KB

In [1]:

%matplotlib inline
import seaborn
import numpy, scipy, matplotlib.pyplot as plt, librosa, IPython.display as ipd

← Back to Index

Fourier Transform¶

Let's download an audio file:

In [2]:

import urllib
filename = 'c_strum.wav'
urllib.urlretrieve('http://audio.musicinformationretrieval.com/c_strum.wav', filename=filename)
x, sr = librosa.load(filename)

In [3]:

print x.shape
print sr

(102400,)
22050

Listen to the audio file:

In [4]:

ipd.Audio(x, rate=sr)

Out[4]:

Your browser does not support the audio element.

Fourier Transform¶

The Fourier Transform (Wikipedia) is one of the most fundamental operations in applied mathematics and signal processing.

It transforms our time-domain signal into the frequency domain. Whereas the time domain expresses our signal as a sequence of samples, the frequency domain expresses our signal as a superposition of sinusoids of varying magnitudes, frequencies, and phase offsets.

To compute a Fourier transform in NumPy or SciPy, use scipy.fft:

In [5]:

X = scipy.fft(x)
X_mag = numpy.absolute(X)
f = numpy.linspace(0, sr, len(X_mag)) # frequency variable

Plot the spectrum:

In [6]:

plt.figure(figsize=(13, 5))
plt.plot(f, X_mag) # magnitude spectrum
plt.xlabel('Frequency (Hz)')

Out[6]:

<matplotlib.text.Text at 0x115d84fd0>

Zoom in:

In [7]:

plt.figure(figsize=(13, 5))
plt.plot(f[:5000], X_mag[:5000])
plt.xlabel('Frequency (Hz)')

Out[7]:

<matplotlib.text.Text at 0x11684fe10>

← Back to Index