【发布时间】:2013-06-13 22:32:32
【问题描述】:
我正在尝试将 AWGN 添加到我的音频文件中。我将我的 wav 文件转换为字节数组。我正在尝试向该阵列添加 10dB AWGN。在 matlab 中有 imnoise 将 AWGN 添加到图像中。在java中是否有任何库?提前致谢。
【问题讨论】:
-
@macduff:看起来它不会产生高斯白噪声。
标签: java matlab audio gaussian noise
我正在尝试将 AWGN 添加到我的音频文件中。我将我的 wav 文件转换为字节数组。我正在尝试向该阵列添加 10dB AWGN。在 matlab 中有 imnoise 将 AWGN 添加到图像中。在java中是否有任何库?提前致谢。
【问题讨论】:
标签: java matlab audio gaussian noise
不确定我的问题是否正确。 that 是您正在寻找的东西,然后只是通过您使用的任何播放器来调节数据库?
【讨论】:
Math.random() 的调用)。高斯噪声和白噪声这两个术语经常被误用,所以我不确定提问者需要什么。
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();
如果您确实需要类似于 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 实现。
【讨论】: