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 事件添加到音频时间线

N音频播放位置

HTML 音频 - 使用 jQuery 检测位置

Vue(Nuxt)中的音频加载事件

如何在 Python 中关联两个音频事件(检测它们是不是相似)

使用nodejs中的AWS Lambda函数上传音频文件