I am looking for a way to remove a known signal, A, of fixed length, from an unknown audio stream, B, when signal A can be mixed into signal B at any point in time. I may be mistaking but converting signal A to the frequency domain and performing an STFT where the window is approximately the size of the data buffer of signal B then subtracting these wouldn't work because the amount of signal A that may be contained in signal B is unknown.

Simply, i want to do live noise removal, when the noise is known. What are some methods of approaching this?

  • $\begingroup$ Maybe cross correlation might be a better option. $\endgroup$
    – fibonatic
    Commented Jun 2, 2018 at 10:23
  • $\begingroup$ So, I'll check how similar the signals are using cross correlation and then based off that, perform spectral subtraction? $\endgroup$
    – Will D
    Commented Jun 2, 2018 at 10:34
  • $\begingroup$ It will tell you at what time A and B are most similar, and I think that peak also can tell you the magnitude. $\endgroup$
    – fibonatic
    Commented Jun 2, 2018 at 11:34
  • $\begingroup$ I would suggest to also try this NMF approach. It depends on a type of the signals but it should generally work well. $\endgroup$
    – jojeck
    Commented Jun 3, 2018 at 7:14
  • $\begingroup$ With regards to that approach, will that work if you are using an audio stream and only have a snippit of the data that you want to denoise in a buffer, or does it only work on two known sources? $\endgroup$
    – Will D
    Commented Jun 3, 2018 at 11:32


Your Answer

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

Browse other questions tagged or ask your own question.