2014-05-16 84 views
1

我想让Google TTS语音正常工作,因为Windows RT/Metro不包含System.Speech的定义。下面的代码编译没有错误,但没有任何说话。我已调试并检查'ListBox.SelectedItem'是否包含文本,并且它确实如此。Google TTS语音问题

库称为:

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

它看起来像你正在创建代码中的MediaElement。确保它已添加到用户界面。如果它只是由私人字段引用,它将不会播放。然后,您可以将LoadedBehavior设置为“播放”(然后无需再拨打Play()),也可以在致电Play()之前等待媒体加载。对于测试,我只是使用Thread.Sleep(),但我希望有这样的回调。

最后但并非最不重要的是:Uri的构造函数可以处理大部分的url编码,但如果您希望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

+0

谢谢。我将它添加到用户界面,并添加了代码将其作为子项添加到网格中。 'MainGrid.Children.Add(myMediaElement)',它工作。 – zzwyb89