It is always much better if you post the actual XML for your command in a code box on the forum so that we can see exactly what you are doing, and make sure you have not made any spelling mistakes etc. It also makes it much easier for us to test your command because we can just copy and paste it to our own command tree.
That said, in this case I think your problem is that you need to use TTS.SpeakSync because otherwise your SoftUnmute fires immediately without waiting for the TTS.Speak to finish and it seems like it is not working. Another option would be to use a pause before unmute but SpeakSync is usually better since it will wait the correct amount of time.