白噪声混合2音频字节数组

时间:2012-02-15 17:52:27

标签: java audio byte

我正在混合2个音频字节数组,混合了一些白噪声。

for (int i=0;i<bytes1.getB1().length;i++){
        mixBytes[i]=(byte) (bytes1[i]+bytes2[i]);
    }

任何人都知道如何解决白噪声问题?

我正在使用此方法获取字节,将第44个字节删除为wav标头。

private byte[] getISByteArray(InputStream is){
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    int length;
    try {
        while ((length = is.read()) != -1) {
            stream.write(length);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    byte[] b=stream.toByteArray();
    byte[] b2=new byte[b.length-44];
    //System.arraycopy(b, 44, b2, 0, b2.length);
    for (int i=0;i<b.length;i++){
        if (i>44) b2[i-44]=b[i];
    }
    return b2;  

}

2 个答案:

答案 0 :(得分:2)

我可以立即看到两个潜在的问题:

  • 您将输入视为每个样本一个字节的流。他们真的吗?
  • 你没有做任何关于溢出的事情,例如,这将占用两个字节的值100,最后得到一个负数。

对于后者,这个可能有帮助 - 虽然它取决于字节是否真的是线性幅度等,只需取平均值:

mixBytes[i]=(byte) ((bytes1[i]+bytes2[i]) / 2);

我怀疑这会使稍微更好,但它仍然不是一个很好的混音功能...

答案 1 :(得分:0)

使用低通Gaussian filter卷入原始信号,您将消除白噪声。