みなさん科学捜査とかが出てくるドラマとかお好きですか? 日本だとまだまだ少ないですけど、海外のCIAとFBIとかテロ対策とかがテーマになっているドラマだと、大抵はスタッフにハッカー(コンピューターの専門化程度の意味)がいますよね。そういう中でありがちな話で盗聴して録音した雑音だらけのデーターを「カタカタカタ」ってパソコンをいじって音をいきなりきれいに聞き取れるようにするシーンってありますよね。あれって何してるかわかりますか?

たまたまなんですけど、先週末にこれに近いことを会社でしていたのですが、周りの誰も原理や仕組みを理解していなかったのですが、、、、まぁ、音ってどうやって消すんだろうっていう基礎的な仕組みをちょっとブログに書いてみようかなーなんて。


そもそも、音っていうのは何かというと、空気中を振動して伝わる波です。その波の形によって音が高いとか低いとかそういう特徴が作られます。

非常に単純化すると、音というのは、グラフで見ればこういうことです。
h_JssTHYNF.png
これは非常にかんたんな波です。 (y=sin(x)) 本当は音を表す波はもっと複雑ですが、原理を説明するには、この程度の波で十分です。この波をAとします。

この波の上下を反転した波を作ります。式で言うと、y=-sin(x)のようなものです。
_iIK9weuyH.png
具体的には、こんなグラフです。この波をBとします。

波Aと波Bは、全く反転した形をしていますが、波としての形が同じです。これはすなわち音で言うと人間の耳には「同じ音」と聞こえることを意味しています。


この2つの音が同時に発生した状態、すなわち波Aと波Bを1つのグラフに表すとこうなります。
TtN0Gr95Ni.png

すなわち、2つの波を合成すると、
bj5esBWnJZ.png
こうなってしまいます。(y=0) 要するに波が発生していないので音がない無音ということになります。


これをもっと複雑に適応するのがいわゆる「ノイズキャンセリング」の仕組みです。背景雑音などもこういう仕組みを応用すれば、かなりのレベルで消すことができます。



音を消す仕組みというのは、非常に原始的にはたったこれだけのことなのです。今、プログラミング教育とかが流行していて、「音を操作するプログラムはこうです」ということを教えてはくれますが、その基礎になる、こういった数学や物理の仕組みを理解していない人がとても多いので、なんか、こういう基礎に立ち返ってほしいなとかふと思ったりすることが増えています。

テレビの中のハッカーもやっていることはこれだけです。そんなにすごくないでしょ?(笑)