我希望做三件事:
访问麦克风数据。实际上,我只想知道设备感应到的声音的整体音量。
设置麦克风增益。
设置系统音量。
我所有的Windows开发经验都是C#/WPF,所以我想保持托管状态。我不需要特别高的性能或实时处理等任何东西。
我已经查找了一些资料,似乎SlimDX可能是一个很好的封装器,但即使在那里,我也不确定从哪里开始。
肯定不会很难吧?
我希望做三件事:
访问麦克风数据。实际上,我只想知道设备感应到的声音的整体音量。
设置麦克风增益。
设置系统音量。
我所有的Windows开发经验都是C#/WPF,所以我想保持托管状态。我不需要特别高的性能或实时处理等任何东西。
我已经查找了一些资料,似乎SlimDX可能是一个很好的封装器,但即使在那里,我也不确定从哪里开始。
肯定不会很难吧?
public static float RootMeanSquared(ref float[] audio)
{
double sumOfSquared = 0;
for (int i = 0; i < audio.Length; i++)
{
sumOfSquared += audio[i] * audio[i];
}
return (float)Math.Sqrt(sumOfSquared / (double)audio.Length);
}
很遗憾,除非您愿意忍受严重的延迟(大约0.5秒),否则无法可靠地读取(或呈现)托管代码中的数据。问题在于CLR可以随时中断您的进程250毫秒。通常这并不重要,但当您尝试进行等时处理时,它可能是一个重要问题。