I couldn't see any problem with your code but maybe your variable b is something different. I am not sure what is wrong but you can also try saving the audio file somewhere and checking it if it is playing something or not:
using (SpeechSynthesizer synth = new SpeechSynthesizer()) {
synth.SetOutputToWaveFile(@"C:\temp\Sample.wav");
PromptBuilder builder = new PromptBuilder();
builder.AppendText("Hello World !"); //You can send a variable here also.
synth.Speak(builder);
}