我正在尝试为 Windows Phone 做一个 TTS 应用程序,但我有一个小问题。我制作了一个函数来调用 Google TTS 服务并在 MediaElement 上播放它,效果很好。
这就是我写的函数
public void Say(string phrase)
{
mediaElement1.Source = new Uri("http://translate.google.com/translate_tts?tl=en&q=" + phrase, UriKind.Absolute));
mediaElement1.Play();
}
但是如果我多次调用该函数,例如,在 for 循环中,它只会说循环的最后一项。例如
for (int i = 0; i < 10; i++)
{
Say(Convert.ToString(i));
}
然后它只是说'九',不,'1,2,3,4,......'
我试图做一个单词的“播放列表”,该功能将播放。这是我的代码。
bool first = true;
List<Uri> uriTask = new List<Uri>();
public void Say(string phrase)
{
uriTask.Add(new Uri("http://translate.google.com/translate_tts?tl=es&q=" + phrase, UriKind.Absolute));
if (mediaElement1.CurrentState != MediaElementState.Playing)
{
if (first)
{
CHECK();
first = false;
}
else
{
mediaElement1.MediaEnded += delegate
{
mediaElement1.Position = TimeSpan.Zero;
CHECK();
};
}
}
}
private void CHECK()
{
if (uriTask.Count > 0)
{
mediaElement1.Source = uriTask[0];
mediaElement1.Play();
uriTask.RemoveAt(0);
}
}
谢谢。问候