Fourier transform

The Fourier transform named after Joseph Fourier, is a mathematical transformation employed to transform signals between time (or spatial) domain and frequency domain, which has many applications in physics and engineering. Examples include speech  recognition and music classification.

After transformation of an audio signal (time domain) into the frequency domain, we can observe the active frequencies.  For example, if you ever used an Audio program such as Audacity you may have seen the time spectrum (top picture). In the time spectrum we can see the volume on the y-axis but not the current active frequencies. After applying a Fourier transform to the original signal, we get the Fourier representation of that signal. (signal below). The signal represented shows a peak at 440Hz, it originates from a tuning fork.

 

 

The python code below records a sound signal from the microphone, applies a Fourier transform to it and displays it visually.

import pylab
import numpy as np
import pyaudio

chunk = 1000
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paUInt8,
                channels=1,
                rate=chunk,
                input=True,
                frames_per_buffer=chunk)

print("* recording ")
data = stream.read(chunk)

print("* recording stop")
print(str(type(data)))

data_array = np.fft.fft(pylab.array(np.fromstring(data, dtype='uint8')))
pylab.plot(data_array/2)
pylab.show()

stream.stop_stream()
stream.close()
p.terminate()

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>