Jos*_*elo 4 .net audio microphone
我期待做三件事:
从麦克风访问数据.我真想知道的是设备所感知的声音的整体音量.
设置麦克风增益.
设置系统音量.
我所有的windows开发经验都是C#/ WPF,所以我想保持管理.我不需要特别高性能或实时处理或任何东西.
我环顾四周,似乎SlimDX可能是一个很好的包装,但即使在那里,我也不知道从哪里开始.
当然不是那么难吗?
这是一个链接,显示如何从C#访问Windows中的音频混音器:
http://www.codeguru.com/csharp/csharp/cs_graphics/sound/article.php/c10931
这将允许您设置麦克风增益和系统音量.不过,第一部分有点复杂.基本上,您需要开始录制输入(使用DirectSound或waveInXXXX API [我个人最喜欢的]).当每个缓冲区充满音频时,您可以计算缓冲区的均方根,并使用它来估计音量.
编辑:这是一个项目的链接(我已成功使用和修改,所以我知道它有效),它显示了如何使用waveInXXXX API录制音频:
编辑2:因为我已经厌倦了发布链接,这里是一个计算音频缓冲区均方根的实际公式(这里的类型是float [],但它可以很容易地修改为处理short [],这是你通常从waveInXXXX获得的东西:
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);
}
Run Code Online (Sandbox Code Playgroud)