2017-02-18 185 views
-1

需要一种能够降低语音音频信号的噪声水平而不会使用Java来显着扭曲信号的算法(或用于比较各种输入数据的一组好的算法)。java中的音频噪声消除

输入是一种音频信号,包括语音以及一些背景噪音。噪音随着录音过程而变化。确实存在消除这种噪音的方法,这些方法是为语音识别和电影制作而开发的。

理想的输出是一个微小失真的语音信号,背景干扰对人耳来说是最低限度可听的。定量标准被最小化

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

你的问题不是很清楚。 Java编程没有绑定到特定的IDE,如Eclipse或Netbeans或Intellij或...。所以在Java中的所有东西都可能有或没有任何特定的IDE。此外,询问在代码中做一些工作被称为“以编程方式执行某些事情”而不是“使用编程语言”。 – STaefi

+0

感谢您指出 – suriyan

+0

您的欢迎。还有一点就是像这样的问题会收集-1s,因为在这里问'如何做...'这个问题。你应该找到一些教程或书籍,并尝试编写一些代码。那么如果出现问题,您可能需要请专家来帮助您解决问题。不要忘记提供[MCVE]。祝你好运。 – STaefi

回答

3

您正在寻找自适应噪声消除功能,以及可能适用于随同时间改变相同流或文件内的噪声条件的各种噪声消除。

旧版的方法包括:使用带通和/或陷波滤波器(其仅工作良好,如果所期望的信号和噪声频带不交叉)

  • 掉落的含有大部分噪声的

    • 删除频率在杜比噪音降低系统方案中,在单词,音符或其他音频事件(在死空间中)之间的点处的噪音级别
    • 使用Hamming窗口或其他窗口结合FFT降低整个文件的噪底图书馆
    • 个像步态或其 竞争对手

    这些方法的程序的音频轨道的手工编辑部分已被发现比预期少试图清理较大或多个文件或实时应用,如实时时语音识别或电话。

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

    经过大量调查发现并现在一直使用的解决方案不是用Java编写的。这是一个MATLAB程序,可以在最小修改的情况下运行在开源Octave中。我开始将它移植到C++,但没有及时完成。

    它实现的算法类称为MMSE(降噪使用最小均方估计)。 MATLAB版本由Hendricks博士多次完善,最后以the 2010 version结束。

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