检测风噪声

时间:2011-11-14 10:52:37

标签: algorithm language-agnostic signal-processing audio-processing

我想根据音频流开发一个用于检测风的应用程序 我需要一些专家的想法,只是为了给我指导或一些链接,我知道这不是一件容易的事,但我打算在这里付出很多努力。

我的计划是检测流中的一些常见模式,如果值接近风噪声的常见模式,我会通知找到匹配,如果值更接近已知模式,我可以确保检测到风,如果值与模式不匹配,那么我猜没有那么多的风....

这是我最初的计划,但我需要了解这些事情是如何完成的。是否有一些开放项目已经这样做了?或者是否有人正在研究这个主题?

我在这个论坛上写的原因是因为我不知道如何谷歌它,我找到的东西不是我想要的。我真的不知道如何开始开发这种算法。

编辑1:
我试着录制一个风,当我为我打开保存的音频文件时,它只是一堆数字:)。我甚至不知道我应该以什么格式保存这个,波浪足够好吗?我应该使用别的东西,或者如果我用mp3转换风噪音频文件怎么样?这会有助于解析吗?

我收到很多问题,那是因为我不知道从哪里可以阅读更多关于这类话题的内容。我用guidlines标记我的问题,所以我希望有人会帮助我。

必须有可检测到的东西,因为风噪声是如此常见,必须以某种方式检测到这一点,我们只需要有人给我提示,熟悉这个话题的人。

4 个答案:

答案 0 :(得分:4)

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

我制作了风噪声模型并创建了一个示例数据库,然后训练了机器学习算法,以感知加权的方式检测和计量风级。

C++/C code is here如果它对任何人都有用!

答案 1 :(得分:3)

您的问题的科学被称为“模式分类”,尤其是“音频模式分类”的子领域。该任务被抽象为将录音分为两类(风和非风)。你似乎没有强大的信号处理背景,所以让我插入一个中央警告: 模式分类并不像最初看起来那么容易。人类在模式分类方面表现出色。电脑没有。

良好的第一种方法通常是计算信号和样本的傅立叶变换的相关性。但不知道这取决于风速有多大。

您可能需要查看bag-of-frames方法,它已成功用于对环境噪音进行分类。

答案 2 :(得分:2)

正如@thiton所说,这是音频模式分类的一个例子。

风的主要特征:它是一种形状(带/ hp滤波)的白噪声,具有幅度和间距小的半随机波动。至少大多数合成器如何重现它并且听起来很有说服力。

您必须检查光谱内容并更改波形文件,因此您需要进行FFT。输入格式并不重要,但显然原材料(wav)更好。

一旦你得到它,你应该发现它接近某种有色噪声,然后可能提取一系列的音高和振幅,并尝试使用经典模式分类算法来处理该数据集。我认为有监督的学习可以在这里发挥作用。

答案 3 :(得分:1)

这实际上是一个难以解决的问题。

假设您只有一个麦克风数据。打开音频文件(时域信号)时获得的原始数据有一些但不是很多信息用于此类处理。您需要使用FFT进入频域并查看频率区间的统计信息,并使用它来使用SVM或随机森林构建分类器。

对@ Karoly-Horvath充分尊重,我也不会使用任何经过压缩的录音,例如mp3。音频压缩算法总是会扭曲较高的频率,事实证明,这是现在检测风的一个重要特征。如果可能,从麦克风获取原始PCM数据。 您还需要确保以至少24kHz的频率对录音进行采样,以便获得高达12kHz的信号。

最后 - 频域中的风形不是简单的滤波白噪声。其特点是它通常在低频率(一种隆隆声类型)中具有高能量,在高频下具有剪切和拍打声音。 高频能量非常短暂,因此如果您的FFT大小过大,您将错过这一重要功能

如果你有2个麦克风数据,那么这会更容易一些。记录时,风是一种局部现象。当然,在录音中,你可以听到树叶的沙沙声或由风引起的钟声。但这不是风噪声,不应过滤掉。

您在录音中听到的实际恼人的风噪声是空气撞击麦克风的膜。这种效果是一个本地事件 - 如果你有2个麦克风可以被利用。它可以被利用,因为事件对于每个单独的麦克风是本地的并且与其他麦克风不相关。当然,2个麦克风相互之间的关系也很重要。它们必须相互靠近(例如,在8英寸内)。

然后可以使用时域correlation来确定风噪声的存在。 (所有其他录制的声音彼此相关,因为麦克风彼此非常接近,因此高相关性意味着没有风,低相关性意味着风)。如果您使用此方法,则无需解压缩输入音频文件。合理的压缩算法不会影响这一点。

我希望这个概述有所帮助。