1

これで、WAV ファイルから PCM の raw バイト配列を直接読み込んだので、元のバイト配列にノイズを追加する必要があります。私の要件は、追加されたノイズを知らずに結果をデコードできないことです。ノイズが何であるかを正確に知っていれば、ノイズを除去することもできます。私の現在のアイデアは、元のバイト配列を短い配列に変換し、2^-15 と 2^15 の間でランダムに生成された番号を持つノイズの短い配列を生成し、これら 2 つの配列をスロットごとに追加することです。しかし、この方法では元の配列を復元できることを保証できないようです。誰かがそれを行う方法についてより良いアイデアを教えてもらえますか?事前に感謝します。

4

2 に答える 2

0

ノイズは、定義上、信号の (準) ランダム妨害です。元の信号を完全に回復することはできません。たとえば、ノイズのスペクトルがわかっている場合にのみ抑制します。

于 2013-04-16T18:36:36.203 に答える
0

Suppose you have a (Sound) signal, S(t).

You want to 'encrypt' this signal, creating E(t).

You can do this by adding Noise, N(t).

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

And furthermore, E(t) - N(t) = S(t).

So now the problem is generating a unique 'noise'.

I would do this through a Pseudo-random number generator (http://en.wikipedia.org/wiki/Pseudorandom_number_generator), where you can pass the seeding information to the recipient.

Now, anybody who has the same seeds to create N(t) can compute E(t)-N(t)=S(t)


Response to comments:

@Bjorn: It isn't encryption in a normal sense. But, suppose you have some integer C mod [0 - 2^16-1]. Now, add some uniform random integer on the same range [0-2^16-1] to this. The result is also a uniform random integer on this range. Therefore, depending on the quality of your random sequence generator, you can create a non-decodeable signal (w/o having the original superimposed signal). (I'll admit, this would not be the case without overflow).

@OP: Your issue is decoding the number after it is passed along.

Suppose you have a binary string 10101010. Now, you add 11110000 to this. The result should look something like 01011010. With an overflow into the 2^8'th place.

Now, 01011010 - 11110000 returns the same initial value: 10101010. So this overflow actually serves as an assistance in masking the original signal

*this is provided you use a unique masking signal which you can generate again at the recipient.

于 2013-04-16T18:42:17.773 に答える