Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测麦克风的静音_C#_Windows_Mcisendstring - Fatal编程技术网

C# 检测麦克风的静音

C# 检测麦克风的静音,c#,windows,mcisendstring,C#,Windows,Mcisendstring,使用mcisendstring,如果达到静默期(麦克风没有输入),我想停止录音。我知道会涉及计时器,所以x秒后需要进行检查,但具体检查什么 目前,我使用以下方式记录: i = mciSendString("record capture", Nothing, 0, 0) 谢谢。您需要一个音频库,允许您在录制过程中访问录制缓冲区。我想MCI不会让你这么做的。因此,听起来你是在寻找一个更微妙的音频库 这里是一个链接到一个 你也可以考虑使用开源.NET框架,比如他们已经为你做了很多工作。 要进行录制,

使用
mcisendstring
,如果达到静默期(麦克风没有输入),我想停止录音。我知道会涉及计时器,所以x秒后需要进行检查,但具体检查什么

目前,我使用以下方式记录:

i = mciSendString("record capture", Nothing, 0, 0)

谢谢。

您需要一个音频库,允许您在录制过程中访问录制缓冲区。我想MCI不会让你这么做的。因此,听起来你是在寻找一个更微妙的音频库

这里是一个链接到一个

你也可以考虑使用开源.NET框架,比如他们已经为你做了很多工作。

要进行录制,您很可能需要分配一个主缓冲区,再加上一个回调,该回调将根据需要分配辅助/永久缓冲区(例如,随着录制时间越来越长)。要检测静默,需要在主缓冲区中添加字节时对其执行某种信号处理

这种情况下的“信号处理”可能非常简单,例如,您可以采用移动平均(基本上是一个低通滤波器)并确定平均振幅是否低于某个阈值水平,该阈值水平可以在录制开始时的静音期间进行校准(这可能会给您一个合适的基线)


一个更先进的过程将尝试过滤掉环境噪声或线路噪声(例如,一个60 hz的过滤器,以消除家用空调引起的嗡嗡声)。如果你想的话,你可以对此进行深入研究。

你有没有尝试对振幅数据进行傅里叶变换以获得频率并检查频率是否不多?老实说,傅里叶变换与此无关!你能推荐一位推荐人吗?采样率,数据格式,很多东西都有帮助,但是你可以先用过滤器清除背景噪音。我没有参考。考虑在论坛上迁移或发布这个问题。移动到Win32波的函数-特别是代码>波形开放/代码>;并定义您的
waveInProc
,在这里您可以完全访问低级音频数据,这是MCI不允许您做的。不需要第三方库谢谢您的详细解释。我希望生活会更轻松,但从来没有如此…再次感谢。