How to speak milliseconds of silence in C# using SpVoice?
<p>How to actually speak silence for X # of milliseconds and not by using Thread.Sleep(). I'm trying to use the .Speak() function in the SpeechLib library of an SpVoice variable to speak a specific duration of silence according to a specified number of milliseconds. Particularly, in the output of a .wav file wherein I am inserting periods of silence between spoken lines of text. Using Thread.Sleep() will take an obscene amount of time to either speak or save, as I am planning to save nearly 5000 lines of spoken text to .wav with pauses in between the lines.</p>

<p>This is the solution I have so far:</p>

<pre><code>        int pauseA = (int)(22050.0 * ((double)pauseTargetToSource.Value / 1000.0) * 2.0);
        int pauseB = (int)(22050.0 * ((double)pauseLineBreak.Value / 1000.0) * 2.0);
        while (
            (lineSource = srSource.ReadLine()) != null &amp;&amp;
            (lineTarget = srTarget.ReadLine()) != null)
        {
            voiceSource.Speak(lineSource, SpeechVoiceSpeakFlags.SVSFlagsAsync);
            voiceSource.WaitUntilDone(Timeout.Infinite);
            voiceSource.AudioOutputStream.Write(new byte[pauseA]);
            voiceTarget.Speak(lineTarget, SpeechVoiceSpeakFlags.SVSFlagsAsync);
            voiceTarget.WaitUntilDone(Timeout.Infinite);
            voiceSource.AudioOutputStream.Write(new byte[pauseB]);
        }
</code></pre>

<p>Where 22050.0 is the sample rate and pauseLineBreak.Value is the # of milliseconds. The multiplier 2.0 is for the 2-byte length of a short in the .wav data.</p>

<p>AudioOutputStream.Write simply writes the correct # of 00's to the file for silence.</p>
