小弟使用的sapi 生成语音,后马上使用语音卡在通道内播放,可是现在有问题,就是生成是异步的,播放的时候,语音卡只能播放最开始的几个文字.后面的都播放不到.
请问如何实现同步输出语音文件,这样我就可以在下面直接播放这个语音文件了.
SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice voice = new SpVoice();
string root = System.Environment.CurrentDirectory;
string dicpath = "\\chvoice\\" ;
string filename="1.wav";
string fullpath=root+dicpath ;
System.IO.Directory.CreateDirectory(root + dicpath);
SpeechStreamFileMode spFileMode = SpeechStreamFileMode.SSFMCreateForWrite;
SpFileStream spFileStream = new SpFileStream();
spFileStream.Format.Type=SpeechAudioFormatType.SAFT8kHz8BitMono;
Console.WriteLine(DateTime.Now.ToString());
spFileStream.Open(root + dicpath + filename, spFileMode,false);
voice.SpeakCompleteEvent();
voice.EndStream += new _ISpeechVoiceEvents_EndStreamEventHandler(voice_EndStream);
voice.AudioOutputStream = spFileStream;
voice.Speak(textBox1.Text, spFlags);
voice.WaitUntilDone(1000);
//上面两句一定要写上,否则产生的文件没有声音
//WaitUntilDone的后面的smTimeout是一个int型
spFileStream.Close();
//System.Threading.Thread.Sleep(10000);
Console.WriteLine(DateTime.Now.ToString());
从上面代码可以看到,生成语音文件是异步的,可是我尽管线程停止,可是还是在语音卡上面只能播放到前面几个字.
请问如何进行处理
------最佳解决方案--------------------------------------------------------
可以批量生成