对于我的工作,我们为英语学习者进行在线测试。其中一部分涉及对学生进行语音录音。我们通过适用于Firefox和Chrome的MediaRecorder js API来实现这一目标。这很适合作为快速测试大量学生的有效解决方案,但我们发现测试环境有时太嘈杂,以至于评分者无法评估学生。
我们希望能够自动检测背景噪音水平是否过高,并提醒学生是否存在,但我怀疑这是多么可行。部分问题在于,大多数背景噪声通常不是我们所认为的白噪声,而是由其他测试者的其他人类声音产生。因此,我不确定典型的SNR算法是否能够区分嘈杂的环境和正常的响应。我只是想四处询问是否有任何方法可以进行一些自动测量,这样我们就可以识别由于背景噪音很大而难以理解的录音。就像我说的那样,我怀疑是否有一个简单的解决方案,但我想我会问以防万一。
答案 0 :(得分:2)
在测试开始时在屏幕上显示倒计时:"在3 ... 2 ... 1 ..."开始测试,并期望学生对一对夫妇保持安静倒计时期间的秒数。
如果麦克风没有足够的安静时间至少2秒钟,那么就会发出噪音警告,然后继续"继续/再试一次/退出选择"如果学生在倒计时期间说话,他们会发现他们是噪音,并且在没有说话的情况下再试一次。
答案 1 :(得分:1)
只是一些想法 -
您可以测量一段时间内的平均声级,看它是或多或少恒定或更接近自然变量水平(使用weighted moving average并且RMS可能是一个没有测试的良好起点)。计算一个阈值,在这个阈值中,或多或少的恒定水平可能是由背景声音引起的。
除此之外,以这种方式将声音分开是“不可能的”。白噪声,嘶嘶声和嗡嗡声确定,甚至指纹噪声通过噪声滤波器(但可能是强烈的实时使用在浏览器中和你需要一些东西来产生指纹)。
但是当“噪音”是其他人类的声音时,声音变得太相似会变得非常困难。即使在专门定义您想要移除的特征时,即使是iZotope RX等高级软件也无法做到这一点。无论如何,复杂性可能需要太多糟糕的浏览器。
物理解决方案:更具指向性的麦克风可以解决其中一些问题,但用户也需要更多关注以正确放置。一个小portable "sound booth"(链接就是一个例子)可以从侧面和后面带走一些噪音,如果可能的话,可以在位置设置。
我的2美分..