如何在人群区录制音频的同时用java删除背景噪音?

时间:2011-08-02 18:29:05

标签: java audio microphone javasound

当我使用JavaSound或第三方声音捕获工具捕获并将其记录到文件中时。之后再读取文件进行修改,有没有办法用我的java应用程序删除“背景噪音”。

当主要人士说话时道路交通/空气噪音?

由于

3 个答案:

答案 0 :(得分:4)

去除背景噪音非常困难。如果它是均匀的噪声,例如飞机上的“白色”噪声,则存在去除那些频率分量的算法。但是,如果噪音不均匀且性质与您的良好录音相似,例如人们在后台说话,街道噪音等,将它们分开是很困难的。已经对此进行了大量研究。

至少,你需要确切地知道好音频是什么,以及什么是坏音频。例如。如果您正在捕获语音,可能会有特殊的音频修复软件可用于将语音与其他声音分开,例如http://www.izotope.com/products/audio/rx/。如果您正在以立体声录制语音,则可以通过分析语音的左/右位置,然后通过左右关联来移除非语音组件来成功。

回复:mkb的评论:

  1. 当某个或所有频率成分的电平低于阈值时,噪声门将使音频静音。根据你的背景噪音水平,这可能有所帮助,但通常噪音门很烦人,因为只要你的“好”音频存在,你就会听到背景,并且两者之间会保持沉默。
  2. 低通滤波器去除高频分量(让低频通过)!因此,如果你的背景噪音频率很高,那可能会有所帮助。简单的FIR或IIR低通滤波器易于实现。但如果它具有高频成分,它也会影响你的“好”音频。

答案 1 :(得分:1)

一个非常简单的noise gate并不难实现。

答案 2 :(得分:1)

MARF (Modular Audio Recognition Framework)their manual中提到“噪音消除”(通过使用2阶段:噪音配置阶段然后消除噪音阶段,类似于Audacity's Noise Removal)...

......但不幸的是,它还没有实施。 :(