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

标签 java audio byte

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

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

有人知道如何解决白噪声问题吗?

我使用此方法获取字节,删除前 44 个字节作为 wav header 。

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;  

}

最佳答案

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

  • 您将输入视为每个样本一字节的流。真的吗?
  • 您没有对溢出执行任何操作,例如,溢出将占用两个字节的值 100,并最终得到负数。

对于后者,这可能有所帮助 - 尽管这取决于字节是否真正是线性幅度等,只需取平均值即可:

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

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

关于java - 白噪声混合2音频字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298571/

相关文章:

java - 如何在数组中仅保留唯一值?

flash - 音频无法在Flash AS3中播放

android - Mediarecorder 设置参数失败 (setAudioSamplingRate)

javascript - 是否有任何 JavaScript/jQuery 插件允许我在播放歌曲达到特定播放时间时触发 Action ?

C# Byte[] 到 BCD 和 BCD 到 INT

java - OC异或和Java异或有什么区别?

java - 类范围问题,我应该如何解决这个问题?

java - H2数据库中@GenerateValue的问题

python - 如何从二进制文件中读取除最后 X 字节以外的所有字节?

.net - 将字节转换为基数的最佳方法是什么,反之亦然