繁体   English   中英

如何监听麦克风的噪音?

[英]How to monitor microphone for noise sound?

我正在尝试找到一种算法来检测用户何时使用C#在WM6设备上吹入麦克风(如Ninentdo DS或iPhone)。

我正在考虑使用Waveform实时读取麦克风到一个小缓冲区,但我对如何识别吹动声音感到有些迷失,我想这听起来像是白​​噪声。 任何人都知道如何做到这一点?

任何帮助将不胜感激。

如果我要解决这个问题,我会把它吹进麦克风并记录下来 然后对波数据运行FFT以获得主频(或少数)。 我会做几次“打击”,看看他们是否产生类似的结果。 如果他们这样做(我相当肯定他们会),那么我会使用算法来寻找相同的频率。

这不是一项微不足道的任务,但是由于很多录音和数学工作已经完成,你可以在没有太多痛苦的情况下让它工作。

麦克风中的一击不一定会显示高频范围内的主频(10,00hz +)。 吹入PC麦克风最有可能导致信号静态和失真,这也有很多低频范围。 产生的信号将是一个很大的饱和爆发。

几年前我不得不做一个类似的项目,我所做的只是寻找远高于正常水平的音量峰值。 工作得很好。

sthg的回答提到失真是吹进麦克风的可能结果。 我刚做了一个快速测试,我的吹录(在一个便宜的麦克风上)显示了最小值和最大值的大量样本(例如,每个16位样本WAV文件上的32767和-32768),看起来像一个平顶已应用于每个峰值。 检测吹气声的一种非常简单的方法可能是计算所有处于最小值/最大值的样本,如果它们占总量(或其他一些阈值)的5%以上,则假设发生了吹气。

这不完全相同,但这是我对一个关于音符开始检测的问题的答案:

注意起病检测

答案描述了一种依赖于信号强度超过给定阈值的方法。 这种方法可以检测到一种吹动噪音,虽然它也会对任何噪音做出反应,所以说话等也会触发它。

您可以使用FFT,但我认为实时使用速度太慢,尤其是在Windows Mobile设备上(尽管可能足够快)。 然而,吹风噪声不太可能具有主导频率,除非鼓风机吹响特定音符。 如果FFT足够快,你实际上可能想要寻找没有主导频率的噪声(你假设任何具有主要频率或频率的东西都是语音或某种仪器)且权重很大朝向可听范围的上端(大约10,000hz左右)。

我没有看过这个频谱,但我认为你应该看到频带限制的噪声频谱,其中大部分能量低于几百赫兹。 这意味着您不需要完整的音频带宽FFT,并且16K点过度。 即使在小带宽上进行256点FFT,您也应该能够分辨出除了语音之外的麦克风。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM