【问题标题】:Additive White Gaussian Noise Java in dB [closed]以 dB 为单位的加性高斯白噪声 Java [关闭]
【发布时间】:2013-06-13 22:32:32
【问题描述】:

我正在尝试将 AWGN 添加到我的音频文件中。我将我的 wav 文件转换为字节数组。我正在尝试向该阵列添加 10dB AWGN。在 matlab 中有 imnoise 将 AWGN 添加到图像中。在java中是否有任何库?提前致谢。

【问题讨论】:

  • @macduff:看起来它不会产生高斯白噪声。

标签: java matlab audio gaussian noise


【解决方案1】:

不确定我的问题是否正确。 that 是您正在寻找的东西,然后只是通过您使用的任何播放器来调节数据库?

【讨论】:

  • 这会产生一定幅度的噪声。我有一个字节数组。如何调整分贝?
  • 如果 [this is the code] 用于链接类,那么我认为它实际上并没有实现高斯白噪声。它实现了某种形式的均匀噪声。我认为它甚至不是真正的白色,但输出可用于生成它(它只不过是对Math.random() 的调用)。高斯噪声和白噪声这两个术语经常被误用,所以我不确定提问者需要什么。
  • 正如我之前所说,我不确定问题出在哪里,但如果有一个字节数组,您可以将其打包到 AudioData 等中。从中制作一个 AudioInputstream。小心你可能不得不写一个 wav 头,这样输入流才能理解它得到了什么。然后让 java sound api 通过 FloatControl 控制音量。
  • Clip clip = AudioSystem.getClip(); clip.open(audioInputStream); FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN); gainControl.setValue(//some dB value to increase or decrease); clip.start();
【解决方案2】:

如果您确实需要类似于 Matlab 的 imnoise 函数的 additive Gaussian white noise 输出,这就是您需要在 Java 中实现的代码范围:

B = A+MU+STD*randn(size(A))

其中A 是您的输入数据,B 是您的相同大小的输出,MU 是噪声的平均值,STD 是标准差。独立同分布 (IID) 高斯白噪声被添加到A 的每个分量中。这个计算需要在浮点数中完成(就像许多 Matlab 的图像处理例程一样)。

randn 函数产生正态随机变量。您可以使用java.util.Random.nextGaussian() 来生成这些。如果您需要一些额外的速度,请尝试使用 Mersenne Twister algorithm 的 Java 实现。

【讨论】:

    猜你喜欢
    • 2016-02-07
    • 2011-09-12
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多