谷歌TTS演讲问题

时间:2014-05-16 15:30:40

标签: c# visual-studio-2012 windows-8

我正在努力让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();
}

1 个答案:

答案 0 :(得分:1)

您似乎在代码中创建了MediaElement。确保将其添加到UI中。如果它仅由私有字段引用,则不会播放。然后,您可以将LoadedBehavior设置为“播放”(无需再调用Play()),或者在调用Play()之前需要等待媒体加载。为了测试我刚刚使用Thread.Sleep(),但我希望有一个回调。

最后但并非最不重要:Uri构造函数为您处理大部分网址编码,但如果您希望Google听到“拖放”,您需要自己处理“&”符号。

致谢:这些帖子帮助我找到了这个答案,并可能为您提供更多信息:

http://social.msdn.microsoft.com/Forums/wpapps/en-US/4baec4b9-451e-4727-a182-555bc312b0bb/using-mediaelement-from-external-source-

event MediaOpened unable to raised