1

请问在播放之前如何测量 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 world。”。一段时间后, mediaElement.NaturalDuration 也具有正确的值。但我需要在播放演讲之前尽快知道演讲的持续时间。我为 mediaElement.MediaOpen 添加了处理程序,但是这个“SetSource”可能不会触发这个事件。谢谢你。

4

1 回答 1

0

为了MediaOpen触发,您需要将 附加MediaElement到可视化树。将 MediaElement 附加到可视化树后,NaturalDuration它应该在MediaOpen事件中可用。

于 2016-07-12T17:40:32.273 回答