I'm a little bit on a loss at my search for an algorithm due to audio signals.

I'm a sw-engineer with some basis knowledge in math here and there, know how to build and use FFT etc. but with no prof knowledge of dsp in special. So maybe my problem is quite easy to answer for a professional?

OK, my problem:

I have an audio signal and want to know if there is a frequency (or more) that stays for at least a special time. (Of course with some tolerance: "frequency that stays": amplitude doesn't change more than say 3%).

In other words:

If I have a look at the consecutive FFT windows I want to know if there is any frequency that is there for some time with about the same volume.

Yes, you will have guessed, my question is: Is there any interfering signal somewhere in the audio?

(Looking at the spectrogram you see them at first sight... maybe use a visual alg on that?)

I'm sure there will be prof way to find out, rather than to tinker an alg for myself again.


1 Answer 1

  1. Run short term fourier transform with proper windowing and frame size
  2. Calculate power for each frame in each band.
  3. Calculate running mean and standard deviation (in each band)
  4. Compare mean and ratio of standard deviation to mean to thresholds. If in any band the mean is high enough (above noise floor) and the ratio is low enough (steady state) then you have found a "frequency that stays".
  • $\begingroup$ My algorithm does what you want. You just need to do it in each band individually. I'll edit to make this clearer $\endgroup$
    – Hilmar
    Commented Aug 24, 2021 at 20:24
  • $\begingroup$ Thank you. This was about what was in my mind kind of vague too. But I was worried if that would take too much time. Which an advanced math dsp opterator maybe would do much better. So, I'll try ... and see. $\endgroup$
    – User42
    Commented Aug 25, 2021 at 8:10
  • $\begingroup$ So I tried. And I saw... that this way is not specific enough to identify "temporarily interfering frequences": If I lower the thresholds to find everything I would like to, it also finds signals I don't want to find (Actually don't see any interfering frequences with Audition spectrogram). Looks like the alg needs to be more sophisticated to take account surrounding of the frequencies, and maybe value of that frequency (bass seem be found "more likely"). Thankyou anyway! $\endgroup$
    – User42
    Commented Aug 29, 2021 at 9:06
  • $\begingroup$ I was able to improve the identification. As my audios have music content, whose typical frequency distribution is like red noise, I changed the distr. to white noise, so the bass aren't so volume dominant anymore. Still I wished the alg would be more specific, but well... it's not so bad. $\endgroup$
    – User42
    Commented Aug 31, 2021 at 16:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.