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

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

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

谢谢

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

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

回复:mkb的评论:

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

一个非常简单的噪声门并不难实现。

MARF(模块化音频识别框架)在其手册中提到了“噪声消除”(通过使用2阶段:噪声分布阶段然后噪声消除阶段,类似于Audacity的噪声消除 )……

……但不幸的是,它还没有实施。 🙁