Я хотел бы определить, воспроизводит ли мой компьютер какой-либо звук (музыку или кино).
Я написал приложение, которое уведомляет меня о моих обновлениях в Твиттере. Теперь я хотел бы добавить к нему синтез речи, но я хочу воспроизводить сообщения только в том случае, если нет музыки или фильмов.
Хотя я использую 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
Других решений пока нет …