gefiltertete Frequenz einer wav plotten
Verfasst: Mittwoch 12. Dezember 2018, 13:05
Hey Leute ich lerne gerade wie man plottet in python und habe bereits ein programm geschrieben, welches die frequenz einer wav datei plottet. Nun möchte ich einen Filter auf die wav anwenden, welcher die frequenzen unter 300Hz und über 3400Hz filtert, also eine Art bandpass filter? Könnte mir jemand sagen was der einfachste weg ist dies zu tun? ich habe bereits eine ganze weile dazu recherchiert aber das gefundene hat mir nicht weitergeholfen. Z.B etwas wie wav_filename.low_pass_filter(3400)", doch das funktioniert nicht, wäre auch zu schön gewesen
.
Ich freue mich riesig über jeden der sich Zeit nimmt und mir versucht weiterzuhelfen. Liebe Grüße!

Ich freue mich riesig über jeden der sich Zeit nimmt und mir versucht weiterzuhelfen. Liebe Grüße!
Code: Alles auswählen
%matplotlib inline
from scipy.io import wavfile
from scipy.fftpack import fft, fftfreq
import matplotlib.pyplot as plt
from pydub import AudioSegment
wav_filename = "speech_clean (1).wav"
samplerate, data = wavfile.read(wav_filename)
total_samples = len(data)
limit = int((total_samples /2)-1)
fft_abs = abs(fft(data))
freqs = fftfreq(total_samples,1/samplerate)
fftfreq?
# plot the frequencies
plt.plot(freqs[:limit], fft_abs[:limit])
plt.title("Frequency spectrum of %s" % wav_filename)
plt.xlabel('frequency in Hz')
plt.ylabel('amplitude')
plt.show()