当发生某些事情时,我正试图从麦克风录制声音(无论是有人说话还是只是移动东西 - 基本上任何不仅仅是随机噪音)
到目前为止,我的方法是记录1-2秒,检查录音是否通过测试“发生了什么事”,如果是这样的话,我可以记录新的1-2秒录音没有通过测试。
现在我的问题是测试。我现在正在做的基本上是设置一个阈值,所以它基本上是这样的:
for(uint32_t i = 0; i < SAMPLE_RATE * NUM_SECONDS; i++) {
if(buffer[i] > threshold)
return true;
}
return false;
所有这些都很好用,直到我在一台非常弱的麦克风的笔记本电脑上测试应用程序。问题是,在一个体面的内置麦克风上,背景噪音的“响度”(或更像是样本值)(基本上没有发生)等于~130,当你说话时,取决于你离开的距离是多少麦克风,值达到160-135(远近)。但是存在差异,你可以越过门槛。
问题是,对于弱麦克风,值似乎没有改变。它保持在130(通过可能不时地移动一点)。
现在,我的猜测是我缺乏精确度。但我用16位录音。甚至可以记录超过16位? (例如,花车或双打) 例如,当他在使用Skype时,你可以听到弱麦克风用户的声音,所以我认为这是一个精确的问题(弱麦克风很难检测声音,所以我认为默认的噪音值是130,它会去当有人在说话的时候,就像130.2那样。
有什么建议吗?