gpt4 book ai didi

java - 使用音频字节数据创建反相/反向声音/噪声消除

转载 作者:行者123 更新时间:2023-11-29 05:01:24 24 4
gpt4 key购买 nike

我正在尝试检查是否可以使用 Java 创建抗噪声或声音反转。 ( link )

我使用了以下格式:

AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 16000, 16, 2, 4, 16000, false);

捕获录音后,我打算使用 java 的 SourceDataLine 类将流写出。播放正常。然而,由于目标是“反转”声音,我必须将方向更改为相反的值(正如我到目前为止所读的那样,通过将值的值乘以 -1 来完成)

由于我们使用 16 位格式,因此流中的每 2 个字节算作一个值。

for(int i = 0; i < readBytes; i+=2)
{
inverse = (short)(data[i+1] << 8 | data[i] & 0xff);
System.out.println(inverse/100);
data[i] = (byte) (inverse & 0xff);
data[i+1] = (byte) ((inverse >> 8) & 0xff);
}

上面的代码读取每 2 个字节,将它们转换成一个 16 位的短整型,反转它的值然后将它插入回相同的字节位置。

但是,当它运行时,它听起来和原来的一模一样。

sourceLine.write(data, 0, readBytes);

最佳答案

因为声音是一样的,只是压力值颠倒了而已。您的耳朵测量压力波的绝对值,对于反向波也是如此。只有当波形和反向波形一起播放时,它们的总和才为 0,并且仅当播放完全同步时。

关于java - 使用音频字节数据创建反相/反向声音/噪声消除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com