删除音频噪音

需要一种算法(或一组好的,以便比较各种输入数据),这将降低语音音频信号的噪声水平,而不会使用Java明显地扭曲信号。

输入是一种音频信号,包括声音和一些背景噪音。 噪音随着录音过程而变化。 绝对存在消除这种噪声的方法,用于语音识别和电影制作。

所需的输出是最小失真的语音信号,其背景干扰最低限度地可听到人耳。 量化标准最小化

  1. 信噪比和
  2. 总谐波失真。

您正在寻找自适应噪声消除,并且可能在同一流或文件中适应不断变化的噪声条件。

较旧的方法包括:

  • 使用带通和/或陷波滤波器去除包含大部分噪声的频率(只有在所需信号与噪声频带不相交时才能正常工作)
  • 降低单词,音符或其他音频事件(死区)之间的噪音水平,杜比降噪系统方案也是如此
  • 使用汉明窗口或其他窗口与FFT库一起降低整个文件的噪声基底
  • 在Cakewalk或其竞争对手等程序中手动编辑音轨的各个部分

当试图清理较大的文件或多个文件或实时应用(例如实时语音识别或电话)时,发现这些方法不太理想。

其中一个我没有亲自尝试过的Java程序。 尽管它具有一定程度的自动化,但它是一个LSE(最小二乘估计器),它可以跨数据块工作但不适合连续操作或具有不断变化的噪声条件的音频文件。 (它不像人们希望的那样适应。)

我经过多次调查后发现并且现在一直使用的解决方案不是用Java编写的。 它是一个MATLAB程序,也可以在开源Octave中运行,只需要很少的修改。 我开始将它移植到C ++,但没时间完成它。

它实现的算法类称为MMSE(使用最小均方估计器的降噪)。 MATD版本已由Hendricks博士多次改进,最终以2010版本结束 。

我已经将它与竞争对手的对话和音乐进行了比较,在我尝试过的所有情况下,它都超越了其他人。 (我与Hendricks博士或MATLAB没有任何关系,除了我喜欢我在该平台上实现的结果。)