Uh, noise cancellation is hard. First of all, the audio pipeline currently isn't able to resample the microphones, so mic and output need to be connected to separate i2s buses, or it won't work simultaneously in the first place.
And then I had some luck with the microwakeword component. It often triggers correctly even with noise in the background. And I have an automation that mutes all media players and the TV when the wake word is triggered. That's my "noise cancelling".
I think more elaborate noise cancelling is going to require some dedicated hardware (or maybe some proprietary ESP-ADF functions) and a microphone array. But that's probably as expensive as an Voice PE?!
I'm not in a good place with the voice assistant anyway. Don't own a graphics card. So it's slow. And Whisper never gets all the words right for me. So it's down to the speech-to-phrase addon. And that seems to be broken as of now. At least I get more connection errors than commands through. I think I'm going to do the Sendspin media player first. And then maybe add a microphone and voice assistant later.