Applying a variable notch filter to an audio signal

4 ビュー (過去 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 件のコメント
nstalliti
nstalliti 2014 年 5 月 21 日
did you find a solution for this question?

サインインしてコメントする。

回答 (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 Center および File ExchangeAudio Processing Algorithm Design についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by