我正在努力让Google TTS演讲工作,因为Windows RT / Metro不包含System.Speech的定义。下面的代码编译没有错误,但没有任何说法。我已经调试并检查了'ListBox.SelectedItem'是否包含文本,它确实是。
图书馆叫:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Popups;
using System.Net.Http;
这就是我调用myMediaElement的方式:
MediaElement myMediaElement = new MediaElement();
这就是我想要做的事情:
private void RepeatWord_Click(object sender, RoutedEventArgs e)
{
string pathx = "http://translate.google.com/translate_tts?tl=en&q=" + ListBox.SelectedItem.ToString();
myMediaElement.Source = new Uri(pathx, UriKind.RelativeOrAbsolute);
myMediaElement.Play();
}
答案 0 :(得分:1)
您似乎在代码中创建了MediaElement
。确保将其添加到UI中。如果它仅由私有字段引用,则不会播放。然后,您可以将LoadedBehavior
设置为“播放”(无需再调用Play()
),或者在调用Play()
之前需要等待媒体加载。为了测试我刚刚使用Thread.Sleep()
,但我希望有一个回调。
最后但并非最不重要:Uri构造函数为您处理大部分网址编码,但如果您希望Google听到“拖放”,您需要自己处理“&”符号。
致谢:这些帖子帮助我找到了这个答案,并可能为您提供更多信息: