I am agree with Comments by Dave and SAKryukov,
You need to see your code and you will get solution.
speech.Speak(msg.Text, SpeechVoiceSpeakFlags.SVSFlagsAsync);
Above code itself says that you are passing msg.Text to Speak() method, instead you need to modify msg.Text string and pass the updated one. Probably you would do it using some class level string variable and store all string inserted or better maintain in an Array which help you to create Chat History and at time of speak you can remove existing chat from current updated Chat.
This is just a remedy for your issue, I am not saying this is best approach you really need to design your approach in batter way.
Regards
Rushikesh Joshi