我想检测我的电脑是否正在播放任何类型的音频(音乐/电影)。
我写了一个应用程序来通知我我的推特更新。现在我想为其添加语音合成,但我只想在没有音乐或电影播放的情况下播放消息。
虽然我使用的是 C#,但我不介意使用 C++ 进行检测然后集成它。
所以问题是:
1)如何检测音频输出?
2) 什么是 Windows 最好的免费语音合成库?
我想检测我的电脑是否正在播放任何类型的音频(音乐/电影)。
我写了一个应用程序来通知我我的推特更新。现在我想为其添加语音合成,但我只想在没有音乐或电影播放的情况下播放消息。
虽然我使用的是 C#,但我不介意使用 C++ 进行检测然后集成它。
所以问题是:
1)如何检测音频输出?
2) 什么是 Windows 最好的免费语音合成库?
在浏览了 MSDN 一段时间后,我找到了解决方案。
使用环回录音,您可以收听输出到音频输出设备的内容。
http://msdn.microsoft.com/en-gb/library/windows/desktop/dd316551(v=vs.85).aspx
此链接还引用了如何捕获流的示例:
http://msdn.microsoft.com/en-gb/library/windows/desktop/dd370800(v=vs.85).aspx
在这里,您可以通过调用获取缓冲区数据,如示例所示:
pCaptureClient->GetBuffer(...)
你所要做的就是检查这些字节的值。如果它们都是 0,那么就没有什么可玩的了。
对于语音合成,我使用了 SpeechSynthesizer .NET 类
http://msdn.microsoft.com/en-us/library/system.speech.synthesis.speechsynthesizer.aspx