当前位置: 代码迷 >> .NET组件控件 >> Sapi 怎么同步生成语音文件
  详细解决方案

Sapi 怎么同步生成语音文件

热度:5715   发布时间:2013-02-25 00:00:00.0
Sapi 如何同步生成语音文件
小弟使用的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());


从上面代码可以看到,生成语音文件是异步的,可是我尽管线程停止,可是还是在语音卡上面只能播放到前面几个字.
请问如何进行处理
------最佳解决方案--------------------------------------------------------
可以批量生成