バイナリデータをサウンドにエンコードする小さなプログラムを作成しました。たとえば、次のバイナリ入力:
00101101
次のような「サウンド」が生成されます。
################..S.SS.S################
ここで、各文字は一定の時間単位を表します。#
は、送信の開始と終了を決定するために使用される880ヘルツの正弦波を.
表し、ゼロを表す無音を表し、ゼロを表すS
440ヘルツの正弦波を表します。明らかに、真ん中の部分は実際にははるかに長いです。
私の質問の本質は次のとおりです。この操作をどのように逆にすることができますか?
サウンドファイルは、サウンドの簡単な再生と録音を介して受信者に送信されます。つまり、簡単な元のサウンドファイルをデコードしようとはしていません。
明らかに、私は周波数に関して記録されたデータを分析しなければなりません。しかし、どのように?フーリエ変換について少し読んだことがありますが、ここではかなり迷っています。
どこから始めればよいかわかりませんが、これは簡単なことではなく、おそらく信号処理に関するかなりの知識が必要であることを知っています。誰かが私を正しい方向に向けることができますか?
ところで:私はRubyでこれを行っています(私は知っています、それは遅いです-それは概念実証にすぎません)が、問題自体はプログラミング言語固有ではないので、どんな答えも大歓迎です。