I have this problem too. What I've found is that the noise cancellation for the HTC one is interfering only with phone calls. Speaker works fine. Here's what I did to fix it. This worked on an AOSP rom, but doesn't seem to work on Viper ROM. Below is what I posted in another thread.
Here's what I did to fix my Sprint HTC One
I went into system --> build.prop
I changed persist.audio.handset.mic=digital to persist.audio.handset.mic=analog
This solved my issue after I've tried many things. Here were some temporary fixes that worked for me before I found this permanent fix:
Screaming into the microphone for around a minute. After that, the rest of the call seemed to work. Note: The microphone is on the bottom, underneath the bottom speaker.
Covering the second microphone that's on the BACK of the HTC One (you'll see it in the top right). That helped as well.
I hope this helps someone.