Reputation: 665
I have a TTS program (Third Party) and I wrote a c# application that uses that program. (Type into my application and press a button to move the mouse and click on the Third party app).
I need to know whether the speech is finished or not. Are there any ideas on how to determine if any sound playing from sound card or not?
Upvotes: 4
Views: 5982
Reputation: 767
I successfully did it using C# by following this power-shell script. You just have to remove the first and the last line to make a C# class from this power-shell script
Upvotes: 0
Reputation: 5338
You could use CSCore.
Download it right here -> https://github.com/filoe/cscore
Paste these lines on a console project.
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;
}
}
}
}
Play a music be it on YouTube, Music Player, etc...
Run the program.
It automatically notifies(true/false) if there is an audio currently being played or not.
Upvotes: 11
Reputation: 5994
You could check whether the application emits sounds. Take a look at this: Getting individual windows application current volume output level as visualized in audio Mixer
Upvotes: 1