我正在试图弄清楚如何测试来自连接麦克风的输入,以便使用C#查看它是否已经超过了一定的音量。
我听说过NAudio,但我在其示例和演示中找到的只是记录用户的工具,然后将录制文件保存到文件中,以后可以对其进行测试。如果说实话,那就不是我想要的了。
答案 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文件。