4

バイナリデータをサウンドにエンコードする小さなプログラムを作成しました。たとえば、次のバイナリ入力:

00101101

次のような「サウンド」が生成されます。

################..S.SS.S################

ここで、各文字は一定の時間単位を表します。#は、送信の開始と終了を決定するために使用される880ヘルツの正弦波を.表し、ゼロを表す無音を表し、ゼロを表すS440ヘルツの正弦波を表します。明らかに、真ん中の部分は実際にははるかに長いです。

私の質問の本質は次のとおりです。この操作をどのように逆にすることができますか?

サウンドファイルは、サウンドの簡単な再生と録音を介して受信者に送信されます。つまり、簡単な元のサウンドファイルをデコードしようとはしていません。

明らかに、私は周波数に関して記録されたデータを分析しなければなりません。しかし、どのように?フーリエ変換について少し読んだことがありますが、ここではかなり迷っています。

どこから始めればよいかわかりませんが、これは簡単なことではなく、おそらく信号処理に関するかなりの知識が必要であることを知っています。誰かが私を正しい方向に向けることができますか?

ところで:私はRubyでこれを行っています(私は知っています、それは遅いです-それは概念実証にすぎません)が、問題自体はプログラミング言語固有ではないので、どんな答えも大歓迎です。

4

2 に答える 2

2

あなたの問題は明らかにFSK変調信号を復調しようとしていることです。各周波数に合わせて調整された相関バンクを実装することをお勧めします。速度が懸念事項の1つである場合は、fftよりもはるかに高速です。

于 2015-08-18T12:43:13.150 に答える
1

周波数と変調レートがわかっている場合は、FSK復調に2つのスライディングゲルツェルフィルターを使用してみてください。

于 2012-05-05T01:59:25.260 に答える