如何解释音频编码的二进制数据?

时间:2012-05-04 19:42:09

标签: ruby audio signal-processing frequency-analysis frequency-domain

我已经构建了一个将二进制数据编码为声音的小程序。例如,以下二进制输入:

00101101

会产生这样的'声音':

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

其中每个字符代表一个恒定的时间单位。 #代表880赫兹正弦波,用于确定传输的开始和结束,.代表静音,代表零,S代表440赫兹正弦波,代表那些。显然,中间的部分在实践中要长得多。

我的问题的实质是:如何反转此操作?

通过简单的播放和录制声音将声音文件传送给收件人。这意味着我不会尝试解码原始声音文件,这很容易。

显然,我必须分析有关频率的记录数据。但是怎么样?我已经阅读了一些关于傅里叶变换的内容,但我在这里很遗憾。

我不知道从哪里开始,但我知道这不是微不足道的,可能需要一些关于信号处理的知识。有人能指出我正确的方向吗?

顺便说一句:我在Ruby中这样做(我知道,它很慢 - 它只是一个概念证明)但问题本身并不是特定于编程语言,所以任何答案都是非常受欢迎的。

2 个答案:

答案 0 :(得分:2)

您的问题显然是尝试解调FSK调制信号。我建议实施一个调整到每个频率的相关库,如果速度是你关心的问题,它比fft快很多

答案 1 :(得分:1)

如果您知道频率和调制速率,可以尝试使用2个滑动Goertzel滤波器进行FSK解调。

相关问题