我一直在寻找答案很长一段时间,但我得到的每一个解决方案似乎都太复杂了,不管我想做什么,或者也许没有“更容易”的方法。
我想要做的只是使用我的系统麦克风来获取房间内的音量或响度(或其他任何声音)。然后根据该音量,我想调整我的系统音量,以便系统的声音总是“听起来相同”(相同的响度),无论火车经过还是飞机飞过。
如何将我的房间中的响度或音量调到C#应用程序中以使用它来改变我的系统音量?
我正在使用C#和带内置麦克风的笔记本电脑。
答案 0 :(得分:1)
最好使用库来读取麦克风的输入。 NAudio可能是最好的。
通过确定麦克风增益来校准输入。 [@ MSalters使用的评论]
每秒迭代记忆在记忆中的波形,然后:平方振幅(获得能量),平均平方值并取平方根。 (或日志,转换为dB) [@ MSalters使用的评论]
根据它,设置系统卷with WinAPI。
答案 1 :(得分:0)
using NAudio.Wave;
public IWaveIn waveIn;
public void StartRecording()
{
if (waveIn != null) return;
waveIn = new WaveIn { WaveFormat = new WaveFormat(8000, 1) };
waveIn.DataAvailable += waveIn_DataAvailable;
//waveIn.RecordingStopped += OnRecordingStopped;
waveIn.StartRecording();
}
public void StopRecording()
{
waveIn.StopRecording();
waveIn.Dispose();
}`
private void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
int sum = 0;
for (int i = 0; i < 8; i++)
{
sum += Math.Abs(BitConverter.ToInt16(e.Buffer, 200 * i));
}
sum /= 8;
if (sum > 6000)
{
Debug.WriteLine("WOW");
}
}