17

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

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

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

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

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

好吧,我有很多问题,那是因为我不知道从哪里可以阅读更多有关此类主题的信息。我用指南标记我的问题,所以我希望有人能帮助我。

一定有什么东西是可以检测到的,因为风噪声如此普遍,一定有某种方法可以检测到这一点,我们只需要有人给我提示,一个熟悉这个话题的人。

4

4 回答 4

4

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

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

如果对任何人有用,C ++/C 代码就在这里!

于 2014-06-26T13:08:21.490 回答
3

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

一个好的第一种方法通常是计算信号和样本的傅里叶变换的相关性。但是,不知道这在多大程度上取决于风速。

您可能想看看帧包方法,它已成功用于对环境噪声进行分类。

于 2011-11-14T11:35:47.627 回答
2

正如@thiton 提到的,这是音频模式分类的一个示例。

风的主要特征:它是一种成形的(带/hp 过滤的)白噪声,在幅度和音高方面具有小的半随机波动。至少大多数合成器都是这样重现它的,而且听起来很有说服力。

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

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

于 2011-11-14T12:09:03.123 回答
1

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

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

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

最后——频域中的风形不是简单的过滤白噪声。特点是它通常在低频(一种隆隆的声音)中具有高能量,在高频中具有剪切和拍打的声音。高频能量是相当瞬态的,所以如果你的 FFT 尺寸太大,你会错过这个重要的特性

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

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

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

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

于 2015-01-27T21:25:08.817 回答