【问题标题】:Audio Noise removal in java [closed]java中的音频噪声去除[关闭]
【发布时间】:2017-07-07 22:27:10
【问题描述】:

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

输入是一种音频信号,包括语音和一些背景噪音。噪音在录音过程中会发生变化。肯定有这样的方法可以消除噪音,专为语音识别和电影制作而开发。

所需的输出是失真最小的语音信号,而背景干扰对人耳的声音最小。量化标准被最小化

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

【问题讨论】:

  • 你的问题不是很清楚。 Java 编程不绑定到特定的 IDE,例如 EclipseNetbeansIntellij 或 ... 。因此,无论有没有任何特定的 IDE,java 中的一切都是可能的。此外,询问在代码中做一些工作称为doing something programmatically 而不是using programming languages
  • 感谢指出
  • 欢迎您。另一点是这样的问题会收集-1,那是因为在SO中询问“如何做......”问题。您应该找到一些教程或书籍并尝试编写一些代码。然后,如果出现问题,您可能想在这里请专家帮助您编写代码。不要忘记提供minimal reproducible example。祝你好运。
  • 我现在明白了。谢谢
  • 很高兴为您提供帮助。包括我在内的大多数人在进入 SO 时都会因为对他们的问题收集一堆反对票而感到困惑,而没有人真正告诉他们原因。

标签: java audio-processing noise-reduction


【解决方案1】:

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

较旧的方法包括:

  • 使用带通和/或陷波滤波器去除包含大部分噪声的频率(仅当所需信号和噪声带不相交时才有效)
  • 像杜比降噪系统方案一样,在单词、音符或其他音频事件(死区)之间的点处降低噪音水平
  • 使用 Hamming 窗口或其他窗口与 FFT 库结合使用,降低整个文件的本底噪声
  • 在 Cakewalk 等程序中手动编辑音轨的部分或其 竞争对手

在尝试清理较大的文件或多个文件时,或者在实时语音识别或电话等实时应用程序中,发现这些方法不太理想。

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

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

它实现的算法类称为 MMSE(使用最小均方估计器的降噪)。 Hendricks 博士对 MATLAB 版本进行了多次改进,最后以the 2010 version 结尾。

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

【讨论】:

    猜你喜欢
    • 2015-09-16
    • 2018-07-18
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多