If you're using Alfred, here is a very nice solution combining everything you mentioned here: https://github.com/Avivbens/alfredo/blob/master/projects/packages/noise-cancellation/README.md#toggle-noise-cancellation