SpeakProgress 事件中的音频位置对于“Microsoft Anna”语音不正确
Posted
技术标签:
【中文标题】SpeakProgress 事件中的音频位置对于“Microsoft Anna”语音不正确【英文标题】:Audio position in SpeakProgress event is not correct for "Microsoft Anna" voice 【发布时间】:2014-10-29 17:48:52 【问题描述】:在 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]);
但是现在的问题是输出文件没有播放。 您对为什么声音不同步以及为什么我的解决方案没有任何建议 可播放的输出音频?
【问题讨论】:
对我有用,大概会说话? 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。 【参考方案1】:正如我猜测的那样,问题与比特率有关,为了强制音频格式,我使用了一种名为 SetOutputToWaveFile
的替代方法
var formats = CurVoice.VoiceInfo.SupportedAudioFormats;
reader.SetOutputToWaveFile(fname, formats[0]);
使用上面的代码,音频输出可以播放,同步问题也解决了!
【讨论】:
以上是关于SpeakProgress 事件中的音频位置对于“Microsoft Anna”语音不正确的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery 将 onclick 事件添加到音频时间线