检测风噪声

17

我希望开发一个根据音频流检测风的应用程序。
我需要一些专家意见,只是为了给我提供指导线或一些链接,我知道这不是容易的任务,但我计划在这里付出很多努力。

我的计划是在音频流中检测一些常见模式,如果值接近于风噪声的常见模式,则会通知匹配已找到,如果值更接近已知模式,则可以确定检测到了风,如果与模式不匹配,则可能没有太多风......

这是我的第一个计划,但我需要学习如何操作。是否已经有一些开放项目正在执行此操作?或者是否有人正在研究这些主题?

我之所以在这个论坛上写这篇文章,是因为我不知道如何在谷歌上搜索它,我找到的东西并不是我要寻找的。我真的不知道该如何开始开发这种算法。

编辑1:
我尝试录制了一段风声,当我打开保存的音频文件时,对我来说它只是一堆数字:)。我甚至不知道应该用什么格式保存这个文件,WAV格式足够好吗?还是应该使用其他格式,或者如果我将风噪声音频文件转换为mp3格式:这是否有助于解析?

好吧,我有很多问题,因为我不知道从哪里了解更多关于这种主题的信息。我用guidlines标记了我的问题,所以我希望有人能帮助我。

肯定有可检测的东西,因为风噪声如此普遍,一定有某种方式可以检测到它,我们只需要有人给我一些提示,熟悉这个主题的人。


1
您已经录制了一些风噪声样本吗?它们的效果如何?我是指时间序列,功率谱... - kol
3
风本身是无声的,它需要与其他元素相互作用才能发出噪音:叶子、房屋、双簧管、麦克风...因此你首先要缩小你的环境范围。 - mouviciel
1
你可能也想在http://dsp.stackexchange.com/上寻找答案。 - Agos
@mouviciel:还不太对。仅有一个麦克风是可以捕捉到“风声”的。 - Karoly Horvath
@yi_H - 你如何区分风声和设备表面移动空气产生的声音? - mouviciel
@mouviciel:我不知道“asperity”是什么意思...但麦克风通常会捕捉到风的低(真实的)谐波,而不是你熟悉的那种高音调声音。 - Karoly Horvath
4个回答

4

我刚刚看到这篇文章,最近我开发了一个可以检测录音中风噪声的库。

我建立了一个风噪声模型,并创建了一个示例数据库,然后使用机器学习算法进行训练,以感知加权方式检测和计量风力水平。

如果有用的话,这里是C++/C代码


你能多讲一些关于你的项目吗?我想了解一下这份代码是如何授权的(是开源的吗,采用哪种许可证呢?)此外,这个问题也要求一些指导关于如何实现它。你采用了什么一般的方法呢? - Stephen Ostermiller
我创建了一个API,它在后台使用了这个软件包:https://www.tinydrop.io/documentation/#wind-detection - Konstantin Schubert
@Kenders2000,我已将您的软件添加到我的API中,用于检测不良音频 - 希望这符合您研究项目的精神 :) https://www.tinydrop.io/documentation/#wind-detection - Konstantin Schubert

3
您的问题所涉及的科学称为“模式分类”,特别是“音频模式分类”的子领域。该任务被抽象为将声音记录分类为两类(风和非风)。您似乎在信号处理方面没有很强的背景知识,因此让我插入一个中心警告: 模式分类并不像一开始看起来那么容易。人类擅长模式分类。计算机则不擅长。 一个好的第一步方法通常是计算您的信号傅里叶变换与样本的相关性。但是不知道这会多大程度上取决于风速。
你可能想要看一下帧包方法,它已成功用于分类环境噪声。

2
正如@thiton所提到的,这是一种音频模式分类的示例。
风的主要特点是:它是带形状(带通/高通滤波器)的白噪声,并具有幅度和音调的小半随机波动。至少大多数合成器都是这样复制它的,听起来相当令人信服。
您需要检查波形文件中的频谱内容和变化,因此需要使用FFT。输入格式并不重要,但显然原始材料(wav)更好。
一旦您得到了它,您应该检测它接近某种有色噪声,然后也许提取一系列音调和振幅,并尝试使用经典的模式分类算法对该数据集进行分类。我认为在这里监督学习可能有效。

1
这实际上是一个难以解决的问题。
假设您只有单个麦克风数据。当您打开音频文件(时域信号)时,获得的原始数据包含一些但不是很多这种处理的信息。您需要使用FFT进入频域,并查看频率桶的统计信息,并使用SVM或Random Forests构建分类器。
尊重@Karoly-Horvath的意见,我也不会使用经过压缩的任何录音,例如mp3。音频压缩算法总是扭曲更高的频率,而事实证明,这是检测风的重要特征。如果可能,请从麦克风获取原始PCM数据。 您还需要确保录制的采样率至少为24kHz,以便您拥有12kHz的信号信息。
最后 - 风在频域中的形状不是简单的滤波白噪声。其特征通常在低频具有高能量(一种隆隆的声音类型),并带有高频的剪切和拍打声。高频能量非常瞬态,因此如果您的FFT大小太大,则会错过这个重要特征。
如果你有两个麦克风数据,那么这会变得更加容易。所记录的风声是局部现象。当然,在录音中,你可以听到风吹动树叶或风铃声等造成的声音。但这不是风噪声,不应该被过滤掉。
在录音中真正令人烦恼的风噪声是空气打到麦克风膜上所产生的效果。这种效果是一个局部事件-如果你有两个麦克风,就可以利用它。因为每个麦克风的事件都是局部的,而且与另一个麦克风没有相关性。当然,两个麦克风放置在彼此之间的位置也很重要。它们必须相对靠近(比如说,距离在8英寸内)。
然后可以使用时间域相关方法来确定是否存在风噪声。(所有其他录制的声音都相互关联,因为麦克风相对靠近,所以高相关性意味着没有风,低相关性意味着有风)。如果采用这种方法,你的输入音频文件不需要是未压缩的。合理的压缩算法不会影响这一点。
希望这个概述能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接