【问题标题】:How to get duration of speech synthesizer stream如何获取语音合成器流的持续时间
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2013-03-01
    • 1970-01-01
    • 2012-06-27
    • 2019-07-29
    相关资源
    最近更新 更多