How can I reduce background noise from recorded audio conversation and separate speakers in python? I have a recording of an audio conversation of two persons. I want to remove the background noise from audio and then also separate both persons' audio separately in python.

I have gone through some concepts about applying filters on the audio, but I was unable to implement the correct filter. In some audio recordings, it able to cancel out the noise partially.

For Separation of speakers, I found some libraries in python like PyAudioAnalysis, uis-rnn (Speaker-diarization), but they have their own trained models, which are solving the problem. Any paid APIs are available to solve this speaker-diarization problem?

Is there any way to solve this problem?

Thank you:)
I will contribute to this question from my area of experience, which is in speech enhancement. For noise suppression, you can use classical speech enhancement algorithms (spectral subtraction, wiener filtering, etc) but they mostly introduce artefacts in the enhanced speech. Additionally, there are also machine learning approaches which you can try. I am providing you with one of the python-based denoising libraries here: 
https://github.com/staplesinLA/denoising_DIHARD18

Remember, for commercial usage you need to ask the author and the group.