How Can I filter an audio Signal?

The aim of this function is to separate the voice of a speaker from a siren in the background. Basically, this function applies a filter on the input. I Want to design and implement such a filter, either by using difference systems or Fourier multiplication. (hint: the desired filter is band-stop; i.e., some frequencies in the middle that mainly contribute to the voice of siren should be blocked) We have 2 inputs: "vector_of_samples" is a vector that contains the samples of the audio file. It can be either vertical or horizontal. If the elements are complex, the imaginary parts will be ignored.
"Fs" is the sampling frequency (HZ) which is used for sampling the audio
signal.

3 Comments

You should use thershold values . means remove the noise below or ebove the specific range. Good luck
Thresholding won't get the siren unless the siren is always louder than the other sounds, which is not the case because a siren oscillates. The band stop filter is probably best for simple cases, though Independent Components Analysis (ICA) is better for more complicated situations (i.e., the "Cocktail Party Problem"). See this
Thats right,in some cases thershold works,depends on whats our case!!

Sign in to comment.

Answers (1)

Take the fft and plot the real part. Since the siren was specified that you'll need a band stop filter, you will notice a spike in the voice spectrum region that represents the energy of the tone of the siren. You may notice another spike in a low frequency that represents the warbling but it's probably less than 5 hertz. So then just set that to zero and inverse fft.
realFreqSignal(index1:index2) = 0; % Band stop.
timeDomainSignal = ifft(realFreqSignal);
You need to determine what index1 and index2 are.

Categories

Find more on Audio Processing Algorithm Design in Help Center and File Exchange

Asked:

on 27 Dec 2013

Commented:

on 28 Dec 2013

Community Treasure Hunt

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

Start Hunting!