This project is c++ port of DTLN denoise.
For denoise and AEC purpose, I've tried speex, webrtc, rnnoise and etc, but didn't find optimal solution (realtime & performance).
Lately, I found DTLN solution by breizhn.
DTLN not only performs denoising, but also has deecho effect.
It's VC++ project, but use pure c++, so you can adopt to any platforms.
I've included all the dependencies for wav, tflite, fft, resampling.
Also I've included pretrained tflite models from DTLN project.
So you can test project using raw pcm or wav files in various format.
You can create multiple instances.
Please refer to project for detailed usage.
Input format of denoise function is 16KHz, fp32 pcm.
void tflite_create(trg_engine* engine)
void trg_denoise(trg_engine* engine, float* samples, float* out, int sampleCount)
void tflite_destroy(trg_engine* engine)
I've tested project on armv7 1GHz environment and got realtime performance.
If performance not match your need, you can use quantized model in models folder and tried to input 8Khz directly instead of 16Khz pcm**.
** I've tested 8Khz pcm directly without resampling and got x2 speed up, reasonable quality on test samples. (Not recommended)
And looking forward to DTLN-aec repo completion.
And welcome pull requests and issue.
DTLN (https://github.com/breizhn/DTLN) (Great thanks to breizhn)
PFFT (https://gitlab.mpcdf.mpg.de/mtr/pocketfft/-/tree/cpp)
Resample (https://github.com/cpuimage/resampler)
Anti 996 License from (https://github.com/kattgu7/Anti-996-License)
2021.04.11