我已经构建了一个将二进制数据编码为声音的小程序。例如,以下二进制输入:
00101101
会产生这样的'声音':
################..S.SS.S################
其中每个字符代表一个恒定的时间单位。 #
代表880赫兹正弦波,用于确定传输的开始和结束,.
代表静音,代表零,S
代表440赫兹正弦波,代表那些。显然,中间的部分在实践中要长得多。
我的问题的实质是:如何反转此操作?
通过简单的播放和录制声音将声音文件传送给收件人。这意味着我不会尝试解码原始声音文件,这很容易。
显然,我必须分析有关频率的记录数据。但是怎么样?我已经阅读了一些关于傅里叶变换的内容,但我在这里很遗憾。
我不知道从哪里开始,但我知道这不是微不足道的,可能需要一些关于信号处理的知识。有人能指出我正确的方向吗?
顺便说一句:我在Ruby中这样做(我知道,它很慢 - 它只是一个概念证明)但问题本身并不是特定于编程语言,所以任何答案都是非常受欢迎的。答案 0 :(得分:2)
您的问题显然是尝试解调FSK调制信号。我建议实施一个调整到每个频率的相关库,如果速度是你关心的问题,它比fft快很多
答案 1 :(得分:1)
如果您知道频率和调制速率,可以尝试使用2个滑动Goertzel滤波器进行FSK解调。