取消选择项目时如何停止语音Windows.Media.SpeechSynthesis

时间:2018-08-01 09:37:15

标签: c# uwp accessibility

我目前正在尝试添加功能以允许在我的应用中使用屏幕阅读器,并且一直在使用Windows.Media.SpeechSynthesis和.GotFocus来读取屏幕阅读设备选择的按钮和标签。

但是,我的问题是,当选择另一个项目时语音不会停止,因此我可以一次阅读所有内容。

我尝试使用.LostFocus和.Stop()方法尝试解决此问题,但可惜没有用。

有人幸运地在应用程序和项目选择中实现了SpeechSynthesis吗?

1 个答案:

答案 0 :(得分:0)

这是我在其中一个应用中使用的一些相关代码,

我使用MediaElement的单个实例来阅读文本。

static MediaElement ttsMediaElement;

这是将文本转换为流并读取它的方法。在方法开始时,我停止了MediaElement

public static async Task ConvertTextToSpeechAndPlay(string text)
{
    if (ttsMediaElement != null)
            ttsMediaElement.Stop(); //stop the reading that has not finished, if any

    var voice = ChooseVoice(text); //select the preferred voice chosen by the user
    if (voice != null)
    {
        using (var synth = new SpeechSynthesizer())
        {
            synth.Voice = voice;

            SpeechSynthesisStream stream = await synth.SynthesizeTextToStreamAsync(text);

            ttsMediaElement = new MediaElement();

            ttsMediaElement.SetSource(stream, stream.ContentType);
            ttsMediaElement.Play();
        }
    }   
}