【问题标题】:How to play IMFMediaEngine background audio while SpeechSynthesizer is playing如何在 SpeechSynthesizer 播放时播放 IMFMediaEngine 背景音频
【发布时间】:2012-11-19 08:23:46
【问题描述】:

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

有什么建议吗? 谢谢。

下面的一些代码sn-ps: 背景音频:在 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");
   }

【问题讨论】:

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


    【解决方案1】:

    在 Windows Phone 7 上,我能够使用 XNA 获得两个单独的音频流,但看到 XNA 不支持在 Windows Phone 8 上进行进一步开发,这不是一个很好的解决方案,祝你好运。

    【讨论】:

    • 不支持不代表暂时不能使用。 XNA 仍包含在 Windows Phone 8 中以实现向后兼容性。这是我所知道的在不破坏背景音乐的情况下播放音效的唯一方法。
    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2016-08-30
    • 1970-01-01
    相关资源
    最近更新 更多