2012-11-19 169 views
1

我想在播放背景音頻時播放Windows Phone 8的語音合成器。但每次,我都會激活語音合成器,背景音頻會停止播放,並在合成器結束後繼續播放。如何在SpeechSynthesizer播放時播放IMFMediaEngine背景音頻

有什麼建議嗎? 謝謝。

下面的一些代碼片段: 背景音頻:在C++中使用IMFMediaEngine,成功播放。

Microsoft::WRL::ComPtr<IMFMediaEngine> m_mediaEngine; 
m_mediaEngine->Play(); 

在C#/ XAML,我有一個XAML頁面的按鈕,當我點擊它,它起着從WP8最新的語音類。播放文字。

using Windows.Phone.Speech.Synthesis; 


public async void SpeakText(string text) 
{ 
    SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(); 
    await speechSynthesizer.SpeakTextAsync(text); 
} 

我試圖把SpeakTextAsync通過線程,但我想我這樣做都是錯的,因爲我還是不能讓音頻在同一時間播放。

private void bubble_Click(object sender, RoutedEventArgs e) 
    { 
     App.Manager.SpeakText("hello how are you"); 

// TRY 1: plays text only, background doesn't play 
     //new Thread(() => 
     //{ 
     // App.Manager.SpeakText(chinese); 
     //}).Start(); 

// TRY 2: plays text only, background doesn't play 
     //Deployment.Current.Dispatcher.BeginInvoke(() => 
     //{ 
     // App.Manager.SpeakText(chinese); 
     //}); 

// TRY 3: plays text only, background doesn't play 
     //ThreadPool.QueueUserWorkItem(new WaitCallback(SpeakTextProc)); 

    } 

    private void SpeakTextProc(Object stateInfo) 
    { 
     App.Manager.SpeakText("Hello how are you"); 
    } 

回答

0

在Windows Phone 7的,我是能夠得到使用XNA但看到怎麼說XNA不支持進一步發展在Windows Phone 8的兩個獨立的音頻流,這不是你的好運氣很好的解決方案。

+0

僅僅因爲它不被支持並不意味着你現在不能使用它。爲了向後兼容,XNA仍然包含在Windows Phone 8中。而且這是我知道播放音效而不殺背景音樂的唯一途徑。 – Stonetip