没人说话时停止录音

时间:2013-07-16 09:19:22

标签: c# windows winforms

下午好,

我有一个Windows应用程序,按下开始按钮开始录制并停止录制停止按钮点击并停止录制当我们拔下麦克风工作正常,但我的新要求是当我按开始按钮录制开始,如果我不要说几分钟录音应该停止。我无法谷歌这个问题。 我很困扰这个问题,任何人都可以帮助我吗?

这是开始和停止录制的示例代码

uint hr = MFRecWrapper.StartRecording(microPhoneName.Trim(), this.fileName.Trim(), this.bitSamplingBitrate, this.avgBytesWrittenPerSecond, this.Handle);
uint hr = MFRecWrapper.StopRecording();

提前谢谢.. :))

2 个答案:

答案 0 :(得分:0)

我不知道关于你的问题的真实答案,但我想你可以用memorystream来做(因为我们可以说在保存它之前是在内存中)你可以到达并检查是否没有变化或者没有更少通过流方法以字节为单位改变(其他声音或呼吸比人类声音更少)。然后结束关闭录音.MemoryStream有一些非常有用的方法ı认为这将有助于你尝试一下

答案 1 :(得分:0)

您需要分析音频输入流。有一些简单的技术可以做到这一点,还有一些更先进的技术。

作为首发,您可以简单地修正响度阈值。如果您的输入响度低于给定时间的输入响度,请停止录制。 更先进的IMHO更好的方法是计算输入信号的SNR并将其作为标准。

总结:这是一项非常艰巨的任务。开源应用Mumble已实现了部分功能。我认为开始在那里获得灵感是个好主意。