You are on page 1of 4

In [1]: import os

In [2]: import numpy as np


import wave
import matplotlib.pyplot as plt
%matplotlib inline
from scipy.io import wavfile

In [3]: sampling_rate, data = wavfile.read('C:/Users/Mahendra/Downloads/with_hum.wav')

In [4]: from IPython.display import Audio

In [5]: Audio('C:/Users/Mahendra/Downloads/with_hum.wav')

Out[5]:
0: 0 / 0:09

In [6]: sampling_rate

Out[6]: 8000

In [7]: data

Out[7]: array([ 22680, 20520, 12859, ..., -21027, -19391, -13993], dtype=int16)

In [8]: len(data)

Out[8]: 73113
In [9]: plt.title("Time domain Analysis of Original Signal") plt.plot(data)
plt.ylabel('Amplitude') plt.xlabel("Samples")

Out[9]: Text(0.5, 0, 'Samples')

In [10]: four_trans = np.fft.fft(data)

In [11]: four_trans

Out[11]: array([-71757. -1.25146471e-09j, -78819.41698708+9.56866006e+01j,


-78848.89819688+8.11666574e+01j, ...,
-78892.92966491-9.60802059e+01j, -78848.89819688-8.11666574e+01j,
-78819.41698708-9.56866006e+01j])

In [12]: amp = abs(four_trans)

In [13]: frequency = np.fft.fftfreq(len(data), 1/sampling_rate)


In [14]: plt.title("Frequency Response of Original Signal") plt.xlim([0, 4500])
plt.xlabel('Frequency (in Hz)') plt.plot(frequency, amp)

Out[14]: [<matplotlib.lines.Line2D at 0x18394fe5648>]

In [15]: from scipy import signal


b, a = signal.iirnotch(400, Q = 1, fs = 8000) freq, h = signal.freqz(b, a)

In [16]: fil_out = signal.lfilter(b, a, data)

In [17]: plt.title("Time domain Analysis of Filtered Signal") plt.ylabel('Amplitude')


plt.xlabel("Samples") plt.plot(fil_out)

Out[17]: [<matplotlib.lines.Line2D at 0x1839919fc48>]


In [18]: fil_four_trans = np.fft.fft(fil_out)

In [19]: fil_amp = abs(fil_four_trans)

In [20]: fil_frequency = np.fft.fftfreq(len(fil_out), 1/sampling_rate)

In [21]: plt.title("Frequency Response of Filtered Signal") plt.xlim([0, 4500])


plt.xlabel('Frequency (in Hz)') plt.plot(fil_frequency, fil_amp)

Out[21]: [<matplotlib.lines.Line2D at 0x183991e5288>]

In [22]: Audio(fil_out, rate=8000)

Out[22]:
0: 0 / 0:09

You might also like