Import Numpy As NP
Import Numpy As NP
import wave
import struct
frequency=1000
num_samples=48000
sampling_rate=48000.0
amplitude=16000
file= "test.wav"
nframes=num_samples
comptype="NONE"
compname="not compressed"
nchannels=1
sampwidth=2
wav_file=wave.open(file, 'w' )
wav_file.setparams((nchannels, sampwidth, int (sampling_rate),nframes, comptype,compname))
for s in sine_wave:
wav_file.writeframes(struct.pack('h', int(s*amplitude)))
frame_rate = 48000.0
infile= "test.wav"
num_samples = 48000
data = wav_file.readframes(num_samples)
wav_file.close()
data = np.array(data)
data_fft= np.fft.fft(data)
data_fft= np.fft.fft(sine_wave)
abs(data_fft[0])
plt.subplot(2,1,1)
plt.plot(data[:300])
plt.subplot(2,1,2)
plt.plot(frequencies)
plt.title("Frequencies found")
plt.xlim(0,1200)
plt.show()
noisy_freq= 50
num_samples= 48000
sampling_rate= 48000.0
sine_wave= np.array(sine_wave)
sine_noise= np.array(sine_noise)
plt.subplot(3,1,1)
plt.subplots_adjust(hspace=.5)
plt.plot(sine_wave[:500])
plt.subplot(3,1,2)
plt.title("Noisy wave")
plt.plot(sine_noise[:4000])
plt.subplot(3,1,3)
plt.title("Original + Noise")
plt.plot(combined_signal[:3000])
plt.show()
data_fft= np.fft.fft(combined_signal)
freq= (np.abs(data_fft[:len(data_fft)]))
plt.plot(freq)
plt.title("Before filtering: Will have main signal (1000Hz) + noise frequency (50Hz)")
plt.xlim(0,1200)
plt.show()
plt.close()
filtered_freq= [f if (950 < index < 1050 and f > 1)else 0 for index, f in enumerate(freq)]
plt.plot(filtered_freq)
plt.xlim(0,1200)
plt.show()
plt.close()
recovered_signal= np.fft.ifft(filtered_freq)
plt.subplot(3,1,1)
plt.subplots_adjust(hspace=.5)
plt.plot(sine_wave[:500])
plt.subplot(3,1,2)
plt.title("Noisy wave")
plt.plot(combined_signal[:4000])
plt.subplot(3,1,3)
plt.plot((recovered_signal[:500]))
plt.show()