SpeakProgress事件中的音频位置对于“Microsoft Anna”语音不正确

时间:2014-10-29 17:48:52

标签: c# text-to-speech

在c#的文本到语音应用程序中,我使用SpeechSynthesizer类,它有一个名为SpeakProgress的事件,它会针对每个口语单词触发。但是对于包括“Microsoft Anna”在内的一些声音,参数e.AudioPosition与输出音频流不同步,音频流的播放速度比AuidoPosition指示的要快。

void reader_SpeakProgress(object sender, SpeakProgressEventArgs e)
{
      Console.Write(e.AudioPosition + "");
}

我想也许问题是比特率和WaveStream作为输出我用作如下。

  FileStream AudioStream 
    = new FileStream(fname, FileMode.Create, FileAccess.Write); 
   reader.SetOutputToWaveStream(AudioStream);

我试过

var formats = CurVoice.VoiceInfo.SupportedAudioFormats;
reader.SetOutputToAudioStream(AudioStream, formats[0]);

但现在的问题是没有播放输出文件。 你有什么建议说明为什么语音不同步以及为什么我的解决方案没有 可播放的输出音频?

1 个答案:

答案 0 :(得分:0)

正如我猜测问题与比特率有关,为了强制执行音频格式,我使用了另一种名为SetOutputToWaveFile的方法

var formats = CurVoice.VoiceInfo.SupportedAudioFormats;
reader.SetOutputToWaveFile(fname, formats[0]);

使用上面的代码,音频输出可播放,同时解决了同步问题!