I'm glad you're able to change channels, that's great.
Apart from Kalle's suggestion, which may do the trick, it's hard for me to tell what's working and what isn't based on your screenshots, because the screenshots actually show 2 different commands, from what I can see.
The top image shows what looks like my code, but the bottom one is using TCP.SingleWrite and I see no sign of the Regex action, so I have no idea how it's creating such magic for you!
With regard to testing by manually entering "C N N" in the payload field and using the save and execute: to test your command this way you would need to use the payloadXML value, not the payloadXML phrase. The way payloadXML works is that the value column corresponds to {1} and the phrase column corresponds to {PF.1} (aka 'friendly payload' -- a description of a payload that humans can understand).
So, to test the command using the payload field you need to enter channel numbers not channel names. If you look again at the top screenshot, you can see that the regex action is trying to evaluate "C N N", when what it needs is the channel number.
It could be that this is the reason the code didn't work for you except for the TTS.Speak line. However, since the first line indicating an error is the TCP client connect line, maybe it's not that. You might also want to double-check the IP and port parameters there.