如何在SpeechSynthesizer播放时播放IMFMediaEngine背景音频

时间:2012-11-19 08:23:46

标签: c# audio windows-phone-8 speech-synthesis

我想在播放背景音频时播放Windows Phone 8的语音合成器。但每次我激活语音合成器,背景音频停止播放,并在合成器完成后恢复。

有什么建议吗? 感谢。

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

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

在C#/ XAML中,我有一个带按钮的XAML页面,当我点击它时,它会播放WP8最新的Speech类。播放文字。

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");
   }

1 个答案:

答案 0 :(得分:0)

在Windows Phone 7上,我能够使用XNA获得两个独立的音频流,但是看到如何在Windows Phone 8上进一步开发不支持XNA,这对你来说不是一个好的解决方案。