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"はおそらくこのイベントを発生させません。ありがとうございました。

+0

ビジュアルツリーにはどこで 'MediaElement'を付けますか? MediaOpenはビジュアルツリーにアタッチされ、 'NaturalDuration'が' MediaOpen'イベント内で利用可能になるまで起動しません。 – keyboardP

+0

mediaElementをビジュアルツリーに添付した後、MediaOpenedイベントが機能し始めました。ご協力ありがとうございます。 – hoacin

+0

あなたは歓迎です - 私は答えとしてそれを追加しました:) – keyboardP

答えて

0

MediaOpenが起動するためには、MediaElementをビジュアルツリーに添付する必要があります。ビジュアルツリーにMediaElementを添付したら、MediaOpenイベント内でNaturalDurationが利用可能になります。

関連する問題