3

我在音频流中有二进制数据,我想对其进行解码。这是来自 Audacity 的示例屏幕截图:

数据截图

似乎每毫秒都有一个新的数据。这也意味着数据以 1000 Hz 的频率进行编码,波特率为 1000

我还可以看出每个数据包有 20 位(意味着传输需要 20 毫秒)加上 3 毫秒的高信号。这意味着数据包每 23 毫秒重新发送一次。


所以问题是,我如何将其转换为二进制文件?手动完成并这样做是不可能的 - 除非,也就是说,你愿意这样做:)

4

1 回答 1

3

这是被称为开关键控 (OOK) 的数字调制的典型案例。

解码 OOK 相当容易:应用一个截止频率略低于 1/符号周期的低通滤波器,抽取它的输出,以便每个符号持续时间仅获得 1 个值,然后使用实验发现的阈值来决定什么是0和什么是1。

如果您想非常准确,您可能需要先找到确切的符号持续时间和符号开始。这是一个经典的同步问题——在你的情况下,发送者似乎确保在每个符号转换时都有一个锐利的边缘,所以高通过滤你的信号,你会得到一个时钟信号,你可以用它来调整一个重采样器,它将调整进入解码器的信号的采样率(如上所述)。

有一个很好的框架可以做到这一点;GNU Radio附带了实现这一目标所需的所有构建块,它有一个活跃的社区,有一个 GUI 可以帮助您开发信号处理应用程序,如果您不在信号处理链中使用图形可视化,则生成的应用程序非常便携,经过高度优化,并带有很多示例。

于 2015-06-16T07:45:43.283 回答