2012-11-19 133 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