Removing a tone from a recorded audio signal
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I'm trying to remove a specific tone (frequency) from a recorded audio sample (a song with a tone played over it). I have code written that identifies the tone, and I tried to use the iircomb function to design a notch filter and remove this frequency.
The code I'm using doesn't give any errors, but it doesn't seem to work - the output audio signal is much too short compared to the input audio signal. Here's the code:
Q = 35;
bw = maxFreq/(Fs/2)/Q;
[b,a] = iircomb(round(Fs/maxFreq),bw);
yOut = filter(yAudio,a,b);
sound(yOut,sampleRate);
...where yAudio is the recorded (input) audio signal, sampleRate is 44100 (times per second), maxFreq is the identified frequency I'm trying to remove, and yOut is the output audio signal I want to obtain.
How can I do this / why isn't this design working? When I debug this function, I see that 'a' and 'b' are of size 1x65, but the original input audio signal yAudio is 235200x1 (this varies depending on the length of time I record the sample).
Thanks!
0 Kommentare
Antworten (1)
Star Strider
am 22 Apr. 2017
You might get better results with the filtfilt function, instead of filter, although I don’t understand the shorter output signal with filter. (I rarely use filter, so I’m not familiar with it.)
A different filter design, such as that outlined in the documentation for Remove the 60 Hz Hum from a Signal (link) using the designfilt function could be worth a go. Make the requisite changes to the arguments to filter the frequency you want.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Audio Processing Algorithm Design finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!