RNNAec is a echo suppression library based on a recurrent neural network. I refered from RNNnoise Open Source Project.
To compile, just type: % ./autogen.sh % ./configure % make
Optionally: % make install
While it is meant to be used as a library, a simple command-line tool is provided as an example. It operates on RAW 16-bit (machine endian) mono PCM files sampled at 16 kHz. It can be used as:
./examples/rnnaec_demo <denoised && aeced output>
The output is also a 16-bit raw PCM file.
To Training for your own model, see next steps: %cd src && ./compile && cd - %./src/deecho_training dataset/rnn_far.pcm dataset/rnn_near.pcm dataset/aec_noise_far.pcm dataset/aec_noise_near.pcm 10000000 out.f32
%python ./training/bin2hdf5.py out.f32 XXXXX 138 training.h5
%python ./training/rnn_train.py training.h5
%python training/dump_rnn.py final_weights.hdf5 ./src/rnn_data.c rnn_data.h orig
%make clean & make %./examples/rnnaec_demo out.pcm
Next to research:
- Use this RNNAec as a NLP(Non-Linear Processing) module, LP(Linear Processing) module can use (speex or webrtc).
- NLP-RNNAec used to improve double-talk performance. Model based method LP(signal process) are more general for various devices and environment.
- Training dataset can add real captured, instead of just use clean speech and noise data(As above training example)
- This RNNAec can have denoise effect, Network layer may change as needed.
- Band may change as need.(I think should change)
- Pitch filter(I think use full band can replace this module, but computational complexity also rise)
If you like this repo, Please click star!!!