Real time background noise reduction or removal I am trying to build a real time simple audio recognition that can recognize few keywords. Following this tensor flow tutorial i was able to train a simple neural network. 
Currently the signal flow looks like this


  microphone --> Pulse Code Modulation(PCM - range [-1, 1])  --> stfts
  --> spectrograms--> mel_spectrograms --> log_mel_spectrograms --> mfcc's --> Neural Network.


So far, I just grab the data from the microphone input and preform some steps and input to Neural network. Not performing any kind of back ground noise reduction or some kind of signal filtering techniques. So far the result are very much influenced by the back-ground noises( single channel sampling frequency 16000 Hz). 

I am new to this subject and wondering if you can share some valuable insight and techniques/python packages to enrich the speaker voice before feeding it to neural network.
A typical first approach to solve your problem would probably be to use one of the many existing noise reduction algorithms that target speech signal applications. These algorithms typically consist in


noise PSD estimation and
noise reduction filtering.


For each task, there are a variety of algorithms to choose from. Example noise PSD estimation algorithms are those based on minimum statistics of the input signal [1] or based on the minimum mean-square error [2]. The actual noise reduction filtering can, e.g., be performed by using spectral subtraction or a Wiener filter.

References

[1] Rainer Martin, “Noise Power Spectral Density Estimation Based on Optimal Smoothing and Minimum Statistics,” IEEE Transactions on Speech and Audio Processing, vol. 9, no. 5, pp. 504–512, Jul. 2001. PDF MATLAB implementation

[2] T. Gerkmann and R. C. Hendriks, “Unbiased MMSE-Based Noise Power Estimation With Low Complexity and Low Tracking Delay,” Audio, Speech, and Language Processing, IEEE Transactions on, vol. 20, no. 4, pp. 1383–1393, May 2012. PDF MATLAB implementation