如何获得语音合成器流的持续时间

时间:2016-07-12 12:41:59

标签: windows-phone-8.1 mediaelement duration speechsynthesizer

如何在播放之前测量SpeechSynthesierStream的持续时间?

     SpeechSynthesizer ss = new SpeechSynthesizer();
     SpeechSynthesisStream sss;
     ss.Voice = SpeechSynthesizer.AllVoices[3];
     sss = await ss.SynthesizeTextToStreamAsync("Hello world.");
     MediaElement mediaElement = new MediaElement();
     mediaElement.SetSource(sss, sss.ContentType);

     //here I want to get the duration

     mediaElement.Play();

这段代码工作得很好,并且说出了#Hello; Hello world。"。一段时间后,mediaElement.NaturalDuration也具有正确的值。但我需要尽快知道演讲时间并在演讲前。我为mediaElement.MediaOpen添加了处理程序,但是这个" SetSource"可能并没有解雇这个事件。谢谢。

1 个答案:

答案 0 :(得分:0)

要激活MediaOpen,您需要将MediaElement附加到可视树中。将MediaElement附加到可视树后,NaturalDuration事件中应该MediaOpen