在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]);
但现在的问题是没有播放输出文件。 你有什么建议说明为什么语音不同步以及为什么我的解决方案没有 可播放的输出音频?
答案 0 :(得分:0)
正如我猜测问题与比特率有关,为了强制执行音频格式,我使用了另一种名为SetOutputToWaveFile
的方法
var formats = CurVoice.VoiceInfo.SupportedAudioFormats;
reader.SetOutputToWaveFile(fname, formats[0]);
使用上面的代码,音频输出可播放,同时解决了同步问题!