我编写了一个小程序,可以将二进制数据编码成声音。例如下面的二进制输入:
00101101
会产生这样的“声音”:
################..S.SS.S################
其中每个字符代表一个恒定的时间单位。 #
代表880赫兹正弦波,用于确定传输的开始和结束,。
代表静音,代表零,S
代表一个440赫兹的正弦波,代表一个。显然,中间的部分在实践中要长得多。
我的问题的本质是:我怎样才能反转这个操作?
声音文件通过简单的播放和录音传输给接收者。这意味着我不会尝试解码原始声音文件,这很容易。
显然,我必须根据频率分析记录的数据。但是怎么办?我已经阅读了一些有关傅立叶变换的内容,但我在这里很迷茫。
我不确定从哪里开始,但我知道这不是微不足道的,可能需要相当多的信号处理知识。有人能指出我正确的方向吗?
顺便说一句:我在 Ruby 中这样做(我知道,它很慢 - 这只是一个概念证明)但问题本身不是特定于编程语言的,所以非常欢迎任何答案。
最佳答案
您的问题显然是试图解调 FSK 调制信号。我建议实现针对每个频率调谐的相关库,如果速度是您关注的问题之一,它比 fft 快得多
关于ruby - 如何解释音频编码的二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10455143/