【发布时间】:2016-07-12 12:41:59
【问题描述】:
请问在播放之前如何测量 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”可能不会触发这个事件。谢谢。
【问题讨论】:
-
您在哪里将
MediaElement附加到可视化树? MediaOpen 在附加到可视化树之前不会触发,并且NaturalDuration应该在MediaOpen事件中可用。 -
在我将 mediaElement 附加到可视树之后,MediaOpened 事件开始起作用。谢谢你的帮助。
-
不客气-我已将其添加为答案:)
标签: windows-phone-8.1 mediaelement duration speechsynthesizer