如何获取语音合成器流的持续时间
How to get duration of speech synthesizer stream
请问如何在播放之前测量 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" 可能不会触发此事件。谢谢。
为了触发 MediaOpen
,您需要将 MediaElement
附加到可视化树。将 MediaElement 附加到可视化树后,NaturalDuration
应该在 MediaOpen
事件中可用。
请问如何在播放之前测量 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" 可能不会触发此事件。谢谢。
为了触发 MediaOpen
,您需要将 MediaElement
附加到可视化树。将 MediaElement 附加到可视化树后,NaturalDuration
应该在 MediaOpen
事件中可用。