4

バイナリデータをサウンドにエンコードする小さなプログラムを構築しました。例えば、以下のバイナリ入力:各文字が時間の一定単位を表しオーディオエンコードされたバイナリデータをどのように解釈すればよいですか?

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

00101101 

は、このような「音」を生成します。 #は、送信の開始および終了を決定するために使用される880Hzの正弦波を表し、.はゼロを表す無音を表し、Sは1を表す440Hzの正弦波を表します。明らかに、中央の部分は実際にははるかに長くなります。

私の質問の本質は:どのように私はこの操作を反転できますか?

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

明らかに、周波数に関して記録されたデータを分析する必要があります。しかしどうですか?私はフーリエ変換について少し読んだが、ここではかなり失われている。

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

私はRubyでこれをやっています(それは遅いですが、それは単なる概念の証明です)。問題自体はプログラミング言語に固有なものではありません。

+3

[オーディオ周波数シフトキーイング](http://en.wikipedia.org/)/wiki/Frequency-shift_keying#Audio_FSK) –

+1

http://stackoverflow.com/questions/3714321/open-source-fsk-decoder-library –

+0

ああ、車を改造してみませんか? :)ヒントのおかげで! –

答えて

2

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

+1

それを指摘してくれてありがとう。これは実際に私が使い終わったアプローチです。私はまた、Packet Radioが使用する周波数である1200と2200 Hzを選んだ。 –

+1

あなたは大歓迎です!あなたは実際に(スピーカーからマイクに)旅行中の音でデータを送信していますか?私は離れて200のbpsを送信することができる8fskを実装しました。私はCreative T6300(5.1システム)といくつかのスマートフォンから1つのスピーカーを使用しています。 – VMMF

+0

はい、これは私の学士論文の一部でした。私はマイク/スピーカーでファイルを送信するためのiphoneアプリを作りました。今私は2400ボーにさらに伝送速度を上げたので、私は2400/4400 Hzに切り替える必要があることを思い出します。興味のある方は、完成したアプリの動画をご覧ください:https:// vimeo。com/48487024 –

1

FSK復調に2つのスライディングGoertzelフィルタを使用すると、周波数と変調レートを知ることができます。

+0

それは私が必要なポインタでした! –

関連する問題