Imagine you are listening to a digital file that contains some random speech.

Now, while you are listening to it, you also hear in the background (spatially) some low volume content, either noise, other speakers, maybe even music, etc.

My question is, is there a way to filter this low volume content so I can just keep the primary dominant component, which in this case would be speech, and sort of attenuate everything else?

The only thing I can think of is some form of VAD or noise gate, or/and some spectral processing to do a threshold. But these methods seem too harsh on the data and end up usually filtering part of the speech as well.

Is there any other way of doing this or are the methods above pretty much the only way to do it?

  • $\begingroup$ hm, sounds like you want to use some audio signal model that weighs large oscillations stronger than smaller-amplitude additions to them... Try an Linear Prediction codec and reduce the bit depth, or go for a fully fledged psychoacoustic model like used in more complex audio compressors (MPEG4 variants) at higher compression ratios. $\endgroup$ – Marcus Müller Oct 31 '19 at 17:05
  • $\begingroup$ @MarcusMüller can you link me to some of the things you are mentioning? Maybe even a tutorial, source code, or research paper, so I can have an idea how to implement this myself. Thank you! $\endgroup$ – Dan Oct 31 '19 at 17:56
  • $\begingroup$ wikipedia: en.wikipedia.org/wiki/Linear_prediction is basically nothing but "I predict that this signal should progress with the same slope / linear factor (in some base) it did before. Compression happens when you don't store all bits of the error between that model and the real signal. $\endgroup$ – Marcus Müller Oct 31 '19 at 21:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.