如何知道是否使用c#播放声音?

如何知道是否使用c#播放声音?,c#,audio,C#,Audio,我有一个TTS程序(第三方),我编写了一个使用该程序的c#应用程序。(在我的应用程序中键入,然后按一个按钮移动鼠标并单击第三方应用程序) 我需要知道演讲是否结束。关于如何确定是否有任何声音从声卡播放,有什么想法吗?您可以使用Direct X的包装器来实现这一点。有很多例子,只有google提供。例如,可以找到C代码,也可以检查应用程序是否发出声音。看看这个:您可以使用CSCore。 在这里下载-> 将这些行粘贴到控制台项目上 using System; using CSCore.CoreAudi

我有一个TTS程序(第三方),我编写了一个使用该程序的c#应用程序。(在我的应用程序中键入,然后按一个按钮移动鼠标并单击第三方应用程序)


我需要知道演讲是否结束。关于如何确定是否有任何声音从声卡播放,有什么想法吗?

您可以使用Direct X的包装器来实现这一点。有很多例子,只有google提供。例如,可以找到C代码,也可以检查应用程序是否发出声音。看看这个:

您可以使用CSCore。
在这里下载->

将这些行粘贴到控制台项目上

using System;
using CSCore.CoreAudioAPI;

namespace AudioDetector
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(IsAudioPlaying(GetDefaultRenderDevice()));
            Console.ReadLine();
        }

        public static MMDevice GetDefaultRenderDevice()
        {
            using (var enumerator = new MMDeviceEnumerator())
            {
                return enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);
            }
        }

        public static bool IsAudioPlaying(MMDevice device)
        {
            using (var meter = AudioMeterInformation.FromDevice(device))
            {
                return meter.PeakValue > 0;
            }
        }
    }
}
在YouTube、音乐播放器等上播放音乐。
运行程序。

它会自动通知(真/假)当前是否正在播放音频。

围绕“仅链接答案”有一大堆元讨论-。就目前而言,这是相当糟糕的。该方法的问题是,您正在检查整个系统的主音量峰值。例如,如果有其他应用程序正在播放音乐,此方法将失败。但是否可以查看哪个应用程序正在播放音频?