gpt4 book ai didi

.net - 对麦克风输入和系统音量的管理访问

转载 作者:行者123 更新时间:2023-12-04 22:09:19 25 4
gpt4 key购买 nike

我想做三件事:

从麦克风访问数据。我真的只想知道设备感应到的声音的整体音量。

设置麦克风增益。

设置系统音量。

我所有的 Windows 开发经验都是 C#/WPF,所以我想保持管理。我不需要特别高性能或实时处理或任何东西。

我环顾四周,似乎 SlimDX 可能是一个很好的包装器,但即使在那里我也不知道从哪里开始。

肯定不会那么难吧?

最佳答案

这是一个链接,显示了如何从 C# 访问 Windows 中的混音器:

http://www.codeguru.com/csharp/csharp/cs_graphics/sound/article.php/c10931

这将让您设置麦克风增益和系统音量。不过,第一部分稍微复杂一些。基本上,您需要开始录制输入(使用 DirectSound 或 waveInXXXX API [我个人最喜欢的])。随着每个缓冲区被音频填满,您可以计算缓冲区的均方根并使用它来估计音量。

编辑 :这是一个项目的链接(我已经成功使用和修改过,所以我知道它有效),它显示了如何使用 waveInXXXX API 录制音频:

http://www.codeproject.com/KB/audio-video/cswavrec.aspx?df=90&fid=16677&mpp=25&noise=3&sort=Position&view=Quick&select=3005817

编辑 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);
}

关于.net - 对麦克风输入和系统音量的管理访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1191613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com