Applying a variable notch filter to an audio signal

조회 수: 7 (최근 30일)
Tamir Raz
Tamir Raz 2012년 6월 18일
댓글: nstalliti 2014년 5월 21일
Hello,
I have a signal, divided to frames, and for each frame I wish to apply a different notch filter. each notch filter is of multiple frequencies. My goal is to remove positive feedback frequencies, so the output signal should sound almost the same.
I've tried two methods for filtering so far. One is to create a single-frequency notch filter using Matlab's iirnotch for each frequency (every frame), and convolve the numerators and denominators to obtain the complete notch filter for the frame. The other is to filter the frame repeatedly, each time with a different notch filter, according to the frequencies to be removed. at that point, the output signal did sound better, the notch filters did their job, but the filtered regions presented a rattle noise.
I've tried to solve this problem by using filtic. It only caused worse beeping sounds in the filtered regions of the signal. In an attempt to avoid using filtic, I've tried using the DSP system toolbox and the method described here: http://www.mathworks.com/help/toolbox/dsp/ref/dsp.digitalfilterclass.html. It caused the same violent beeps.
How can I get the signal to be filtered smoothly? I've been trying to get this to work properly for quite some time now, and would appreciate your help.

답변 (1개)

Karthik
Karthik 2012년 6월 20일
I don't have a solution to your problem but I've been using iir peak filters on my data as well. I have about 10 peak filters per frame of data and I use filtfilt to apply each filter to a given frame and add the data back. I learned 2 things which I hope might help you solve your problem.
1. Combining all the filters into a single filter didn't really work. I had to apply individual filters since there is a large group delay with each filter which varies for each filter. Hence the need for filtfilt
2. If you are adding data back together after filtering, then remember to use a high suppression for your loss since depending on how many filter you have, you may recover a large amount of it from other filters that don't suppress the frequencies of interest.
3. There is a finite rise time for each filter where the signal "ripples". I was able to get around this problem by saving filter state between consecutive frames.
Hope that helps.
Karthik
  댓글 수: 1
Tamir Raz
Tamir Raz 2012년 6월 22일
Thank you for the answer.
I did use filttfilt and the results improved significantly.
I think that your third point might help as well. Can you please detail about "saving filter state between consecutive frames"?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Audio Processing Algorithm Design에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by