我正在尝试编写一种算法,该算法会自动用鸟叫录音来分割一段音频。我的输入数据是1分钟长的wave文件,在输出上,我想单独调用以进行进一步分析。问题是,由于环境条件和麦克风质量较差(单声道,8 kHz采样),信噪比非常糟糕。

对于能进一步降低噪音的任何建议,我将不胜感激。 ://goo.gl/16fG8P

信号就是这样的:



带通滤波,我在其中仅将任何频率保持在1500-2500 Hz之间,确实可以改善情况,但仍远没有达到预期。在该频谱中,仍然存在很多噪声。



我还绘制了长期(超过32个采样间隔)平均能量,并从中消除了一些咔嗒声。结果是:



在剩下所有噪声的情况下,我必须为启动检测算法设置一个非常低的阈值,以选择最后10秒的鸟叫声。问题是,如果我以这种方式进行调整,那么在下一次录制中,我会得到大量误报。

移动平均滤波器有助于消除风噪声。还有其他想法吗?我当时在想“频谱减法”,但是在我看来,这有点像鸡和鸡蛋的问题-要找到仅噪声的区域,我必须对音频进行分段,并对需要消除噪声的音频进行分段。您是否知道任何具有此算法的库或伪代码的某些实现? Methinks Audacity使用这种方法来消除噪音。它非常有效,但留给用户标记仅噪声区域。

我正在用Python编写,它是一个免费的开源项目。

感谢您的阅读!

评论

欢迎使用DSP.SE。这是一个了不起的问题!希望您能在这里获得一些好的线索。

@Lukasz Tracewski尊敬的先生:尽管为时已晚,但我正在同一个项目上工作,所以我遇到了诸如如何从wav文件制作频谱图的问题。您可以节省更多的时间,因为我试图解决最近2个月中的问题。在此先感谢您。任何hel都将不胜感激

@MubeenKhan您的意思是帮助从音频文件生成频谱图?有数十种适合此目的的工具和库,您是否需要任何建议?还是您在问降噪问题?

#1 楼

最后,事实证明,最好的解决方案是基于高频或能量含量的发作检测。在它起作用之前,我必须先使用高通滤波器来切除1 kHz,因为它包含了太多的噪声。其余的样本。

我发现一个特别有用的库是Aubio。它提供了一系列很好的示例,并提供了很多算法供您选择以进行发作检测。

#2 楼

我不太了解音频降噪的方法,但是在经过通带滤波(约1500-3000 hz)的快速,肮脏的噪声扣除后,我得到了以下信息:

https://dl.dropboxusercontent .com / u / 98395391 / signal_denoised.wav

我认为在过滤后的原始信号中听起来要好一些。

使用简单的维纳滤波器,我得到非常相似的结果。

评论


$ \ begingroup $
除非我误解了您,否则您似乎是指我在问题第二段中已经做过的事情(仅在第一张图的下方)。使用我的答案中描述的方法,我能够找到所有发作,然后进行光谱减法,从而获得更好的结果。令人遗憾的是,它还会产生所谓的“音乐音调”,这是我现在主要关心的问题。不管怎么说,还是要谢谢你!
$ \ endgroup $
–卢卡斯(Lukasz Tracewski)
2013年12月24日8:52