如何在播放之前测量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"可能并没有解雇这个事件。谢谢。
答案 0 :(得分:0)
要激活MediaOpen
,您需要将MediaElement
附加到可视树中。将MediaElement附加到可视树后,NaturalDuration
事件中应该MediaOpen
。