Basically, the Pause method pauses the voice at the nearest warning border and closes the output device, allowing it to use other voices.
spVoice.Speak() can be called synchronously or asynchronously. When called synchronously, the method does not return until the text is spoken; when called asynchronously, it returns immediately, and the voice speaks as a background process.
Hope you call spVoice.Speak() synchronously. That is why you get this problem. Therefore, instead of using synchronous use the asynchronous method, your problem should be solved. Then spVoice.Pause() will stop immediately.
SpVoice spVoice = new SpVoice (); spVoice.Speak ("Testing spVoice",SpeechVoiceSpeakFlags.SVSFlagsAsync);
source share