SIP and RTP over TCP vs UDP

Recently I’ve been researching about using TCP for voip rather than UDP. And I noticed that switching our pjsip extensions to tcp solves a lot of NAT issues and improves general calling reliability. I also thought by switching to TCP we could improve voice quality since TCP packets have integrity check, which means if we had voice clipping/dropped bits of voice during a call should be resolved by switching to TCP since all the packets should arrive at the destination. But it turns out that by switching the sip protocol to TCP you are only switching the signaling part (the calling, session association etc), not the actual media (actual voice transmission) over TCP.

Since RTP is designed to transmit the actual voice traffic, and it is doing so always over UDP. Is it possible to switch RTP to TCP in the FreePBX? I wanted to see what would happen to the voice clipping and just in general wanted to experiment with it.

SIP media is always UDP.

The reason that it is always UDP is that a lost packet on TCP will delay all the following packets, whereas with UDP, it can be interpolated.