检查麦克风输入

时间:2014-07-12 18:09:29

标签: c# .net input naudio

我正在试图弄清楚如何测试来自连接麦克风的输入,以便使用C#查看它是否已经超过了一定的音量。

我听说过NAudio,但我在其示例和演示中找到的只是记录用户的工具,然后将录制文件保存到文件中,以后可以对其进行测试。如果说实话,那就不是我想要的了。

1 个答案:

答案 0 :(得分:2)

您可以通过修改this

中的函数waveIn_DataAvailable来录制超过给定音量的语音
bool startRecording = false;
void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
    for (int index = 0; index < e.BytesRecorded; index += 2)
    {
        short sample = (short)((e.Buffer[index + 1] << 8) | 
                            e.Buffer[index + 0]);
        float sample32 = sample / 32768f;
        if (sample32 > 0.2)  //0.2 is desired volume; sample32 is 0~1
        {
            // Start recording
            startRecording = true;
        }            
    }
    if (startRecording)
    {
        waveFile.Write(e.Buffer, 0, e.BytesRecorded);
        waveFile.Flush();
    }
}

startRecording是一个标志,指示输入语音已超过给定音量,因此我们开始将数据写入wave文件。