2014-05-16 125 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