我目前正在尝试添加功能以允许在我的应用中使用屏幕阅读器,并且一直在使用Windows.Media.SpeechSynthesis和.GotFocus来读取屏幕阅读设备选择的按钮和标签。
但是,我的问题是,当选择另一个项目时语音不会停止,因此我可以一次阅读所有内容。
我尝试使用.LostFocus和.Stop()方法尝试解决此问题,但可惜没有用。
有人幸运地在应用程序和项目选择中实现了SpeechSynthesis吗?
答案 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();
}
}
}