Hi everyone,
I have a problem which seemed simple enough to me at first but which is turning into a bit of a nightmare.
Basically, I have a signal AND a noise profile. The noise is essentially machine background noise. I'd like to subtract the known noise from the rest of the signal.
I have looked into Spectrum Subtraction and functions such as Boll/Berouti/Multiband Spectra Subtraction and papers but the results I have obtained are dubious. I compared these to what can be obtained using Audacity's noise profile remover. A comparison of the resulting spectrograms is below. Base Signal and Noise Profile
The noise to be removed is highlited here in red.
The spectrogram seen from above.
Spectra Subtraction
As you can see, the spectra subtraction method does reduce the power of the noise section you point to, but it also introduces a lot of artefacts in the signal seen below in red.
Audacity Noise Profile Removal
Here, while the scale is obviously different, you can see how much different the removal method is in Audacity compared to the spectra subtraction function.
In terms of standard denoising, I have looked into Wavelet denoising but it doesn't seem to be what I'm looking for, as it doesn't work based on a profile and, as my core data isn't a smooth signal but rather something which many would consider as noise, I cannot risk losing data to a smotthing-based noise removal algorithm.