如何在 SpeechSynthesizer 播放时播放 IMFMediaEngine 背景音频
Posted
技术标签:
【中文标题】如何在 SpeechSynthesizer 播放时播放 IMFMediaEngine 背景音频【英文标题】:How to play IMFMediaEngine background audio while SpeechSynthesizer is playing 【发布时间】: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");
【问题讨论】:
【参考方案1】:在 Windows Phone 7 上,我能够使用 XNA 获得两个单独的音频流,但看到 XNA 不支持在 Windows Phone 8 上进行进一步开发,这不是一个很好的解决方案,祝你好运。
【讨论】:
不支持不代表暂时不能使用。 XNA 仍包含在 Windows Phone 8 中以实现向后兼容性。这是我所知道的在不破坏背景音乐的情况下播放音效的唯一方法。以上是关于如何在 SpeechSynthesizer 播放时播放 IMFMediaEngine 背景音频的主要内容,如果未能解决你的问题,请参考以下文章
在 Azure Web App(.NET Framework 4.7)上发布后,“SpeechSynthesizer”不起作用
C# 中的 SpeechSynthesizer 创建具有 22kHz 的 wav ...需要为 16kHz