gpt4 book ai didi

java - 如何向 PCM 原始数据添加噪声

转载 作者:行者123 更新时间:2023-12-01 04:44:32 26 4
gpt4 key购买 nike

现在我有一个直接从 WAV 文件加载的 PCM 原始字节数组,现在我必须将噪声添加到原始字节数组中。我的要求是,如果不知道添加的噪声,就无法解码结果,如果我确切知道噪声是什么,我也可以去除噪声。我当前的想法是将原始字节数组转换为短数组,并生成一个噪声短数组,其随机生成的数字在 2^-15 和 2^15 之间,然后将这 2 个数组逐个添加。但看起来这个方法不能保证我可以恢复原始数组。有人能给我一些更好的想法吗?提前谢谢您。

最佳答案

假设您有一个(声音)信号,S(t)。

您想要“加密”该信号,创建 E(t)。

您可以通过添加噪声 N(t) 来做到这一点。

S(t) + N(t) = E(t)。

此外,E(t) - N(t) = S(t)。

所以现在的问题是产生一种独特的“噪音”。

我将通过伪随机数生成器 ( http://en.wikipedia.org/wiki/Pseudorandom_number_generator ) 来完成此操作,您可以在其中将种子信息传递给接收者。

现在,任何拥有相同种子来创建 N(t) 的人都可以计算 E(t)-N(t)=S(t)

<小时/>

对评论的回应:

@Bjorn:这不是正常意义上的加密。但是,假设你有一些整数 C mod [0 - 2^16-1]。现在,在同一范围 [0-2^16-1] 上添加一些均匀随机整数。结果也是该范围内的均匀随机整数。因此,根据随机序列生成器的质量,您可以创建不可解码的信号(没有原始叠加信号)。 (我承认,如果没有溢出,情况就不会如此)。

@OP:您的问题是在数字传递后对其进行解码。

假设您有一个二进制字符串 10101010。现在,您将 11110000 添加到其中。结果应该类似于 01011010。溢出到第 2^8 位。

现在,01011010 - 11110000 返回相同的初始值:10101010。因此,此溢出实际上有助于屏蔽原始信号

*前提是您使用独特的掩蔽信号,您可以在接收者处再次生成该信号。

关于java - 如何向 PCM 原始数据添加噪声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16044417/

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