goatchurchprime / two-voip-godot-4

MIT License
38 stars 8 forks source link

Implement xiph noise suppression #14

Closed goatchurchprime closed 3 months ago

goatchurchprime commented 3 months ago

There's a highly developed library for noise reduction (fans, traffic, keyboard noise) from the same place we get the libopus code https://github.com/xiph/rnnoise so I have confidence of the quality and compatibility of this solution.

It uses a combination of some classical signal processing and a small trained neural network data set that could be loaded from a separate file when required.

It also has a VOD (Voice Activity Detection), same as VOX thing, that we could use as an intelligent replacement for the dumb threshold method.

goatchurchprime commented 3 months ago

I've got a branch working as far as I can, but will need some help to finish the build for the other platforms. https://github.com/goatchurchprime/two-voip-godot-4/tree/noisesuppression

There could be problems getting it to work across those, so the first thing will be to hack the scons files so it doesn't build on unsupported platforms https://github.com/xiph/rnnoise/pull/219#issuecomment-2023317886
It was always suspicious that there was no CMake build for it, which is necessary for cross-platform compilation.

goatchurchprime commented 3 months ago

done